ChainVeil is a malicious software supply-chain operation centered on trojanized npm packages that execute payloads when imported rather than during installation. The activity has been attributed to the threat actor SuccessKey and is assessed by multiple researchers as part of the broader DPRK-linked PolinRider cluster. The campaign targeted software developers by publishing typosquatted and impersonating packages in the JavaScript ecosystem, including packages themed around common development tooling.
The malware chain uses a staged loader architecture backed by a resilient multi-tier command-and-control design that leverages Tron, Aptos, and Binance Smart Chain as dead-drop infrastructure for payload resolution. The initial package-resident code retrieves encrypted next-stage data from blockchain pointers, decrypts it, and executes it either directly in the main process or in a detached hidden child process. The final payload is a remote access trojan that provides reverse shell access, arbitrary command execution, JavaScript execution, background process spawning, process termination, system profiling, file upload, and recursive directory upload.
ChainVeil is also designed for credential access and data theft. Observed behavior includes harvesting shell configuration data, SSH material, and npm authentication data, with macOS-focused collection extending to exported Keychain-derived OAuth material. The malware exfiltrates stolen files and collected data to attacker-controlled infrastructure. For persistence, it appends hidden code to user shell startup files so the malware is re-executed when a new terminal session opens.
The malware incorporates defense-evasion and anti-analysis measures, including CI and sandbox detection, anti-debugging logic, obfuscation, anti-tampering checks, and replay-guard behavior. Related follow-on activity, especially ViteVenom, shares the same final RAT payload, overlapping blockchain infrastructure, and decryption logic, indicating either the same operator or a closely shared backend. ChainVeil primarily affects developer workstations running Node.js tooling on Linux and macOS, and can expose source code, credentials, and downstream software supply chains through compromised maintainer environments.
Mallory pivots from this family to the IOCs, detections, and named campaigns that touch your stack, and pages you when something new lands.
2 distinct threat actors attributed by public researchers. Open in Mallory to see the full evidence chain and overlapping campaigns.
We are tracking this campaign as ChainVeil , attributed to the actor SuccessKey , and it appears to have been active since at least May 2026.
24 distinct techniques documented for this family, organized by ATT&CK tactic.
Every time the developer opens a new terminal, the malware re-executes
Every time the developer opens a new terminal, the malware re-executes
The rest of lib/lib.min.js is wrapped in an immediately-invoked function containing the YWG shuffler — a custom obfuscation layer
ViteVenom makes use of scoped package names in an attempt to impersonate the "@vitejs/*" namespace and lend it a veneer of legitimacy.
require ( 'child_process' ). spawn ( 'node' , [ '-e' , "global['_V']='" + campaignId + "';" + payload2 ], { detached : true , stdio : 'ignore' , windowsHide : true })
On macOS, it additionally reads Keychain exports, filtering for OAuth tokens
const platform = os.platform(); const hostname = os.hostname(); const uid = os.userInfo().uid
harvest ( "~/.bashrc" , ".bashrc" ); ... harvest ( "~/.ssh/" , ".ssh" ); harvest ( "~/.npmrc" , ".npmrc" );
If the Tron-based payload retrieval method fails, the malware uses Aptos as a backup.
Stage 2B — the detached hidden process — skips the blockchain chain and fetches directly from the C2 over HTTP
10 indicators attributed across vendor reports, sandbox runs, and researcher write-ups. Full values are available in Mallory.
IPs, domains, and DNS infrastructure linked to this family.
File hashes (MD5, SHA-1, SHA-256) from samples and reports.
Other indicator types observed in public reporting.
7 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
Mentioned as a related DPRK/PolinRider-associated package set used for comparison and infrastructure overlap, not the main subject of this reference.
An earlier software supply chain attack referenced as the tactical predecessor to ViteVenom.
Previously referenced npm malware mentioned as the precursor to ViteVenom.
Named malware/tool referenced as part of DPRK's PolinRider campaign.
Match every observed IP, domain, and hash against your live telemetry.
Named campaigns wielding this family, with evidence pinned to each claim.
CVEs this family uses for access and lateral movement.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Every documented technique, ranked by evidence weight.
Reddit, Mastodon, and CTI community discussion around this family.