fix(whatsapp): bump baileys to 7.0.0-rc.13 to patch CVE-2026-48063 - #54395
fix(whatsapp): bump baileys to 7.0.0-rc.13 to patch CVE-2026-48063#54395dovginsburg wants to merge 1 commit into
Conversation
The whatsapp-bridge pins @whiskeysockets/baileys to a pre-CVE git SHA (01047debd81beb20da7b7779b08edcb06aa03770, version 7.0.0-rc.9). npm audit therefore reports "no fix available" for GHSA-qvv5-jq5g-4cgg even though the npm registry carries the patched 7.0.0-rc.12+ releases. CVE-2026-48063 (critical): a maliciously crafted protocolMessage payload can trigger message upsert / hist sync spoofing and app state corruption in any session running < 7.0.0-rc.12 (or legacy < 6.7.22). The attacker only needs to send a message to the connected WhatsApp account. Why we couldn't use the override pattern from #19204: that PR intentionally avoided bumping baileys because at the time all npm-published 7.0.0-rc.* versions pulled the same vulnerable libsignal-node tree. Since then Baileys has shipped rc.10, rc.11, rc.12 (CVE fix), and rc.13 (regression fix on top of rc.12). The CVE-patched libsignal pipeline is now on the npm registry — see Baileys rc.11 release notes ("pinned the libsignal pipeline to the NPM registry"). Fix: - Switch @whiskeysockets/baileys dep from a git SHA to ^7.0.0-rc.13 so dependabot and the override-based dedupe can follow it. - Bump express ^4.21.0 -> ^4.21.2 to pull in the latest transitive qs fix that dependabot bumped in #28975 era but main never picked up. - Keep the existing protobufjs ^7.5.5 override from #19204. Validation: - npm audit: 5 vulns (1 critical, 2 high, 2 moderate) -> 0 vulnerabilities - Versions after fix: baileys 7.0.0-rc13, protobufjs 7.6.4, qs 6.15.3, ws 8.21.0, express 4.22.2 - node --check bridge.js: parses cleanly - node -e "import('@whiskeysockets/baileys')": all 263 exports resolve, including the 5 the bridge imports (makeWASocket, useMultiFileAuthState, DisconnectReason, fetchLatestBaileysVersion, downloadMediaMessage) - Live bridge after restart: {"status":"connected","queueLength":0} Out of scope (working-tree-only, not in this PR): - markOnlineOnConnect / presence keepalive / sendReceipts patches in bridge.js (Dov's 2026-05-31 local changes for blue-check behavior) - ensure-local-patches.py invariant checker (enforces the above) - All .bak files and the _group_observer.py scratch file Refs: GHSA-qvv5-jq5g-4cgg, CVE-2026-48063, PR #19204
Competing/overlapping with the open CVE cluster for GHSA-qvv5-jq5g-4cgg: #47805 (rc.9->rc.13 security bump), #44980 (npm audit fix, 5/5 vulns), and CVE issue #43814. This PR does the same rc.13 bump plus the express/npm-audit cleanup. Flagging for a maintainer to pick the canonical one — not marking duplicate since the scope differs. |
|
superseded Review setup note: I reviewed a run-owned patch replay of this PR's two-file dependency diff against current GitHub Current I also checked Signed: GPT-5.5-xhigh in Codex |
|
Thanks for the focused security update. This is an automated hermes-sweeper review; the requested Baileys migration is already implemented on current
|
Summary
Fix CVE-2026-48063 (critical) in the WhatsApp bridge by bumping
@whiskeysockets/baileysfrom a pre-CVE git SHA to the patched npm version^7.0.0-rc.13. This clears all 5 outstandingnpm auditfindings (1 critical, 2 high, 2 moderate) that currently show up inhermes doctor.Root cause
scripts/whatsapp-bridge/package.jsonpins baileys toWhiskeySockets/Baileys#01047debd81beb20da7b7779b08edcb06aa03770, which resolves to7.0.0-rc.9. CVE-2026-48063 / GHSA-qvv5-jq5g-4cgg was patched in7.0.0-rc.12(and rc.13 adds a regression fix), but because the dep is referenced via git SHA, npm audit reports "no fix available" — even though the patched versions exist on the registry.Why we can't use the override pattern from #19204
PR #19204 (Teknium, May 2026) deliberately avoided bumping baileys because at the time all npm-published
7.0.0-rc.*versions pulled the same vulnerable libsignal-node tree. Since then Baileys shipped7.0.0-rc.10,rc.11(rc.11 release notes: "pinned the libsignal pipeline to the NPM registry"),rc.12(CVE fix), andrc.13(regression fix). The CVE-patched libsignal pipeline is now on the registry.Changes
@whiskeysockets/baileys:WhiskeySockets/Baileys#01047debd81beb20da7b7779b08edcb06aa03770→^7.0.0-rc.13express:^4.21.0→^4.21.2(pulls in the latest transitiveqsfix)protobufjsoverride (^7.5.5) preserved from fix(whatsapp): pin protobufjs >=7.5.5 to clear 3 critical npm vulns in baileys bridge #19204Validation
npm audit: 5 vulns (1 critical, 2 high, 2 moderate) → 0 vulnerabilitiesbaileys 7.0.0-rc13,protobufjs 7.6.4,qs 6.15.3,ws 8.21.0,express 4.22.2node --check bridge.js: parses cleanlynode -e "import('@whiskeysockets/baileys')": 263 exports resolve, including all 5 the bridge imports (makeWASocket,useMultiFileAuthState,DisconnectReason,fetchLatestBaileysVersion,downloadMediaMessage)launchctl bootout→npm install→launchctl bootstrap:{"status":"connected","queueLength":0,"uptime":N}Out of scope
The following are working-tree-only changes on Dov's local checkout, intentionally NOT included in this PR:
markOnlineOnConnect: true+ presence keepalive (60s) +sendReceiptsfor blue checks — Dov's 2026-05-31 local patches for presence/read-receipt behaviorensure-local-patches.pyinvariant checker that enforces the above patches stay applied.bakfiles and scratch files in the bridge dirIf maintainers want those upstream too, happy to send a separate PR — they are behaviorally orthogonal to the CVE fix.
Refs