Malicious code in animatecss-tailwind-adapter (npm)
animatecss-tailwind-adapter 2.0.6 was published to npm on 2026-07-28 by the account grant587holloway. The package is part of a fake job interview campaign that targets developers, using the same method as the "Contagious Interview" campaign. A fake company sends a take-home coding assessment repository. The repository commits a web/.npmrc containing a plaintext npm auth token, and its tailwind.config.js loads this package as a Tailwind CSS plugin. The package presents itself as an Animate.css integration ("A configurable, namespaced Animate.css integration for Tailwind CSS", main plugin.js) but declares a runtime dependency on a private scoped npm package (@aaron205whitmore/postcss-animate-utils) that is not publicly readable, so npm audit and public scanners cannot see it; it only resolves with the token committed in the lure repository. The package has no install scripts, so --ignore-scripts does not help: the code runs when Tailwind loads the config, i.e. on `npm run dev` / `next dev`. Public analysis of the earlier package in this chain (animatecss-tailwind-adapter, by Yunus Aydın) reports that the private package contacts an operator-controlled server and runs the code it receives with full Node.js privileges. This is the earlier version of the chain, analysed by Yunus Aydın, whose analysis found the private dependency contacts an operator server and executes the code it returns. Its repository field uses the same GitHub account (sericpieap) as animatecss-tailwind-bridge
- Products
- animatecss-tailwind-adapter
- Affected versions
- 2.0.6
- Fixed versions
- Not specified
- CVEs
- Not specified
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 28 Oct 2026, 09:00 UTC · Revision 1
Source evidence
Malicious code in animatecss-tailwind-adapter (npm)
core-osv · Original sourcePublished 7 Oct 2026, 18:36 UTC
animatecss-tailwind-adapter 2.0.6 was published to npm on 2026-07-28 by the account grant587holloway. The package is part of a fake job interview campaign that targets developers, using the same method as the "Contagious Interview" campaign. A fake company sends a take-home coding assessment repository. The repository commits a web/.npmrc containing a plaintext npm auth token, and its tailwind.config.js loads this package as a Tailwind CSS plugin. The package presents itself as an Animate.css integration ("A configurable, namespaced Animate.css integration for Tailwind CSS", main plugin.js) but declares a runtime dependency on a private scoped npm package (@aaron205whitmore/postcss-animate-utils) that is not publicly readable, so npm audit and public scanners cannot see it; it only resolves with the token committed in the lure repository. The package has no install scripts, so --ignore-scripts does not help: the code runs when Tailwind loads the config, i.e. on `npm run dev` / `next dev`. Public analysis of the earlier package in this chain (animatecss-tailwind-adapter, by Yunus Aydın) reports that the private package contacts an operator-controlled server and runs the code it receives with full Node.js privileges. This is the earlier version of the chain, analysed by Yunus Aydın, whose analysis found the private dependency contacts an operator server and executes the code it returns. Its repository field uses the same GitHub account (sericpieap) as animatecss-tailwind-bridge
osv:MAL-2026-17665
animatecss-tailwind-adapter
Fixed versions: Not specified
Complete source record
{
"id": "c42252216e38073e9df8f084733b97a0c827037eaebdfe5e6a0b01c54f664052",
"url": "https://osv.dev/vulnerability/MAL-2026-17665",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Malicious code in animatecss-tailwind-adapter (npm)",
"summary": "animatecss-tailwind-adapter 2.0.6 was published to npm on 2026-07-28 by the account grant587holloway. The package is part of a fake job interview campaign that targets developers, using the same method as the \"Contagious Interview\" campaign. A fake company sends a take-home coding assessment repository. The repository commits a web/.npmrc containing a plaintext npm auth token, and its tailwind.config.js loads this package as a Tailwind CSS plugin. The package presents itself as an Animate.css integration (\"A configurable, namespaced Animate.css integration for Tailwind CSS\", main plugin.js) but declares a runtime dependency on a private scoped npm package (@aaron205whitmore/postcss-animate-utils) that is not publicly readable, so npm audit and public scanners cannot see it; it only resolves with the token committed in the lure repository. The package has no install scripts, so --ignore-scripts does not help: the code runs when Tailwind loads the config, i.e. on `npm run dev` / `next dev`. Public analysis of the earlier package in this chain (animatecss-tailwind-adapter, by Yunus Aydın) reports that the private package contacts an operator-controlled server and runs the code it receives with full Node.js privileges. This is the earlier version of the chain, analysed by Yunus Aydın, whose analysis found the private dependency contacts an operator server and executes the code it returns. Its repository field uses the same GitHub account (sericpieap) as animatecss-tailwind-bridge",
"evidence": "osv:MAL-2026-17665",
"products": [
{
"name": {
"value": "animatecss-tailwind-adapter",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "2.0.6",
"evidence": "/affected/0/versions"
}
]
}
],
"severity": "unknown",
"structured": {
"id": "MAL-2026-17665",
"aliases": [
"MAL-2026-17665"
],
"affected": [
{
"package": {
"name": "animatecss-tailwind-adapter",
"purl": "pkg:npm/animatecss-tailwind-adapter",
"ecosystem": "npm"
},
"versions": [
"2.0.6"
],
"database_specific": {
"cwes": [
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
}
],
"source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/animatecss-tailwind-adapter/MAL-2026-17665.json"
}
}
],
"modified": "2026-10-08T05:15:04.239770722Z",
"provider": "osv",
"references": [
"https://www.npmjs.com/package/animatecss-tailwind-adapter"
]
},
"related_cves": [],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 98592,
"published_at": "2026-10-07T18:36:40+00:00"
}