MAL-2026-16048 Malicious code in punypump (npm)
Malicious package
Published
MAL-2026-16048 is a malicious package: punypump (npm). Every version was published to cause harm.
Task:
1. Search this repository's dependency manifests and lockfiles for the package, including transitive dependencies.
2. If it is present, remove it, regenerate the lockfile with the project's package manager, and replace whatever it was used for.
3. List any CI runners, developer machines or containers that installed it, so their secrets can be rotated.
4. If the package is not used anywhere, say so and change nothing.
Reference: https://insights.sbomify.com/MAL-2026-16048/ (Markdown: https://insights.sbomify.com/MAL-2026-16048/index.md)
- Package
- punypump
- Registry
- npm
What is MAL-2026-16048?
MAL-2026-16048 is a malicious package in punypump, published on 8 Sep 2026.
Official description
The package presents itself as a console shim (index.js is a verbatim copy of console-browserify with description 'Emulate console for all the browsers'), but also ships library.js and test/sessionCtrl.js which auto-execute a stager on module load via initializeService().catch(…). The stager fetches an opaque blob from a base64-hidden URL (config.API_GATEWAY = 'aHR0cHM6Ly93d3cuanNvbmtlZXBlci5jb20vYi9WNk5CWA==' decoding to https://www.jsonkeeper.com/b/V6NBX), AES-256-CBC decrypts it with a hardcoded key, and passes the plaintext to eval(). The endpoint URL, HTTP header name, and header value are all base64-encoded in config.js. Content served from the jsonkeeper.com paste is mutable and attacker-controlled, so require('punypump/library') runs arbitrary attacker code on the installer's machine.
What should I do about MAL-2026-16048?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.