MAL-2026-12285Malicious code in tramvai-module-feature-toggle (npm)
| Ecosystem | Package | Version |
|---|---|---|
| npm | tramvai-module-feature-toggle | * |
| npm | tramvai-module-feature-toggle | 20.5.3 |
{"schema_version":"1.7.4","id":"MAL-2026-12285","published":"2026-08-05T09:09:20Z","modified":"2026-08-06T01:00:43.069417664Z","aliases":["GHSA-x32c-hhrc-xrc7"],"summary":"Malicious code in tramvai-module-feature-toggle (npm)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (d8841208443b6595c8389bfac3e1cdb59a65ad0bc05a8dd3e01ca5c661287e56)\nOn require() of the package, index.js loads setup.js which downloads a platform-specific binary from hardcoded Cloudflare Workers hosts (oob-worker.cf101-adf.workers.dev, oob-worker.cf102-baf.workers.dev, oob-worker.cf100-416.workers.dev), writes it to a hidden temp path, chmods it 0755, and spawns it detached via /bin/sh. Destination hostnames are assembled at runtime via array split-join to evade string scanning, with benign-looking identifiers ('analytics_state', 'dotnet_diag_', '.cache_') and cover-story comments referencing 'telemetry' and 'CDN compatibility'. If the HTTPS fetch fails, setup.js reassembles a base64 payload from numbered DNS TXT records under attacker-controlled *.dl.well1.site domains (tin.dl.well1.site, tina.dl.well1.site, ldr.dl.well1.site, win.dl.well1.site) as a covert delivery channel. Execution is gated by opt-out environment variables and a ~20912s lockfile cooldown. The package name resembles the legitimate tramvai ecosystem but ships no real functionality — the only effect of installation is the drop-and-execute pipeline.\n\n## Source: ghsa-malware (374869b2bb894469c89d1f158bb270ca74f2422d28d9cd00bf807ae918bdd205)\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.\n","affected":[{"package":{"name":"tramvai-module-feature-toggle","ecosystem":"npm"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}],"versions":["20.5.3"],"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":"setup.js","sha256":"d92d46bf72563af9c4c0d74e3b757974c196b5f3677864902e9d698dd4c302fa","tlsh":"6ba1b79a06b6701d47b0ebf48717441af65be26323808194f76ce9944f7212483b2efc"}],"package_integrity":[{"filename":"tramvai-module-feature-toggle-20.5.3.tgz","hashes":{"sha1":"b85cac06ee2d4b0ddd98f69805f2cb701b380d33","sha512_sri":"sha512-VWw2TkG8X9oElpkIFFicMt6bFlU6zY8RNiyiJ2eRVVKZ/hKypVe8F6arNNmHZFvlIouHy1zkac2WheJzJ5af+w=="}}]}}}],"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/tramvai-module-feature-toggle/v/20.5.3"},{"type":"ADVISORY","url":"https://github.com/advisories/GHSA-x32c-hhrc-xrc7"}],"database_specific":{"malicious-packages-origins":[{"id":"IN-MAL-2026-014568","import_time":"2026-08-05T09:28:26.400261452Z","modified_time":"2026-08-05T09:09:20Z","sha256":"d8841208443b6595c8389bfac3e1cdb59a65ad0bc05a8dd3e01ca5c661287e56","source":"amazon-inspector","versions":["20.5.3"]},{"id":"GHSA-x32c-hhrc-xrc7","import_time":"2026-08-06T00:58:53.476605424Z","modified_time":"2026-08-05T20:38:56Z","ranges":[{"events":[{"introduced":"0"}],"type":"SEMVER"}],"sha256":"374869b2bb894469c89d1f158bb270ca74f2422d28d9cd00bf807ae918bdd205","source":"ghsa-malware"}]},"credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"}]}数据来源:OpenSSF Malicious Packages · Apache-2.0