tailwind-hide-scrollbar@2.1.5
Malicious code in tailwind-hide-scrollbar (npm)
Analysis
tailwind-hide-scrollbar@2.1.5 ships a legitimate tailwind plugin in dist/index.js but appends an obfuscated eval(atob(...)) payload that installs a covert command-and-control implant. On import, the payload reads the Ethereum blockchain (via public RPC endpoints 1rpc[.]io/eth, eth[.]drpc[.]org, ethereum-rpc[.]publicnode[.]com, eth-mainnet[.]public[.]blastapi[.]io, or the ETH_RPC_URL env var, and the typosquatted API eth-blockscout[.]com/api) to fetch the latest transaction from attacker wallet 0xa322E5f3D31D3080e6f0121063e9aDC2490Ef1a, extracting the transaction's `to` field as a 4-byte IP address that becomes the C2 host. It then connects to hxxp://<ip>:443/0x/cls and hxxp://<ip>:443/0x/ls, downloads XOR-encrypted second-stage payloads, and executes them either via eval() or by spawning a detached `node -e` child process (child_process.spawn with detached:true, windowsHide:true). All C2 traffic is XOR-encrypted with hardcoded keys. The package's stated purpose (a scrollbar-hiding CSS plugin) is unrelated to this behaviour.
- analyzed by
- Leitwacht
- first seen
- Aug 5, 2026, 07:53 AM
- analyzed
- Aug 5, 2026, 07:56 AM
- weekly installs
- 125
Related advisories
- streak-calc-math@1.0.0
- streak-math-calc@1.0.0
- @nasdtickets/common@1.0.23
- tailwindcss-scrollbar-hide@2.2.6
- @tuluax/errb@3.0.1
- webdev-conf@5.0.0
- tailwind-anime@1.1.0
- bigops-auth-interceptor@35.7.2
Independently detected by the Leitwacht supply-chain probe. IOCs are defanged. Published CC0. Think this is a mistake? See the dispute policy.