{"id":"MAL-2026-18292","revision":"99e90a55eeef4e0c8588eff9a149fc23","records":[{"revision":"99e90a55eeef4e0c8588eff9a149fc23","observedAt":"2026-10-25T17:10:02.587+00:00","statement":{"source":"osv","id":"MAL-2026-18292","aliases":[],"title":"Malicious code in event-bus-lite-testmetest (npm)","description":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (038b62e6040cef7e651f3cf89c146290f391c28977fe206410408e85ccbe4721)\nThe 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.\n","state":0,"publishedAt":"2026-10-25T16:02:07+00:00","modifiedAt":"2026-10-25T16:30:04.5317899+00:00","affected":[{"ecosystem":"npm","name":"event-bus-lite-testmetest","ranges":[],"versions":["0.0.6"],"rawVersionEvidence":null}],"metrics":[],"references":["https://www.npmjs.com/package/event-bus-lite-testmetest/v/0.0.6"],"sourceUrl":"https://osv.dev/vulnerability/MAL-2026-18292","license":"OSV · upstream source license applies","key":"osv:MAL-2026-18292","identifiers":["MAL-2026-18292"]},"retained":false,"historicalAffected":[]}],"coverage":[]}