Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
Malicious package

tailwind-contact-formsnpm

tailwind-contact-forms is a confirmed malicious npm package (MAL-2026-15925) that typosquats a legitimate package to trick installs (malicious version 0.5.12). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in tailwind-contact-forms (npm)

MAL-2026-15925
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall tailwind-contact-forms

What this malware does

tailwind-contact-forms ships src/index.js containing the legitimate @tailwindcss/forms plugin source concatenated with an obfuscator.io-style payload (rotating 328-entry string array _0x303e with decoder _0x1574, ~1300 deobfuscation transforms). The obfuscated section decodes to host-reconnaissance strings ('hostname', 'Win64; x64', 'process.env') and to network destinations targeting Ethereum RPC / block-explorer infrastructure ('h.drpc.org', 'pc.io/eth', an 'stapi.io' host, 'ut.com/api', and Etherscan-style query parameters '?module=account&action=txlist&', 'nonce', 'startbloc'). Because src/index.js is the package's main entry, the payload executes on require() in any project that installs this package. The package manifest declares repository = https://github.com/tailwindlabs/tailwindcss-forms (the real Tailwind Labs upstream, whose actual npm name is @tailwindcss/forms) while publishing under the unrelated name tailwind-contact-forms, impersonating the upstream to lure developers who mistype the real package. A CSS/Tailwind plugin has no functional reason to run obfuscated code, read host identifiers and process.env, or contact Ethereum RPC and block-explorer APIs at import time.

Malicious versions

1 flagged
0.5.12

Indicators of compromise (SHA-256)

0ec029f2c6cc211c953394dfe89a4ba0921f1a526ca2b0235672f6fdeca10c50

Detection & response playbook

Typosquat
  1. Find it

    Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for tailwind-contact-forms (version 0.5.12). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging tailwind-contact-forms across your stack and pipelines.

  2. If you installed it — respond

    tailwind-contact-forms is a typosquat — you almost certainly intended a legitimately-named package. Remove tailwind-contact-forms, install the correct package, and rotate any secrets exposed during the install since post-install scripts may have already run.

  3. Did it already run?

    If tailwind-contact-forms was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.

  4. How O3 protects you

    O3 blocks tailwind-contact-forms before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.

Frequently asked questions

No. tailwind-contact-forms on npm has been identified as a malicious package (version 0.5.12 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-019640

References

Credits

  • Amazon Inspector · finder

Detect & block this

O3 blocks tailwind-contact-forms-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the malicious outbound activity and severs the channel.

Explore

tailwind-contact-forms (npm) malicious package — MAL-2026-15925 | O3 Security