Live › package › MAL-2026-18185
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 |
|---|---|---|---|
| log-rotate-testmetest | npm | = 1.0.1 | – |
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.
-= Per source details. Do not edit below this line.=-
The package ships a binding.gyp whose sources field uses GYP command-expansion (<!(env node index.js...)) with no native source files, causing npm's implicit node-gyp rebuild to execute index.js at install time. index.js is a Caesar+10 (ROT) obfuscated eval blob that, once decoded, AES-128-GCM-decrypts a hardcoded hex ciphertext and the sibling data.bin, brotli-decompresses the result, writes it to a mkdtemp'd temporary file, and spawns it under Bun (Bun.spawn([execPath,'run',tmp]) / spawn(getBunPath(),['run',tmp])). package.json declares bun as a runtime dependency, deliberately routing execution through an alternate runtime rather than Node. The executed payload is fully opaque and attacker-controlled. The combination of a no-source binding.gyp used solely as a lifecycle trigger, multi-layer obfuscation (ROT + AES-GCM + brotli), and alternate-runtime dispatch has no legitimate native-build justification.
This page as .md · .json · in your agent: get_signal("MAL-2026-18185")