Skip to content
supplychainattack.orgSupply chain attack incident catalog
resolvedcritical

Malicious code in tailwind-extension-kit (npm)

The npm package tailwind-extension-kit contained malicious code that fetches and executes attacker-controlled JavaScript from a hardcoded IP endpoint when registered as a Tailwind plugin. The payload is executed with full Node.js capabilities, including access to browser credentials and system information via declared dependencies.

ShareXLinkedInHacker News
Disclosed
Last updated
Blast radius
Developers using tailwind-extension-kit as a Tailwind plugin; arbitrary code execution on developer machines with full Node.js capabilities.
Ecosystems
Attack vectors
Affected entities
  • tailwind-extension-kitnpm package presenting as Tailwind CSS utility

The npm package tailwind-extension-kit was distributed with malicious code disguised as a Tailwind CSS utility plugin. When the package's default export getPlugin is invoked (as instructed in the README), it fetches JSON from a hardcoded bare-IP endpoint at https://31.97.137.157:45000/icons/109 and extracts the data.credits field.\n\nThe fetched data is passed to JavaScript's new Function(...) constructor with bindings to require, process, module, and Buffer, enabling full Node.js execution. The malicious code is disguised with cover-story framing—variables named IconProvider and iconDomain, a CDN hostname map, and a Font Awesome path fragment—to mask the loader as legitimate icon retrieval.\n\nThe package declared runtime dependencies on @primno/dpapi, better-sqlite3, and node-machine-id, consistent with browser-credential and cookie-stealer payloads. Developers who registered the default export as a Tailwind plugin would execute attacker-controlled code with full system access on their machines.\n\nThe incident was identified and credited to the OpenSSF malicious-packages project.

Indicators of compromise

Packages
  • tailwind-extension-kit
IPs
  • 31.97.137.157

Remediation

  • Immediately uninstall tailwind-extension-kit from all development environments
  • Audit npm package.json and lock files for any presence of tailwind-extension-kit
  • Review browser credentials, cookies, and system access logs on affected developer machines for signs of compromise
  • Rotate any credentials or tokens that may have been exposed
  • Update Tailwind CSS and all dependencies to ensure no residual malicious code remains
  • Implement package verification and code review practices for third-party npm dependencies before use

Sources

  1. GitHub Advisory GHSA-8v25-mhwg-4xhq · GitHub Advisory Database

Cite this entry

"Malicious code in tailwind-extension-kit (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 19, 2026; last updated August 19, 2026. https://supplychainattack.org/incident/malicious-code-in-tailwind-extension-kit-npm-1ou0gh

Suggest a correction

Found an error or have a newer source? Corrections to factual errors take priority over new entries.

  1. containedcritical

    Malicious code in 3-buildsight-web (npm)

    The npm package 3-buildsight-web contains malicious code that fetches and executes arbitrary JavaScript from a remote Bitbucket URL on module load, granting full page privileges to an unverified third party.

    npmCompromised package
  2. resolvedcritical

    Malicious code in @usaa-grp-personal-profile/personal-profile-common (npm)

    Malicious package @usaa-grp-personal-profile/personal-profile-common version 999.0.0 published to public npm as a dependency-confusion attack targeting an organization's internal registry. The package contains preinstall and postinstall hooks that exfiltrate hostname, username, and working directory to an attacker-controlled OAST endpoint on every install.

    npmDependency confusionCompromised package
  3. resolvedcritical

    Malicious code in create-coin (npm)

    create-coin@20.1.1 on npm contained malicious postinstall code that collected sensitive environment variables, credentials, and host reconnaissance data. The package impersonated an esbuild platform build and exfiltrated data to a hardcoded endpoint.

    npmCompromised packageTyposquatting
  4. resolvedcritical

    Malicious code in @syncraft-labs/vue (npm)

    The npm package @syncraft-labs/vue version 0.4.1 contained malicious obfuscated code in its ESM build that implements a blockchain-hosted C2 dropper (EtherHiding pattern), enabling remote code execution on any consumer importing the package.

    npmCompromised package