VDB

GCVE-110-OSM-2026-11635

GCVE-110-OSM-2026-11635
Advisory PublishedCVSS 9.6/10
Vulnetix · Advisory published September 4, 2026
On require() of tailwindcss-animate-styles, index.js runs eval(atob(...)) on a payload appended to the Tailwind plugin. The decoded loader queries public Ethereum RPC endpoints (eth.blockscout.com, 1rpc.io, drpc.org, publicnode, blastapi.io) for transactions from hardcoded wallet 0xa322E5f3D311D3080e6f0121063e9aDC2490Ef1a, decodes the destination-address bytes of those transactions into two IPv4 C2 hosts, then fetches XOR-encoded stage-2 code from http://<c2>:443/0x/cls and http://<c2>:443/0x/ls and executes it via eval() and a detached spawn('node', ['-e',...]) with stdio ignored and windowsHide set. Before executing the fetched code the loader pins global.r=require and global.m=module and passes the XOR keys and C2 URLs in, granting the remotely-served stage-2 full Node capabilities (fs, net, child_process, env) on the installer's host. After the eval, the module reads its own source, locates the 'eval(atob("Z2x' region, and rewrites index.js with that region spliced out, erasing the loader from disk after first import. Judge assessment: This is a loader-dropper for a DPRK/Lazarus-style campaign: `index.js` contains `eval(atob(...))`, and the deobfuscated payload matches the `A10-npm` and `global['_V']` campaign markers associated with nullreceiver/PolinRider. The decoded code queries public Ethereum RPC endpoints, derives C2 hosts from the wallet `0xa322e5f3d311d3080e6f0121063e9adc2490ef1a`, then fetches stage-2 from `http://<c2>:443/0x/cls` and `http://<c2>:443/0x/ls` and executes it with `eval()` and detached `spawn('node', ['-e', ...])`. The package is also intentionally obfuscated and the advisory says it self-modifies to erase the loader after first import, which is consistent with an attacker trying to hide persistence-free compromise rather than a benign Tailwind plugin. The new publisher account and lack of repository further reinforce malicious intent, but the code itself is already conclusive. ENTRY index.js (main: index.js) DESTINATION - 1 exfil (ethereumAddresses) - 1 fetched-payload (deobfuscated) (values recorded in verified_iocs) OBFUSCATION - Decoded Base64 Content in index.js - IOCs Found in Deobfuscated Code in index.js - Dynamic Base64 Decoding in index.js: "eval(atob" - Base64 Encoded Payload in index.js: ""Z2xvYmFsLmk9IkExMC1ucG0tc2Nyb2xsIjtnbG9iYWxbInIiXT1yZXF1aXJlO2lmKHR5cGVvZiBtb2R..." - Obfuscation (osm-deobfuscator): unknown in index.js - recovered 11 urls, 1 ips, 6 domains, 1 ipv4, 1 ethereumAddresses, 1 _domainCandidates from decoded/deobfuscated content ADDITIONAL FINDINGS - Base64 Decoded Eval in index.js: "eval(atob(" - Campaign marker: nullreceiver in [deobfuscated] index.js: "A10-npm" - Campaign marker: PolinRider in [deobfuscated] index.js: "global['_V']" - Very New NPM Publisher Account PAYLOAD FILES index.js

Weaknesses (CWE)

CWE-506Embedded Malicious Code

Risk Scores

CVSS 3.1
9.6/10
Critical · CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H

Affected Products

VendorProductVersionsPlatforms
unknowntailwindcss-animate-stylesall (affected)

References

advisory
vendor

Browse GCVE Records

3,425 records in the GCVE database · Updated September 6, 2026

No matching records found.

Explore Further

Investigate this vulnerability in the interactive console or download the raw GCVE record.

$ Console Community · 100/wk Open console ›