MAL-2026-10539 Malicious code in postcss-animatecss (npm)
Malicious package
Published
MAL-2026-10539 is a malicious package: postcss-animatecss (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-10539/ (Markdown: https://insights.sbomify.com/MAL-2026-10539/index.md)
- Package
- postcss-animatecss
- Registry
- npm
What is MAL-2026-10539?
MAL-2026-10539 is a malicious package in postcss-animatecss, published on 14 Jul 2026.
Official description
The exported PostCSS plugin factory in [email protected] contains an obfuscator.io-obfuscated payload that executes on every consumer build. When the plugin runs, it fetches a remote endpoint (URL built from an RC4/base64 string array hidden inside the module), reads a
message field from the JSON response, base64-decodes it, and executes the result via new Function('require', m)(require) — giving the remote operator arbitrary Node.js code execution with full require access on the developer or CI host. A setInterval(fn, 4000) installed via a new Function('return this')() global reference re-invokes the fetch-and-eval loop every 4 seconds for the lifetime of the process, providing persistent adaptable C2. The outbound request also appends Object.keys(options.features?...) to the query string, leaking consumer plugin configuration to the endpoint. The package's declared purpose (adding -webkit- animate.css prefixes) requires no network I/O whatsoever; the fetch/eval/interval layer plus obfuscator.io string-array concealment is the classic supply-chain backdoor signature.What should I do about MAL-2026-10539?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.