aes-decode-runner-pronpm
Malicious code in aes-decode-runner-pro (npm) Remove it immediately and rotate any exposed credentials.
What this malware does
aes-decode-runner-pro ships an opaque 326-byte AES-GCM ciphertext (DEFAULT_FINAL_ENCODED_TEXT in src/config/defaults.js) along with a hardcoded passphrase (default-dev-passphrase) and salt (encode-npm-c-salt). The exported run() function (and runDefaultDecodedFunction() in src/pipeline/custom-codec-pipeline.js) decrypts this blob and executes the resulting string via new Function("require", runnable)(require), passing in the host's require so the decrypted code can load arbitrary Node modules (filesystem, network, child_process). The plaintext is not present in the source tree, so the actual code being run cannot be audited from the package contents. The README presents the package as an AES helper utility, but the package's primary documented entry point (pkg.run()) auto-executes hidden author-controlled code. There are no install lifecycle hooks, so npm install alone is benign; harm fires when a consumer calls the advertised run() API or runs npm start/npm test against the package. The combination of hardcoded ciphertext + hardcoded key + new Function execution sink + misleading cover-story README is the standard hidden-payload-runner shape and not a legitimate use of AES.
Malicious versions
Indicators of compromise (SHA-256)
Frequently asked questions
Campaign
References
Credits
- Amazon Inspector · finder
Scan your dependencies
O3 Security blocks malicious packages like this at install time and in CI.
Supply-chain protection