npm · Malicious package advisory
Malwaretest-brotli2-testmetest
MAL-2026-18182
Malicious code in test-brotli2-testmetest (npm)
Details
test-brotli2-testmetest 1.0.0 ships a rebuild of the data-pipeline-testmetest 2.0.1 credential stealer and runs it on `npm install`: its `install` script runs `node-gyp rebuild`, and the `binding.gyp` source `<!(env node index.js >/dev/null 2>&1; echo stub.c)` makes node-gyp run `index.js`, an obfuscated loader that decrypts a Brotli-compressed payload and pipes it into Bun. Published by npm account `testnewtestme2` on 2026-10-21.
---
_-= Per source details. Do not edit below this line.=-_
## Source: amazon-inspector (191cc40d7896b393d37ba01dd32b1087b769c9fc7dd7b2debb32ba4ef34de11d)
The package's scripts.install runs node-gyp rebuild, and binding.gyp uses GYP command-expansion (`<!(env node index.js...; echo stub.c)`) in its sources list to invoke index.js during the configure phase. The binding.gyp declares target type 'none' and ships no C/C++ sources, so there is nothing to actually build — the file exists solely to trigger execution of index.js at install. index.js is a ~586 KB Caesar-shifted (+5) character-code array passed to eval; the decoded program imports node:crypto and uses createDecipheriv('aes-128-gcm',...) to decrypt further hex ciphertext blobs and execute the plaintext. No readable logic, URLs, or purpose is exposed in source. Installing this package on a default `npm install` runs this opaque encrypted payload on the installer's machine. CWE-506.
Compromised versions (1)
- 1.0.0
Any computer that installed or ran a compromised version should be considered fully compromised. Rotate every secret on that machine from a clean environment.