Skip to content
OpenAdvisories
Malicious MAL-2026-12192

scrollbar-hide-plugin

npm package · versions 1.0.1

Reported Aug 5, 2026 · Updated Aug 5, 2026

If this package is installed

Remove it, treat the machine (or CI runner) as compromised, and rotate every secret, token and key it could access — from a different, clean machine.

Details

Source: amazon-inspector (4f19e1731b591552a096b108703702b9663c1bbb8cf9c2ff6fc048f8582e8607)
The package's main entry (dist/index.js) appends an obfuscated payload — wrapped in eval(atob(...)) with require targets and URLs hidden in \uXXXX escapes — to an otherwise legitimate Tailwind scrollbar-hide plugin. When the package is required or imported, the payload queries Ethereum RPCs for transactions from a hardcoded address (0xa322e5f3d311d3080e6f0121063e9adc2490ef1a), decodes attacker IPv4 addresses from the transaction `to` field bytes, and fetches XOR-encoded JavaScript from those IPs on port 443 (paths `/0x/cls` and `/0x/ls`). The fetched code is then executed both via `eval` in-process and via `spawn('node', ['-e',...], {detached:true}).unref()` as a detached child process. The C2 destinations are resolved dynamically from on-chain data, so the operator can rotate infrastructure without republishing the package. The name resembles the legitimate tailwind-scrollbar-hide package (reslear/tailwind-scrollbar-hide), consistent with a name-squat trojan.