MAL-2026-12418

See a problem?
Import Source
https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/postcss-animate-css-vars/MAL-2026-12418.json
JSON Data
https://api.osv.dev/v1/vulns/MAL-2026-12418
Published
2026-08-05T12:26:45Z
Modified
2026-08-05T13:35:46.369303773Z
Summary
Malicious code in postcss-animate-css-vars (npm)
Details

-= Per source details. Do not edit below this line.=-

Source: amazon-inspector (5e40aa4b6595789e4ba4b39f82e63526286b36a64ffad2be27536c69c8207590)

src/normalize-options.js is heavily obfuscated (RC4-decoded string array, hex-numeric literals, rotating string-array shuffler, dead-code comparison branches) while the rest of the package (index.js, plugin.js, root.js, declarations.js) is plain readable code. When the PostCSS plugin is instantiated (createPlugin -> normalizeOptions), the loader assembles an HTTPS URL from obfuscated string-array entries, appends keys from the caller-supplied options.features sub-object as query parameters, fetches a JSON response, base64-decodes its message field, and executes the decoded code with new Function('require', code)(require) — arbitrary code execution in every downstream consumer's build/CI process. The loader also writes a wrapper file to the OS tmpdir (named with process.pid) containing require('<pkg>')(<options>); setInterval(()=>{},2147483647); and spawns process.execPath detached with stdio ignored and env LT1_STAGE1_CHILD=1, then calls child.unref(). The detached node child re-enters the loader branch, decoupling the fetch-and-eval from the parent build and keeping it alive on a ~24.8-day interval after PostCSS exits, enabling persistent staging beyond the build window. Package metadata (name postcss-animate-css-vars, description 'PostCSS plugin for animate.css', author 'Alex Rivera alex@cssanimation.dev', homepage cssanimation.dev) presents as a legitimate PostCSS ecosystem plugin, but the shipped code contains no animate.css handling in the obfuscated loader path — the metadata is cover for the loader.

Database specific
{
    "malicious-packages-origins": [
        {
            "versions": [
                "2.0.3"
            ],
            "id": "IN-MAL-2026-014658",
            "import_time": "2026-08-05T13:08:34.594660787Z",
            "modified_time": "2026-08-05T12:26:45Z",
            "source": "amazon-inspector",
            "sha256": "5e40aa4b6595789e4ba4b39f82e63526286b36a64ffad2be27536c69c8207590"
        }
    ]
}
References
Credits

Affected packages

npm / postcss-animate-css-vars

Package

Name
postcss-animate-css-vars
View open source insights on deps.dev
Purl
pkg:npm/postcss-animate-css-vars

Affected ranges

Affected versions

2.*
2.0.3

Database specific

cwes
[
    {
        "cweId": "CWE-506",
        "name": "Embedded Malicious Code",
        "description": "The product contains code that appears to be malicious in nature."
    }
]
indicators
{
    "package_integrity": [
        {
            "hashes": {
                "sha512_sri": "sha512-RaOX8B3I1FgPX+G7jVFD/BTVaLiERwkg3OFexqgIK+iqHarrLkk5ARoNrqn7OyGQBvP8yZI8ogG7IS+x97vqpA==",
                "sha1": "5e76d1ca7068eb55c87a5b20554dcf34c3d6f0bf"
            },
            "filename": "postcss-animate-css-vars-2.0.3.tgz"
        }
    ],
    "evidence_files": [
        {
            "path": "src/normalize-options.js",
            "tlsh": "52b2a4a063d42e98b6436fa7b72ff4c6e83e499e3560448bf0287c5c5fa2119d6d5730",
            "sha256": "bcb1888f194f10bdaacca1c61adcde61a981dab714244b0e9a144ecbbe318cf3"
        },
        {
            "path": "package.json",
            "tlsh": "33214da1d5249ca317d51af0995e0042fe2299178858fc2973ae411d4f4d66b43ff3be",
            "sha256": "d372c0116a13e5c9e2277717c4da77ea4d67e9ec84b5529207b95bfd44f52bb2"
        }
    ]
}
source
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/postcss-animate-css-vars/MAL-2026-12418.json"