{"id":"MAL-2026-18088","kind":"package","aliases":["MAL-2026-18088"],"related":[],"title":"Malicious code in tailwindcss-keyframe-kit (npm)","description":"tailwindcss-keyframe-kit (3.0.0, 3.0.1, 3.0.2) 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 hackson306623 on 2026-09-28. src/generators/motion-base.js:5 requires the private scoped package @aaron205whitmore/postcss-animate-utils, 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":"tailwindcss-keyframe-kit","fixed":[],"affected":"= 3.0.0; = 3.0.1; = 3.0.2","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:47+00:00","triaged_at":"2026-10-26T21:04:10+00:00","updated_at":"2026-10-26T21:04:10+00:00","category":"package","confidence":null,"triage":null,"analyst_status":null,"analyst_note":null,"search":"'-07':142C '-09':60C,147C '-10':146C '-17665':42C '-17666':46C '-18088':11A,14A '-2026':10A,13A,41C,45C '-28':61C,143C '2026':59C,141C,145C '3.0.0':25C '3.0.1':26C '3.0.2':27C '5':63C 'aaron205whitmore/postcss-animate-utils':69C 'account':137C 'animate.css':49C 'behind':39C 'campaign':38C 'code':2A,94C,118C 'commit':85C 'contain':111C 'css':31C 'deliv':96C 'depend':125C 'descript':54C 'dev':105C 'fake':35C 'hackson306623':57C 'instal':113C 'integr':50C 'interview':37C 'job':36C 'keyfram':6A,23C 'keyframe':17A 'kit':7A,18A,24C 'live':121C 'load':100C 'lure':88C 'mal':9A,12A,40C,44C 'malici':1A,19B 'network':117C 'npm':8A,83C 'packag':20B,68C,134C 'payload':120C 'plugin':32C,102C 'privat':66C,124C 'public':76C 'publish':55C,109C,139C 'readabl':73C 'readm':52C 'registri':77C 'repositori':89C 'requir':64C 'resolv':79C 'retriev':129C 'run':97C 'scope':67C 'script':114C 'server':106C 'seventeen':136C 'six':132C 'src/generators/motion-base.js':62C 'start':107C 'tailwind':30C 'tailwind.config.js':99C 'tailwindcss':5A,16A,22C 'tailwindcss-keyframe-kit':4A,15A,21C 'tarbal':110C 'templat':51C 'token':84C 'twenti':131C 'twenty-six':130C 'web/.npmrc':91C","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-18088","url":"https://osv.dev/vulnerability/MAL-2026-18088","severity":"critical","published_at":"2026-10-19T00:00:00+00:00","modified_at":"2026-10-20T06:15:04+00:00","first_seen_at":"2026-10-26T20:51:47+00:00","fetched_at":"2026-10-26T20:51:47+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"}