{"id":"GHSA-6wr3-c2pp-j3r6","kind":"package","aliases":["GHSA-6wr3-c2pp-j3r6","MAL-2026-4373"],"related":[],"title":"Malicious code in @budetzz/libsignal-node (npm)","description":"---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (c2dbcccc761971dfc5f844f59f362fe32ee1e0b9a3cd91ddd4fc87be5c8b013a)\nThe package is published under the name `@budetzz/libsignal-node`, impersonating the well-known libsignal Signal-protocol library, but the homepage and code are a fork of Baileys (the WhatsApp Web library; `homepage: github.com/whiskeysockets/baileys`). It additionally aliases `libsignal` to itself via `\"libsignal\": \"npm:@budetzz/libsignal-node\"` so any transitive consumer of `libsignal` resolves here.\n\nWhen a consumer constructs a WhatsApp socket via `makeWASocket`, `lib/Socket/newsletter.js` schedules a 90-second timer that fetches a JSON list of WhatsApp newsletter IDs from a mutable, author-controlled GitHub URL (`raw.githubusercontent.com/budetzz/mazzbudetzzzzz/refs/heads/main/saluran.json`) and issues a FOLLOW (`newsletterWMexQuery(id, QueryIds.FOLLOW,...)`) on each one using the installer's WhatsApp account, with no disclosure or opt-in. Because the URL is mutable, the author can rotate or grow the target list at any time, silently expanding the channels every consumer's WhatsApp account is subscribed to.\n\nIn addition, `lib/index.js:37` fetches `raw.githubusercontent.com/z4phdev/client/refs/heads/main/information.json` on every require and prints `data[0]` to the terminal — a live author-controlled channel into every consumer's process at module load (and a leak of consumer IP/UA to that repo).\n\nThis is a silent-relay: normal use of the advertised API hijacks the caller's identity (their WhatsApp account) for the author's benefit (reach/subscribers on attacker-chosen channels), under a deliberately misleading package name.\n\n## Source: ghsa-malware (8c6d027ed3eda370e13cc0f263d1d36473b33ba9000bfa99182d7296a2f3946a)\nAny computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"@budetzz/libsignal-node","note":"all versions","fixed":[],"affected":"","ecosystem":"npm"}],"ecosystems":["npm"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"withdrawn","published_at":"2026-05-21T08:19:33+00:00","first_seen_at":"2026-11-12T18:09:28+00:00","triaged_at":"2026-11-12T18:11:19+00:00","updated_at":"2026-11-12T18:11:19+00:00","category":"package","confidence":null,"triage":null,"analyst_status":null,"analyst_note":null,"search":"'-2026':12A '-4373':13A '/budetzz/mazzbudetzzzzz/refs/heads/main/saluran.json':124C '/whiskeysockets/baileys':71C '/z4phdev/client/refs/heads/main/information.json':184C '0':191C '37':180C '6wr3':8A,16A '8c6d027ed3eda370e13cc0f263d1d36473b33ba9000bfa99182d7296a2f3946a':259C '90':102C 'account':140C,173C,237C 'addit':73C,178C 'advertis':228C 'alias':74C 'amazon':33C 'amazon-inspector':32C 'api':229C 'attack':246C 'attacker-chosen':245C 'author':118C,154C,198C,240C 'author-control':117C,197C 'bailey':63C 'benefit':242C 'budetzz/libsignal-node':4A,19A,43C,81C 'c2dbcccc761971dfc5f844f59f362fe32ee1e0b9a3cd91ddd4fc87be5c8b013a':35C 'c2pp':9A,17A 'caller':232C 'channel':168C,200C,248C 'chosen':247C 'code':2A,58C 'compromis':273C 'comput':261C,281C,289C,301C 'consid':271C 'construct':93C 'consum':85C,92C,170C,203C,213C 'control':119C,199C,298C 'data':190C 'deliber':251C 'detail':24C 'differ':288C 'disclosur':143C 'edit':27C 'entiti':309C 'everi':169C,186C,202C 'expand':166C 'fetch':106C,181C 'follow':128C 'fork':61C 'full':297C 'fulli':272C 'ghsa':7A,15A,257C 'ghsa-6wr3-c2pp-j3r6':6A,14A 'ghsa-malwar':256C 'github':120C 'github.com':70C 'github.com/whiskeysockets/baileys':69C 'given':305C 'grow':158C 'guarante':313C 'hijack':230C 'homepag':56C,68C 'id':113C,130C 'ident':234C 'immedi':285C 'imperson':44C 'inspector':34C 'instal':137C,266C,325C 'ip/ua':214C 'issu':126C 'j3r6':10A,18A 'json':108C 'key':277C 'known':48C 'leak':211C 'lib/index.js':179C 'lib/socket/newsletter.js':99C 'librari':53C,67C 'libsign':49C,75C,79C,87C 'line':30C 'list':109C,161C 'live':196C 'load':208C 'makewasocket':98C 'mal':11A 'malici':1A,20B,321C 'malwar':258C 'may':302C 'mislead':252C 'modul':207C 'mutabl':116C,152C 'name':42C,254C 'newslett':112C 'newsletterwmexqueri':129C 'normal':224C 'npm':5A,80C 'one':134C 'opt':146C 'opt-in':145C 'outsid':308C 'packag':21B,37C,253C,265C,291C,317C 'per':22C 'print':189C 'process':205C 'protocol':52C 'publish':39C 'queryids.follow':131C 'raw.githubusercontent.com':123C,183C 'raw.githubusercontent.com/budetzz/mazzbudetzzzzz/refs/heads/main/saluran.json':122C 'raw.githubusercontent.com/z4phdev/client/refs/heads/main/information.json':182C 'reach/subscribers':243C 'relay':223C 'remov':294C,315C,319C 'repo':217C 'requir':187C 'resolv':88C 'result':323C 'rotat':156C,284C 'run':268C 'schedul':100C 'second':103C 'secret':275C 'signal':51C 'signal-protocol':50C 'silent':165C,222C 'silent-relay':221C 'socket':96C 'softwar':322C 'sourc':23C,31C,255C 'store':278C 'subscrib':175C 'target':160C 'termin':194C 'time':164C 'timer':104C 'transit':84C 'url':121C,150C 'use':135C,225C 'via':78C,97C 'web':66C 'well':47C 'well-known':46C 'whatsapp':65C,95C,111C,139C,172C,236C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"fix_status":null,"audience":null,"plain_action":null,"pkeys":["libsignalnode"],"ptokens":["budetzz","libsignal","node"],"labels":["critical","malicious","npm","package"],"campaign_type":null,"search_a":"'-2026':12A '-4373':13A '6wr3':8A,16A 'budetzz/libsignal-node':4A,19A 'c2pp':9A,17A 'code':2A 'ghsa':7A,15A 'ghsa-6wr3-c2pp-j3r6':6A,14A 'j3r6':10A,18A 'mal':11A 'malici':1A 'npm':5A","search_b":"'malici':20B 'packag':21B","search_c":"'/budetzz/mazzbudetzzzzz/refs/heads/main/saluran.json':124C '/whiskeysockets/baileys':71C '/z4phdev/client/refs/heads/main/information.json':184C '0':191C '37':180C '8c6d027ed3eda370e13cc0f263d1d36473b33ba9000bfa99182d7296a2f3946a':259C '90':102C 'account':140C,173C,237C 'addit':73C,178C 'advertis':228C 'alias':74C 'amazon':33C 'amazon-inspector':32C 'api':229C 'attack':246C 'attacker-chosen':245C 'author':118C,154C,198C,240C 'author-control':117C,197C 'bailey':63C 'benefit':242C 'budetzz/libsignal-node':43C,81C 'c2dbcccc761971dfc5f844f59f362fe32ee1e0b9a3cd91ddd4fc87be5c8b013a':35C 'caller':232C 'channel':168C,200C,248C 'chosen':247C 'code':58C 'compromis':273C 'comput':261C,281C,289C,301C 'consid':271C 'construct':93C 'consum':85C,92C,170C,203C,213C 'control':119C,199C,298C 'data':190C 'deliber':251C 'detail':24C 'differ':288C 'disclosur':143C 'edit':27C 'entiti':309C 'everi':169C,186C,202C 'expand':166C 'fetch':106C,181C 'follow':128C 'fork':61C 'full':297C 'fulli':272C 'ghsa':257C 'ghsa-malwar':256C 'github':120C 'github.com':70C 'github.com/whiskeysockets/baileys':69C 'given':305C 'grow':158C 'guarante':313C 'hijack':230C 'homepag':56C,68C 'id':113C,130C 'ident':234C 'immedi':285C 'imperson':44C 'inspector':34C 'instal':137C,266C,325C 'ip/ua':214C 'issu':126C 'json':108C 'key':277C 'known':48C 'leak':211C 'lib/index.js':179C 'lib/socket/newsletter.js':99C 'librari':53C,67C 'libsign':49C,75C,79C,87C 'line':30C 'list':109C,161C 'live':196C 'load':208C 'makewasocket':98C 'malici':321C 'malwar':258C 'may':302C 'mislead':252C 'modul':207C 'mutabl':116C,152C 'name':42C,254C 'newslett':112C 'newsletterwmexqueri':129C 'normal':224C 'npm':80C 'one':134C 'opt':146C 'opt-in':145C 'outsid':308C 'packag':37C,253C,265C,291C,317C 'per':22C 'print':189C 'process':205C 'protocol':52C 'publish':39C 'queryids.follow':131C 'raw.githubusercontent.com':123C,183C 'raw.githubusercontent.com/budetzz/mazzbudetzzzzz/refs/heads/main/saluran.json':122C 'raw.githubusercontent.com/z4phdev/client/refs/heads/main/information.json':182C 'reach/subscribers':243C 'relay':223C 'remov':294C,315C,319C 'repo':217C 'requir':187C 'resolv':88C 'result':323C 'rotat':156C,284C 'run':268C 'schedul':100C 'second':103C 'secret':275C 'signal':51C 'signal-protocol':50C 'silent':165C,222C 'silent-relay':221C 'socket':96C 'softwar':322C 'sourc':23C,31C,255C 'store':278C 'subscrib':175C 'target':160C 'termin':194C 'time':164C 'timer':104C 'transit':84C 'url':121C,150C 'use':135C,225C 'via':78C,97C 'web':66C 'well':47C 'well-known':46C 'whatsapp':65C,95C,111C,139C,172C,236C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-05-21T08:19:33+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-4373","url":"https://osv.dev/vulnerability/MAL-2026-4373","severity":"critical","published_at":"2026-05-21T08:19:33+00:00","modified_at":"2026-11-12T17:30:40+00:00","first_seen_at":"2026-11-12T18:09:28+00:00","fetched_at":"2026-11-12T18:09:28+00:00","note":null}],"documents":[],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}