{"id":"MAL-2026-18073","kind":"package","aliases":["MAL-2026-18073"],"related":[],"title":"Malicious code in animatecss-tailwind-presets (npm)","description":"animatecss-tailwind-presets (1.0.0, 2.0.3) is a Tailwind CSS plugin from the fake job interview campaign behind MAL-2026-17665 and MAL-2026-17666: the same Animate.css integration template, README and description, published by elony16 on 2026-09-29. src/motion.js:5 requires the private scoped package @jasperquinn/postcss-motion-helpers, which is not readable on the public registry and resolves only with the npm token committed in the lure repository's web/.npmrc, so the code it delivers runs when tailwind.config.js loads the plugin and the dev server starts. The published tarball contains no install scripts and no network code; the payload lives in the private dependency, which was not retrieved. Twenty-six such packages under seventeen accounts were published between 2026-07-28 and 2026-10-09.","summary":null,"severity":"critical","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"animatecss-tailwind-presets","fixed":[],"affected":"= 1.0.0; = 2.0.3","ecosystem":"npm"}],"ecosystems":["npm"],"tags":["malicious","package"],"not_affected_if":[],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-10-19T00:00:00+00:00","first_seen_at":"2026-10-26T20:51:48+00:00","triaged_at":"2026-10-26T21:06:18+00:00","updated_at":"2026-10-26T21:06:18+00:00","category":"package","confidence":null,"triage":null,"analyst_status":null,"analyst_note":null,"search":"'-07':141C '-09':59C,146C '-10':145C '-17665':41C '-17666':45C '-18073':11A,14A '-2026':10A,13A,40C,44C '-28':142C '-29':60C '1.0.0':25C '2.0.3':26C '2026':58C,140C,144C '5':62C 'account':136C 'animate.css':48C 'animatecss':5A,16A,22C 'animatecss-tailwind-preset':4A,21C 'animatecss-tailwind-presets':15A 'behind':38C 'campaign':37C 'code':2A,93C,117C 'commit':84C 'contain':110C 'css':30C 'deliv':95C 'depend':124C 'descript':53C 'dev':104C 'elony16':56C 'fake':34C 'instal':112C 'integr':49C 'interview':36C 'jasperquinn/postcss-motion-helpers':68C 'job':35C 'live':120C 'load':99C 'lure':87C 'mal':9A,12A,39C,43C 'malici':1A,19B 'network':116C 'npm':8A,82C 'packag':20B,67C,133C 'payload':119C 'plugin':31C,101C 'preset':7A,24C 'presets':18A 'privat':65C,123C 'public':75C 'publish':54C,108C,138C 'readabl':72C 'readm':51C 'registri':76C 'repositori':88C 'requir':63C 'resolv':78C 'retriev':128C 'run':96C 'scope':66C 'script':113C 'server':105C 'seventeen':135C 'six':131C 'src/motion.js':61C 'start':106C 'tailwind':6A,17A,23C,29C 'tailwind.config.js':98C 'tarbal':109C 'templat':50C 'token':83C 'twenti':130C 'twenty-six':129C 'web/.npmrc':90C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-19T00:00:00+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"osv-malicious","external_id":"MAL-2026-18073","url":"https://osv.dev/vulnerability/MAL-2026-18073","severity":"critical","published_at":"2026-10-19T00:00:00+00:00","modified_at":"2026-10-20T06:15:07+00:00","first_seen_at":"2026-10-26T20:51:48+00:00","fetched_at":"2026-10-26T20:51:48+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}