Live › package › MAL-2026-18182
Go to dashboardNot triaged yet. The sources’ own description is below.
First seen by InfraStack 2026-10-26 20:51 UTC. All times on this page are UTC.
| Product | Ecosystem | Affected | Fixed in |
|---|---|---|---|
| test-brotli2-testmetest | npm | = 1.0.0 | – |
Unknown from the sources.
Unknown from the sources.
Each row is the first time that source carried this signal. The analyst’s rows are its own findings.
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.=-
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.
This page as .md · .json · in your agent: get_signal("MAL-2026-18182")