MAL-2026-17641
Vulnerability from ossf_malicious_packages
troubleshooting is a dependency-confusion package: it is described as a "Compatibility shim", uses version numbers up to 99.0.1, and its README calls it an "authorized dependency-confusion test". Each listed version has a postinstall script that runs node beacon.cjs on npm install, and index.js calls the same code when the package is imported; it POSTs the hostname, install path and current working directory over plain HTTP to http://185.158.107.175:8787/_ah/dc, and index.js exports a Proxy that returns no-op functions so builds importing the real package keep running. The npm account xwise8887 published these 7 versions, and 6 versions of browser-metrics-plugin.contrib with the same payload, on 2026-10-07 between 00:01 and 00:07 UTC.
- CWE-506 - The product contains code that appears to be malicious in nature.
{
"affected": [
{
"database_specific": {
"cwes": [
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
}
]
},
"package": {
"ecosystem": "npm",
"name": "troubleshooting"
},
"versions": [
"0.1.0",
"1.0.0",
"1.0.1",
"99.0.1",
"3.0.0",
"1.1.0",
"2.0.1"
]
}
],
"credits": [
{
"contact": [
"https://www.invisirisk.com",
"mailto:research@invisirisk.com"
],
"name": "InvisiRisk, Inc.",
"type": "FINDER"
}
],
"database_specific": {
"iocs": {
"files": [
{
"digests": {
"sha256": "a86a4da763bbb34c16f361abe7aab66d5df591b66867ac8160041f932159b08d"
},
"note": "Main entry point; calls beacon.cjs fire() on import and exports a no-op Proxy. Identical in all listed versions.",
"paths": [
"index.js"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "e5915aacc7fbf292ba1eaf2f2cd242e9370d82342016eed6787b81f3b0c2415b"
},
"note": "postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (troubleshooting@0.1.0).",
"paths": [
"package.json"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "9469c53670e67c2558a1cda35919a1cd8a44148b6697f639bbfeb6d1bef66531"
},
"note": "Executed by the postinstall script of troubleshooting@0.1.0.",
"paths": [
"beacon.cjs"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "8bb61cf793d6a8a2ade875d08993c30016a890bdbae69eed7f828aa1a7ae1888"
},
"note": "postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (troubleshooting@1.0.0).",
"paths": [
"package.json"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "9469c53670e67c2558a1cda35919a1cd8a44148b6697f639bbfeb6d1bef66531"
},
"note": "Executed by the postinstall script of troubleshooting@1.0.0.",
"paths": [
"beacon.cjs"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "06a7b88c50c12888cc1c9278e10c6be42cc79cc7fad022fed434c9b34aef1fef"
},
"note": "postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (troubleshooting@1.0.1).",
"paths": [
"package.json"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "9469c53670e67c2558a1cda35919a1cd8a44148b6697f639bbfeb6d1bef66531"
},
"note": "Executed by the postinstall script of troubleshooting@1.0.1.",
"paths": [
"beacon.cjs"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "fbfeb7d0471481120cce111bfcd150660861075b267fd0d4a121498cfd1fd79c"
},
"note": "postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (troubleshooting@99.0.1).",
"paths": [
"package.json"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "9469c53670e67c2558a1cda35919a1cd8a44148b6697f639bbfeb6d1bef66531"
},
"note": "Executed by the postinstall script of troubleshooting@99.0.1.",
"paths": [
"beacon.cjs"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "9e36b9e2858eef92b637abc885aedc7cc3a745511d9da85391c45da8f91e142e"
},
"note": "postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (troubleshooting@3.0.0).",
"paths": [
"package.json"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "9469c53670e67c2558a1cda35919a1cd8a44148b6697f639bbfeb6d1bef66531"
},
"note": "Executed by the postinstall script of troubleshooting@3.0.0.",
"paths": [
"beacon.cjs"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "a6b1f6c20b2ce88e11c467a0df7c8570b8d25c549aadd04affb37310647fc4b4"
},
"note": "postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (troubleshooting@1.1.0).",
"paths": [
"package.json"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "9469c53670e67c2558a1cda35919a1cd8a44148b6697f639bbfeb6d1bef66531"
},
"note": "Executed by the postinstall script of troubleshooting@1.1.0.",
"paths": [
"beacon.cjs"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "28058651eb58dd8ce81d910e706ed48c15aeaf3b4a0c2ffe789ad329742f434f"
},
"note": "postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (troubleshooting@2.0.1).",
"paths": [
"package.json"
],
"source": "PACKAGE_ARCHIVE"
},
{
"digests": {
"sha256": "9469c53670e67c2558a1cda35919a1cd8a44148b6697f639bbfeb6d1bef66531"
},
"note": "Executed by the postinstall script of troubleshooting@2.0.1.",
"paths": [
"beacon.cjs"
],
"source": "PACKAGE_ARCHIVE"
}
],
"ips": [
"185.158.107.175"
],
"urls": [
"http://185.158.107.175:8787/_ah/dc"
]
}
},
"details": "troubleshooting is a dependency-confusion package: it is described as a \"Compatibility shim\", uses version numbers up to 99.0.1, and its README calls it an \"authorized dependency-confusion test\". Each listed version has a postinstall script that runs `node beacon.cjs` on npm install, and index.js calls the same code when the package is imported; it POSTs the hostname, install path and current working directory over plain HTTP to `http://185.158.107.175:8787/_ah/dc`, and index.js exports a Proxy that returns no-op functions so builds importing the real package keep running. The npm account xwise8887 published these 7 versions, and 6 versions of browser-metrics-plugin.contrib with the same payload, on 2026-10-07 between 00:01 and 00:07 UTC.",
"id": "MAL-2026-17641",
"modified": "2026-10-07T02:43:30Z",
"published": "2026-10-07T00:04:15Z",
"references": [
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/troubleshooting"
}
],
"schema_version": "1.7.4",
"summary": "Malicious code in troubleshooting (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.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.