D
Bug Tracker

Bug Tracker

Daftar bug dan inkonsistensi engine-whatsapp dari AGENTS.md §9 dan README. Dikelompokkan per area (critical, correctness, delivery, security). Diurutkan risiko.

Daftar bug dan inkonsistensi engine-whatsapp dari AGENTS.md §9 dan readme.md source repo. Dikelompokkan per area. Status: 🔴 belum diperbaiki / 🟡 dikonfirmasi / 🟢 diperbaiki.

Critical & Security

#BugLokasiStatus
1Tidak ada autentikasi — semua endpoint /api/* public. Siapapun yang dapat mengakses port 5002 dapat: buat sesi, kirim pesan, logout device, push notif, submit pixelsrc/routes/itemRoutes.ts (tidak ada middleware auth), src/app.ts🔴
2Secret enkripsi hard-coded — My32charPasswordAndInitVectorStr hard-coded di helper.ts:13. Siapapun dengan akses repo dapat mendekripsi field id di event socketsrc/utils/helper.ts:13🔴
3IV statis diturunkan dari secret — IV harus acak per pesan. IV sama dengan secret melanggar prinsip enkripsi yang amansrc/utils/helper.ts:14🔴
4Socket.IO CORS * + no auth — handshake tidak authenticated. Client apapun dapat join_instance ke room manapun dan menerima event qrcode, message_upsert, getmessage, dllsrc/service/socketService.ts:21-25,27-47🔴
5SSRF dari URL media — POST /api/send-media menerima url tanpa protocol/domain allowlist, private network block, redirect restriction, atau size limit. Hanya cek HTTP HEAD 200src/utils/helper.ts:294-300 — isMediaUrlValid🔴
6Webhook tanpa signature — engine mengirim webhook ke backend tanpa HMAC signature atau credential. Backend tidak dapat memverifikasi sourcesrc/utils/helper.ts:33🔴

Correctness

#BugLokasiStatus
7sendContact sudah diimplementasi tapi tidak didaftarkan di router — endpoint tidak dapat diaksessrc/controller/MessageController.ts:249, src/routes/itemRoutes.ts🟡
8quoted_raw_message diparsing untuk lokasi tapi sendLocationMessage mengabaikan parameter quotedMsg — reply pada pesan lokasi belum berfungsisrc/controller/MessageController.ts:201-244, src/service/whatsappService.ts:625-643🟡
9Import tak terpakai import e from 'express'src/service/whatsappService.ts:22🟡
10connectDB tidak di-await di app.ts:37 — server.listen jalan berbarengan dengan DB connect. Window singkat server respons tanpa DBsrc/app.ts:37🟡
11Set dedupe (processedUpdates) tidak pernah dibersihkan — potensi kebocoran memori pada sesi berumur panjangsrc/service/whatsappService.ts:228🟡
12Status code inkonsisten — banyak controller pakai res.statusCode (bisa 200 untuk error) alih-alih angka eksplisitcontroller (SessionController, GroupController, dll.)🟡
13/api/logout memakai GET, bukan DELETE — komentar di SessionController.ts:69 menyebut DELETE, kelirusrc/controller/SessionController.ts:69, src/routes/itemRoutes.ts:12🟡
14updateGroupSubject ada di service tapi tidak didaftarkan di routersrc/service/whatsappService.ts:833, src/routes/itemRoutes.ts🟡
15videoMessage/documentMessage caption ambil dari imageMessage.caption (salah field)src/utils/helper.ts:239,243🟡
16stickerMessage di-map ke typeMsg: 'document' (bukan sticker)src/utils/helper.ts:249🟡

Delivery dan Testing

#BugLokasiStatus
17ESLint tidak jalan — v9 butuh flat config (eslint.config.js), project masih .eslintrc.js. @typescript-eslint/parser belum terpasang, belum ada script lintroot, .eslintrc.js🔴
18Belum ada test suite — satu-satunya gerbang kualitas adalah npx tsc --noEmit—🔴
19npm run dev tidak hot-reload (tsx tanpa watch)package.json🟡
20Salah label: deploy_production.yml bernama “Deploy to Staging” — target deploy sudah benar (production), hanya nama keliru.github/workflows/deploy_production.yml🟡
21First-start PM2 tidak ditangani — if grep -q hanya restart jika service sudah ada, tidak ada else untuk pm2 start.github/workflows/deploy_production.yml, deploy_staging.yml🟡

Dependency & Code Quality

#BugLokasiStatus
22Dependency salah tempat: eslint/prettier di dependencies (bukan devDependencies)package.json🟡
23crypto (modul built-in Node) terdaftar sebagai dependencypackage.json🟡
24uuidv4 package terpasang tapi uuid v13 sudah dipakai — duplikasipackage.json🟡
25Banyak console.log debug tercecer, sebagian dikomentariwhatsappService.ts, chatHistoryService.ts, incomingMessageService.ts🟡
26Typo pesan: “Berhasi” (harus “Berhasil”) — muncul di 3 endpoint notificationNotificationController.ts:24,36,48🟡
27Typo pesan: “menghpaus” (harus “menghapus”)SessionController.ts:82🟡
28submitPixelFunction error ditelan — console.log saja, tidak di-rethrow. POST /api/submit-pixel selalu return success: true meski gagalsrc/service/notificationService.ts:191-193🟡

Prioritas perbaikan

  1. Tambahkan autentikasi (#1)
  2. Perbaiki enkripsi AES-256-CBC (#2, #3)
  3. Amankan Socket.IO (#4)
  4. Amankan media fetch SSRF (#5)
  5. Perbaiki keterbatasan operasional (#10, #11, #7, #8, #12, #20)
  6. Tambahkan automated regression tests (#18)
  7. Perbaiki ESLint dan dependency (#17, #22, #23, #24)

Detail per prioritas ada di Tech Debt.

Kembali ke