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
| # | Bug | Lokasi | Status |
|---|---|---|---|
| 1 | Tidak ada autentikasi — semua endpoint /api/* public. Siapapun yang dapat mengakses port 5002 dapat: buat sesi, kirim pesan, logout device, push notif, submit pixel | src/routes/itemRoutes.ts (tidak ada middleware auth), src/app.ts | 🔴 |
| 2 | Secret enkripsi hard-coded — My32charPasswordAndInitVectorStr hard-coded di helper.ts:13. Siapapun dengan akses repo dapat mendekripsi field id di event socket | src/utils/helper.ts:13 | 🔴 |
| 3 | IV statis diturunkan dari secret — IV harus acak per pesan. IV sama dengan secret melanggar prinsip enkripsi yang aman | src/utils/helper.ts:14 | 🔴 |
| 4 | Socket.IO CORS * + no auth — handshake tidak authenticated. Client apapun dapat join_instance ke room manapun dan menerima event qrcode, message_upsert, getmessage, dll | src/service/socketService.ts:21-25,27-47 | 🔴 |
| 5 | SSRF 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 200 | src/utils/helper.ts:294-300 — isMediaUrlValid | 🔴 |
| 6 | Webhook tanpa signature — engine mengirim webhook ke backend tanpa HMAC signature atau credential. Backend tidak dapat memverifikasi source | src/utils/helper.ts:33 | 🔴 |
Correctness
| # | Bug | Lokasi | Status |
|---|---|---|---|
| 7 | sendContact sudah diimplementasi tapi tidak didaftarkan di router — endpoint tidak dapat diakses | src/controller/MessageController.ts:249, src/routes/itemRoutes.ts | 🟡 |
| 8 | quoted_raw_message diparsing untuk lokasi tapi sendLocationMessage mengabaikan parameter quotedMsg — reply pada pesan lokasi belum berfungsi | src/controller/MessageController.ts:201-244, src/service/whatsappService.ts:625-643 | 🟡 |
| 9 | Import tak terpakai import e from 'express' | src/service/whatsappService.ts:22 | 🟡 |
| 10 | connectDB tidak di-await di app.ts:37 — server.listen jalan berbarengan dengan DB connect. Window singkat server respons tanpa DB | src/app.ts:37 | 🟡 |
| 11 | Set dedupe (processedUpdates) tidak pernah dibersihkan — potensi kebocoran memori pada sesi berumur panjang | src/service/whatsappService.ts:228 | 🟡 |
| 12 | Status code inkonsisten — banyak controller pakai res.statusCode (bisa 200 untuk error) alih-alih angka eksplisit | controller (SessionController, GroupController, dll.) | 🟡 |
| 13 | /api/logout memakai GET, bukan DELETE — komentar di SessionController.ts:69 menyebut DELETE, keliru | src/controller/SessionController.ts:69, src/routes/itemRoutes.ts:12 | 🟡 |
| 14 | updateGroupSubject ada di service tapi tidak didaftarkan di router | src/service/whatsappService.ts:833, src/routes/itemRoutes.ts | 🟡 |
| 15 | videoMessage/documentMessage caption ambil dari imageMessage.caption (salah field) | src/utils/helper.ts:239,243 | 🟡 |
| 16 | stickerMessage di-map ke typeMsg: 'document' (bukan sticker) | src/utils/helper.ts:249 | 🟡 |
Delivery dan Testing
| # | Bug | Lokasi | Status |
|---|---|---|---|
| 17 | ESLint tidak jalan — v9 butuh flat config (eslint.config.js), project masih .eslintrc.js. @typescript-eslint/parser belum terpasang, belum ada script lint | root, .eslintrc.js | 🔴 |
| 18 | Belum ada test suite — satu-satunya gerbang kualitas adalah npx tsc --noEmit | — | 🔴 |
| 19 | npm run dev tidak hot-reload (tsx tanpa watch) | package.json | 🟡 |
| 20 | Salah label: deploy_production.yml bernama “Deploy to Staging” — target deploy sudah benar (production), hanya nama keliru | .github/workflows/deploy_production.yml | 🟡 |
| 21 | First-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
| # | Bug | Lokasi | Status |
|---|---|---|---|
| 22 | Dependency salah tempat: eslint/prettier di dependencies (bukan devDependencies) | package.json | 🟡 |
| 23 | crypto (modul built-in Node) terdaftar sebagai dependency | package.json | 🟡 |
| 24 | uuidv4 package terpasang tapi uuid v13 sudah dipakai — duplikasi | package.json | 🟡 |
| 25 | Banyak console.log debug tercecer, sebagian dikomentari | whatsappService.ts, chatHistoryService.ts, incomingMessageService.ts | 🟡 |
| 26 | Typo pesan: “Berhasi” (harus “Berhasil”) — muncul di 3 endpoint notification | NotificationController.ts:24,36,48 | 🟡 |
| 27 | Typo pesan: “menghpaus” (harus “menghapus”) | SessionController.ts:82 | 🟡 |
| 28 | submitPixelFunction error ditelan — console.log saja, tidak di-rethrow. POST /api/submit-pixel selalu return success: true meski gagal | src/service/notificationService.ts:191-193 | 🟡 |
Prioritas perbaikan
- Tambahkan autentikasi (#1)
- Perbaiki enkripsi AES-256-CBC (#2, #3)
- Amankan Socket.IO (#4)
- Amankan media fetch SSRF (#5)
- Perbaiki keterbatasan operasional (#10, #11, #7, #8, #12, #20)
- Tambahkan automated regression tests (#18)
- Perbaiki ESLint dan dependency (#17, #22, #23, #24)
Detail per prioritas ada di Tech Debt.
Kembali ke
- Tech Debt — roadmap perbaikan
- Security — detail risk assessment
- API Reference — detail endpoint
- Bug Tracker dazoapp — bug di core
- Bug Tracker backend-go — bug di Go API
- Bug Tracker engine-bot — bug di AI agent