Malicious code in event-bus-lite-testmetest (npm)
Exact source revision recorded 25 Oct 2026 17:10:02 UTC. It does not establish the source's current position. Latest evidence.
osv · MAL-2026-18292
Published--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (038b62e6040cef7e651f3cf89c146290f391c28977fe206410408e85ccbe4721) The package ships a binding.gyp whose target has type "none" and no C/C++ source files; its only purpose is a GYP `<!(...)` command-expansion that runs `node index.js` during the automatic `node-gyp rebuild` triggered by `npm install`. index.js is multi-layer obfuscated: a char-code array is Caesar-decoded (shift 21) and passed to eval; the decoded body reads the bundled lib_native.dat (~312 KB, high-entropy, sha256 e1ab1e330d3db532d511d4af4386ab2d2c6245ca807410f51c1211ae48814d73), brotli-decompresses and AES-128-GCM-decrypts it with hardcoded key/IV/AAD, writes the plaintext to a `mkdtempSync('.b-')/index.js` temp path, and spawns the Bun runtime (`Bun.spawn`, or `getBunPath()` via child_process.spawn) to execute the decrypted payload. Executing under Bun bypasses Node-only analysis. The contents of the executed payload are not inspectable from the shipped artifact.
- Source published
- 25 Oct 2026 16:02:07 UTC
- Source modified
- 25 Oct 2026 16:30:04 UTC
- Observed here
- 25 Oct 2026 17:10:02 UTC
- Source terms
- OSV · upstream source license applies
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · OSV · upstream source license applies. Source text is retained; field grouping and change labels are provided by ChangeIntel.