Six npm Packages Compromised to Pull Malware Command-and-Control Addresses From Ethereum Transactions
Sonatype found six npm packages that decode malware C2 server IPs from Ethereum transaction bytes, using a technique tied to North Korea's Contagious Interview campaign.
Overview
Sonatype researchers say they have identified six npm packages — three hijacked from existing projects and three newly published — that retrieve malware command-and-control server addresses by decoding bytes out of an Ethereum blockchain transaction rather than embedding a fixed address in the package code, according to Sonatype. The technique is a variant of one first documented days earlier in a separate pair of npm packages and has been linked to North Korea’s Contagious Interview campaign, according to The Hacker News.
What We Know
- Sonatype’s research team said it found “six npm packages delivering the same malicious payload: three hijacked legitimate packages and three additional malicious packages,” according to Sonatype.
- The three hijacked packages, tracked under advisory sonatype-2026-005899, are
@kolbo/[email protected],[email protected], and[email protected], according to Sonatype. - The three newly published packages, tracked under advisory sonatype-2026-005901, are
[email protected],[email protected], and[email protected], according to Sonatype. - Sonatype said the malware “queries Ethereum for an outbound transaction from that wallet and reads bytes from the transaction’s recipient address.” “These bytes are decoded into two IPv4 addresses, which the malware treats as primary and secondary command-and-control (C2) endpoints,” according to Sonatype.
- The loader can “query several Ethereum RPC providers, race requests between them, use batched JSON-RPC calls, and fall back to the Blockscout API,” before pulling additional payload stages that are “Base64- and XOR-decoded before execution,” according to Sonatype.
- Sonatype tied the campaign to “the DPRK-linked Contagious Interview campaign” and said it uses the “NullReceiver” technique, crediting research group OpenSourceMalware with identifying it in earlier npm compromises, according to Sonatype.
- NullReceiver was first documented days earlier in two npm packages, bianira-ui and fluid-type-ui, which had 109 and 587 downloads respectively and were both published July 28, 2026 before being pulled from the registry, according to The Hacker News.
- Describing the underlying mechanism, The Hacker News reported: “Instead of hardcoding a C2 address or hiding it in transaction calldata (as in EtherHiding), NullReceiver encodes the C2 IP directly in the bytes of the recipient address of a zero-value, zero-data Ethereum transfer,” according to The Hacker News.
- OpenSourceMalware researcher Paul McCarty said “The malware looks up the attacker’s wallet, reads the destination address of its most recent outbound transaction, and decodes a C2 IP straight from those address bytes, with no smart contract and no payload field involved,” according to The Hacker News.
- The Hacker News reported that researchers subsequently identified additional packages carrying the same tactic — post-css-transfer, scrollbar-hide-plugin, tailwind-anim, tailwind-animation-founder, and tailwindcss-anim — and connected the activity to a broader, roughly five-month campaign called PolinRider spanning the npm, Go, and PHP ecosystems that used fake interviews, poisoned forks, malicious VS Code tasks, and typosquatting, according to The Hacker News.
- The Hacker News described the Contagious Interview campaign, documented by Google’s Threat Intelligence Group, as one that targets developers through fake LinkedIn job opportunities, according to The Hacker News.
What We Don’t Know
- Neither outlet disclosed download counts for the six packages Sonatype identified on August 10, unlike the download figures given for the earlier bianira-ui and fluid-type-ui packages.
- It is not established whether the six packages Sonatype found were published by the same operator behind the July 28 bianira-ui/fluid-type-ui packages or by a separate group independently using the same NullReceiver technique; Sonatype’s write-up credits OpenSourceMalware with identifying the technique but does not state that the two sets of packages share an operator.
- Neither source specified how the three hijacked packages’ maintainer accounts were compromised.
- Neither source assigned a CVE identifier to the activity; Sonatype’s internal advisory numbers (sonatype-2026-005899 and sonatype-2026-005901) are the only tracking identifiers disclosed.
Analysis
The shift from smart-contract-based command infrastructure, as seen in the older EtherHiding method, to reading raw address bytes off a zero-value transaction reflects a broader pattern in npm-targeting campaigns this year: attackers are increasingly using public, immutable, and hard-to-take-down infrastructure — blockchains rather than conventional domains or IP ranges — to hand out live C2 addresses to malware after it has already reached a developer’s machine. Because the Ethereum ledger cannot be taken offline the way a malicious domain can, defenders are left to rely on detecting the malicious code itself rather than blocking the infrastructure it eventually calls out to.