Malicious code in @modss/baileys (npm)
@modss/baileys is a renamed fork of the Baileys WhatsApp Web library published 2026-09-01 and 2026-09-02 under a scope created the same day. lib/Socket/newsletter.js sets NEWSLETTER_LIST_URL to https://raw.githubusercontent.com/Dayyy-19/Anu/main/Newsletter.json. On every connection.update with connection === 'open', autoFollowConfiguredNewsletters() fetches that list and issues an executeWMexQuery FOLLOW for each id on the user's own authenticated WhatsApp session, caching followed ids in session/followed-newsletters.json. An Indonesian comment in the file explains that the list lives on GitHub so channels can be added or removed without redeploying the code, i.e. the follow targets are publisher-controlled at runtime. All three published versions carry the identical handler. The package also aliases its libsignal dependency to @modss/libsignal, which pkgwarden read as a plain rename with no malicious content. No credential or session-key theft was observed, and the dead-drop URL was not requested by pkgwarden. All versions were fetched from the npm registry and read by hand on 2026-09-03. Same remote-dead-drop shape as MAL-2026-15819 (@mrlegendbot/baileys) and MAL-2026-13932 (my-auto-follow). --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (0b6522f1f967259853346030f220d40ef098fc3d54116a23161fb4ccf97f9bd3) package.json declares a runtime dependency `libsignal` whose source is `github:RILLYZY/libsignal-node` — a GitHub reference with no
- Products
- @modss/baileys
- Affected versions
- 1.0.0, 1.0.1, 1.0.2, 2.0.0
- Fixed versions
- Not specified
- CVEs
- Not specified
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 30 Oct 2026, 19:46 UTC · Revision 1
Source evidence
@modss/baileys is a renamed fork of the Baileys WhatsApp Web library published 2026-09-01 and 2026-09-02 under a scope created the same day. lib/Socket/newsletter.js sets NEWSLETTER_LIST_URL to https://raw.githubusercontent.com/Dayyy-19/Anu/main/Newsletter.json. On every connection.update with connection === 'open', autoFollowConfiguredNewsletters() fetches that list and issues an executeWMexQuery FOLLOW for each id on the user's own authenticated WhatsApp session, caching followed ids in session/followed-newsletters.json. An Indonesian comment in the file explains that the list lives on GitHub so channels can be added or removed without redeploying the code, i.e. the follow targets are publisher-controlled at runtime. All three published versions carry the identical handler. The package also aliases its libsignal dependency to @modss/libsignal, which pkgwarden read as a plain rename with no malicious content. No credential or session-key theft was observed, and the dead-drop URL was not requested by pkgwarden. All versions were fetched from the npm registry and read by hand on 2026-09-03. Same remote-dead-drop shape as MAL-2026-15819 (@mrlegendbot/baileys) and MAL-2026-13932 (my-auto-follow). --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (0b6522f1f967259853346030f220d40ef098fc3d54116a23161fb4ccf97f9bd3) package.json declares a runtime dependency `libsignal` whose source is `github:RILLYZY/libsignal-node` — a GitHub reference with no
osv:MAL-2026-15918
@modss/baileys
Fixed versions: Not specified
Complete source record
{
"id": "6607d680fdd8d4f18e96c851bb78b2db3b6ba17dc45008483947fb5ed9da9242",
"url": "https://osv.dev/vulnerability/MAL-2026-15918",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Malicious code in @modss/baileys (npm)",
"summary": "@modss/baileys is a renamed fork of the Baileys WhatsApp Web library published 2026-09-01 and 2026-09-02 under a scope created the same day. lib/Socket/newsletter.js sets NEWSLETTER_LIST_URL to https://raw.githubusercontent.com/Dayyy-19/Anu/main/Newsletter.json. On every connection.update with connection === 'open', autoFollowConfiguredNewsletters() fetches that list and issues an executeWMexQuery FOLLOW for each id on the user's own authenticated WhatsApp session, caching followed ids in session/followed-newsletters.json. An Indonesian comment in the file explains that the list lives on GitHub so channels can be added or removed without redeploying the code, i.e. the follow targets are publisher-controlled at runtime. All three published versions carry the identical handler. The package also aliases its libsignal dependency to @modss/libsignal, which pkgwarden read as a plain rename with no malicious content. No credential or session-key theft was observed, and the dead-drop URL was not requested by pkgwarden. All versions were fetched from the npm registry and read by hand on 2026-09-03. Same remote-dead-drop shape as MAL-2026-15819 (@mrlegendbot/baileys) and MAL-2026-13932 (my-auto-follow). --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (0b6522f1f967259853346030f220d40ef098fc3d54116a23161fb4ccf97f9bd3) package.json declares a runtime dependency `libsignal` whose source is `github:RILLYZY/libsignal-node` — a GitHub reference with no ",
"evidence": "osv:MAL-2026-15918",
"products": [
{
"name": {
"value": "@modss/baileys",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "1.0.0",
"evidence": "/affected/0/versions"
},
{
"value": "1.0.1",
"evidence": "/affected/0/versions"
},
{
"value": "1.0.2",
"evidence": "/affected/0/versions"
},
{
"value": "2.0.0",
"evidence": "/affected/0/versions"
}
]
}
],
"severity": "unknown",
"structured": {
"id": "MAL-2026-15918",
"aliases": [
"GHSA-4c9v-m7qm-2mpr",
"MAL-2026-15918"
],
"affected": [
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "@modss/baileys",
"purl": "pkg:npm/%40modss/baileys",
"ecosystem": "npm"
},
"versions": [
"1.0.0",
"1.0.1",
"1.0.2",
"2.0.0"
],
"database_specific": {
"cwes": [
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
},
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
}
],
"source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/@modss/baileys/MAL-2026-15918.json",
"indicators": {
"evidence_files": [
{
"path": "package.json",
"tlsh": "0f510e25cc5cceb304c636e9a9b60102647845534e95fc2c336c4bac4f5e2af32b9b6e",
"sha256": "73c1fa53ef8b4274314edb8f670942bef74714742d86bec0388ea2a02cc45502"
}
]
}
}
}
],
"modified": "2026-10-16T07:15:08.802190951Z",
"provider": "osv",
"references": [
"https://www.npmjs.com/package/@modss/baileys",
"https://osv.dev/vulnerability/MAL-2026-15819",
"https://osv.dev/vulnerability/MAL-2026-13932",
"https://pkgwarden.com/incidents/baileys-whatsapp-auto-follow-npm-september-2026/",
"https://github.com/advisories/GHSA-4c9v-m7qm-2mpr",
"https://www.npmjs.com/package/@modss/baileys/v/2.0.0"
],
"provider_metadata": {
"iocs": {
"urls": [
"https://raw.githubusercontent.com/Dayyy-19/Anu/main/Newsletter.json"
],
"files": [
{
"note": "runtime dead-drop fetch and forced follow loop (digest from 1.0.2)",
"paths": [
"lib/Socket/newsletter.js"
],
"source": "PACKAGE_ARCHIVE",
"digests": {
"sha256": "935e65a1525ca7d4b11ca19d4aed36f92fd99dd9ddd20aca295f92134892f46c"
}
}
]
},
"malicious-packages-origins": [
{
"id": "GHSA-4c9v-m7qm-2mpr",
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
}
]
}
],
"sha256": "f380df417118802ce37118bae231cadcd5f41d20c60ac6ad830d9f62a53c8601",
"source": "ghsa-malware",
"import_time": "2026-10-12T16:30:26.92721009Z",
"modified_time": "2026-10-12T15:31:43Z"
},
{
"id": "IN-MAL-2026-021494",
"sha256": "0b6522f1f967259853346030f220d40ef098fc3d54116a23161fb4ccf97f9bd3",
"source": "amazon-inspector",
"versions": [
"2.0.0"
],
"import_time": "2026-10-16T06:57:51.967649864Z",
"modified_time": "2026-10-16T06:56:43Z"
}
]
}
},
"related_cves": [],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 337989,
"published_at": "2026-09-03T18:09:54+00:00"
}