Malicious B-tree NPM Package Accumulates Millions of Downloads
A malicious NPM package, indexed-btree, has been quietly accumulating millions of downloads through a sophisticated supply chain attack. The attacker leveraged a legitimate-looking GitHub repository and cleverly hid malware within the package's code, utilizing a blockchain-based command-and-control system to exfiltrate data and maintain a resilient attack. This highlights the ongoing risk of supply chain attacks within the NPM ecosystem.
The NPM ecosystem has suffered another supply chain attack in which a malicious package has accumulated millions of downloads, Checkmarx reports.
Still ongoing, the campaign has managed to bypass NPM’s recent protections by hiding a malicious trigger in the package’s JavaScript prototype code, rather than using an install script that could be detected by security solutions.
Instead of targeting highly popular packages for fast propagation, and likely immediate detection, the threat actor built trust by creating a legitimate-looking GitHub repository. The malicious package, indexed-btree, mimics the legitimate B-tree/indexing utility sorted-btree, and has reached 2 million weekly downloads before being detected, Checkmarx says.
To ensure the package’s popularity, the threat actor created a GitHub account and added seemingly legitimate commits to the indexed-btree repository. “A GitHub repository is something that attackers don’t usually bother creating. This one is clever enough to not include the malicious code. Additionally, the presence of many commits can aid in making it look like a legit repository,” Checkmarx notes.
The threat actor hid malicious code in the library’s main function, the BTree.prototype.set method, to trigger JavaScript code containing the malware’s first stage. Once executed, the malware collects system information and sends it to a hardcoded Slack channel and Telegram chat, connects to a blockchain contract deployed on Sepolia that serves as its command-and-control (C&C), extracts and decrypts the second stage from the contract, and cleans its traces.
According to Checkmarx, the attacker’s smart contract was previously found in the mutex-forge package, and the threat actor appears to have made 109 ETH (nearly $300,000).
In addition to indexed-btree, other packages linked to the supply chain campaign include ordered-kv-index, btree-leaderboard, priority-slot-queue, btree-range-store, btree-core, btree-time-index, btree-lru-cache, neighbor-key-map, and sliding-score-window, which had over 5 million downloads when removed. “This ongoing campaign is a dynamic threat to organizations, with a resilient C&C and malicious code hidden inside package code,” Checkmarx notes.
Related: Rust Team Members and Popular Crate Owners Targeted via Video Calls
Related: CrowdSec Confirms Source Code Stolen in Supply Chain Attack
Related: Brevo Supply Chain Attack Injects Malware Into 100,000 Websites
Related: Rust Supply Chain Attack Linked to North Korean Hackers