Skip to content

Back to the catalog

ChainVeil and ViteVenom are DPRK’s PolinRider Campaign
opensourcemalware.comwriteup

ChainVeil and ViteVenom are DPRK’s PolinRider Campaign

OpenSourceMalware analyzes Checkmarx Zero's ChainVeil (nine malicious npm packages using a 77KB RAT and a TRON/Aptos/BSC blockchain C2 channel) and ViteVenom (seven Vite-ecosystem typosquats) reports, and shows five values -- two TRON wallets, one Aptos address, and two XOR decryption keys -- are byte-for-byte identical to infrastructure they published in March for the DPRK/Lazarus Group campaign PolinRider, predating Checkmarx's report by over 70 days. They conclude ChainVeil/ViteVenom (maintainer "successkeyteck"/SuccessKey) are PolinRider running directly against npm and Vite, and list the full chronological table of typosquatted packages, versions, and maintainers.

TL;DR Shared TRON/Aptos wallets and XOR keys prove Checkmarx's "ChainVeil"/"ViteVenom" npm campaigns are actually DPRK's PolinRider operation.
Document

What it is

OpenSourceMalware's attribution analysis arguing that Checkmarx Zero's ChainVeil (nine malicious npm packages, published under maintainer successkeyteck; Checkmarx named the operator "SuccessKey") and its sequel ViteVenom (seven Vite-ecosystem typosquats) are not a new actor but the DPRK/Lazarus PolinRider campaign running against npm and Vite. The practical payload of the page is a concrete IOC set and package list you can feed into detection.

How it works

The malicious packages use a four-tier blockchain C2 spanning TRON, Aptos, and Binance Smart Chain, delivering a 77KB RAT. Attribution rests on five values that OpenSourceMalware published in its March 8, 2026 PolinRider dossier — 100 days before Checkmarx's report and 71 days before ChainVeil's first npm package — and which reappear byte-for-byte in ChainVeil:

  • XOR key 2[gWfGj;<:-93Z^C
  • XOR key m6:tTh^D)cBz?NM]
  • TRON wallet TMfKQEd7TJJa5xNZJZ2Lep838vrzrs7mAP
  • TRON wallet TXfxHUet9pJVU1BgVkBAbrES4YUc1nGzcG
  • Aptos address 0xbe037400670fbf1c32364f762975908dc43eeb38759263e7dfcdabc76380811e

The primary TRON wallet had been rotated 17 times (17 payload updates traced to June 2025); the same wallets/keys also anchor the author's March 31 TasksJacker report. A persistent A6- marker convention is treated as an operator signature: ChainVeil markers A6-519-81, A6-420, A6-317, A6-318, plus a6-shadow-15 (tailwind-color-shades) and a6-orion-271 (secure-box).

What to do

  • Merge any separate ChainVeil / ViteVenom / PolinRider tracking entries into one.
  • Treat all versions of the listed packages as malicious — the author states these are DPRK-owned and some remain live on npm, some pulled or replaced with 0.0.1-security placeholders.

Named packages (maintainer successkeyteck unless noted):

PackageMalicious versionsCampaign
tailwindcss-animatics1.0.1ChainVeil
tailwindcss-animates-kit1.0.1ChainVeil
tailwindcss-merge1.0.1–1.0.4ChainVeil
sass-formats1.0.2–1.0.5ChainVeil
clsx-tailwind1.0.1ChainVeil
typeorm-encrypt1.0.1ChainVeil
rate-limit-flexible1.0.1, 1.0.2ChainVeil
sass-format1.0.1ChainVeil
rate-limits-flexible1.0.1ChainVeil
@vite-mcp/vite-type6.44.1 (maint. vite-mcp)ViteVenom
@vite-pro/vite-ui2.5.10 (maint. vite-pro)ViteVenom

The fetched text is truncated mid-table (@vitets/vi), so the ViteVenom list is incomplete — consult the source for the remaining entries. Also flagged as PolinRider: tailwind-mainanimation (npm user allavin).

Caveats

Attribution is blockchain-infrastructure-based. Checkmarx itself rated shared-operator only "high confidence" and explicitly noted "blockchain attribution carries inherent limitations" and that a "shared-infrastructure-as-a-service model cannot be ruled out" — i.e. shared wallets/keys don't strictly prove a single operator. The typosquat-namespace overlap is described as a pattern, not a shared IOC.

Technologies named here

  • tailwindcss-animatics
  • Checkmarx Zero
  • tailwindcss-animates-kit
  • OpenSourceMalware
  • tailwindcss-merge
  • sass-formats
  • clsx-tailwind
  • typeorm-encrypt
  • rate-limit-flexible
  • sass-format
  • rate-limits-flexible
  • @vite-mcp/vite-type
  • @vite-pro/vite-ui
  • @vitets/vite-ts
  • @vite-ts/vite-ui
  • @vite-tab/tab
  • @vite-ln/build-ts
  • @uw010010/vite-tree
  • tailwind-mainanimation
  • tailwind-color-shades
  • secure-box
  • npm ecosystem
  • Vite ecosystem
  • GitHub
  • Go
  • Packagist
  • PyPI
  • VS Code
  • npm
  • Checkmarx
  • Vite

Techniques named here

  • npm supply chain / typosquatting attack
  • Blockchain-based command and control
  • Remote access trojan deployment
  • XOR-based decryption
  • Credential harvesting via VS Code tasks
  • Wallet/infrastructure rotation
  • IOC marker naming scheme

Threat actors named here

  • PolinRider
  • ChainVeil
  • ViteVenom
  • Lazarus Group
  • TasksJacker
  • Contagious Interview
  • SuccessKey
  • DPRK