ChainDrop: The Self-Propagating npm Worm That Turned Trusted Software Into a Supply-Chain Threat + Video

Listen to this Post

Featured ImageIntroduction: When a Simple npm install Becomes an Entry Point

The software supply chain depends on trust. Developers install open-source packages every day, often without examining every dependency, reviewing every release, or questioning whether a familiar package has silently changed. That trust is what makes modern software development fast—but it is also what makes supply-chain attacks so dangerous.

A newly discovered self-propagating malware campaign known as ChainDrop has exposed the scale of that risk. The worm reportedly compromised more than 1,300 npm package versions, affecting packages with a combined reach of roughly 2 billion monthly downloads. Some of the infected projects were widely used caching utilities, including Keyv, Cacheable, flat-cache, and file-entry-cache.

What makes this incident especially alarming is that the malicious releases were not distributed through obviously suspicious infrastructure. Attackers reportedly compromised a maintainer’s GitHub account, pushed malicious code into legitimate repositories, and used trusted GitHub Actions workflows to build and publish poisoned packages. As a result, the affected releases could appear authentic and carry valid provenance information.

ChainDrop is more than another malicious npm package. It represents a dangerous evolution in software supply-chain attacks: a worm capable of stealing credentials, moving between developer environments, compromising additional packages, and abusing the same automation systems organizations rely on to deliver software securely.

Original Summary: A Worm Spreads Through the npm Ecosystem

The Scale of the Compromise

Security researchers reported that ChainDrop compromised hundreds of npm packages and more than a thousand package versions. Aikido researchers identified at least 868 affected packages across 1,381 versions, although the number may continue to change as the investigation develops.

The campaign spread beyond a single developer or project. After gaining access to a package maintainer’s GitHub account, the attackers reportedly moved through connected repositories and packages associated with organizations such as Deliveroo, Ornikar, OneReach, Picsart, Qlik, and ServiceTitan.

Trusted Workflows Were Used to Deliver Malicious Releases

The attackers allegedly pushed malicious files directly into the main branches of affected repositories. They then relied on legitimate GitHub Actions workflows to build and publish new npm releases.

This created a particularly dangerous situation: the malicious packages could inherit valid provenance information because they were generated through the projects’ normal publishing pipelines.

The Malware Executed Before Installation Finished

Compromised packages included a malicious preinstall script in their package.json files:

{

scripts: {

preinstall: node setup.mjs

}
}

When a developer or automated build system ran npm install, the setup.mjs script could execute automatically before the installation process completed.

The Payload Used Bun to Launch the Infostealer

The setup.mjs dropper downloaded the Bun JavaScript runtime from an official GitHub release and used it to execute a malicious script named Math_Symbol.js.

The execution behavior was similar to:

execFileSync(bunBinary, [Math_Symbol.js], {

stdio: inherit,

cwd: scriptDirectory

});

After launching the payload, the malware reportedly deleted the temporary runtime directory in an apparent attempt to reduce visible artifacts.

Credentials Were Collected and Exfiltrated

The malicious payload searched developer systems and CI/CD environments for valuable credentials. The stolen information was reportedly encrypted before being sent to attacker-controlled infrastructure, including a public GitHub repository associated with the description:

“Shai-Hulud: Here We Go Again.”

Researchers also identified the domain npm-cache[.]com as a potential indicator of compromise connected to data exfiltration.

How ChainDrop Turned a Package Installation Into an Attack

The First Stage: Compromising a Trusted Maintainer

The attack reportedly began with the compromise of the GitHub account belonging to the maintainer of Keyv. Once attackers gained access, they no longer needed to impersonate the project from outside.

They could operate inside legitimate repositories, modify source code, and trigger established release workflows. This is a critical distinction because traditional security controls often focus on detecting unauthorized external activity rather than malicious actions performed through valid accounts.

The Second Stage: Injecting the Malicious Installer

The attackers inserted a malicious preinstall command into affected packages. npm lifecycle scripts can automatically execute commands during installation, making them powerful but risky.

A developer may believe they are only downloading a dependency, while the package manager is actually executing code on the local workstation or CI/CD runner.

The danger becomes greater when installations occur automatically inside build systems. A single dependency update can expose secrets stored in environment variables, configuration files, cloud credential stores, or deployment systems.

The Third Stage: Downloading a Legitimate Runtime

Rather than embedding every component directly inside the package, ChainDrop reportedly downloaded Bun from an official release source.

Using a legitimate runtime can help attackers avoid suspicion. Security tools may recognize the downloaded executable as a real software component, while the malicious behavior occurs through the script it executes.

This technique also demonstrates that trusted software can be misused as part of an attack chain. A legitimate binary is not automatically evidence that the activity surrounding it is safe.

The Fourth Stage: Stealing High-Value Secrets

The infostealer reportedly searched for a wide range of credentials and sensitive information, including:

Complete process environment variables.

Local configuration and credential files.

GitHub personal access tokens.

GitHub OAuth and workflow tokens.

npm publishing tokens.

GitHub Actions secrets.

AWS credentials and cloud secrets.

AWS Systems Manager Parameter Store values.

AWS Secrets Manager data.

Kubernetes secrets.

HashiCorp Vault tokens and stored secrets.

Database credentials.

Private cryptographic keys.

Stripe credentials.

Slack credentials.

Twilio credentials.

Microsoft Azure credentials.

Google Cloud credentials.

This broad collection strategy suggests that the malware was designed to compromise entire development environments rather than target only npm accounts.

The Fifth Stage: Validating Tokens Before Theft

Researchers reported that the malware checked tokens against the npm identity endpoint before exfiltrating them.

This behavior may allow the attackers to identify active and useful credentials while reducing the amount of irrelevant data they collect.

The technique also reveals a more selective operational model. Instead of blindly gathering every possible token, the malware attempted to determine which credentials were valid and potentially valuable.

The Sixth Stage: Spreading Through the Ecosystem

ChainDrop reportedly included self-propagating behavior based on the Shai-Hulud worm model.

If the malware found credentials capable of accessing other repositories or publishing additional npm packages, it could use those credentials to expand the compromise.

This creates a cascading risk:

Compromised package

Developer or CI/CD installation

Credential theft

Repository or npm account access

More malicious package releases

More installations

Further credential theft

A single compromised maintainer can therefore become the starting point for a much larger ecosystem-wide incident.

Deep Analysis: Why ChainDrop Is More Dangerous Than a Typical Malicious Package
The Attack Exploited Trust Rather Than Breaking It

Traditional malware often relies on phishing emails, malicious downloads, fake websites, or software vulnerabilities. ChainDrop reportedly used trusted development infrastructure itself.

The affected packages were distributed through npm, built through legitimate automation, and connected to real repositories. Developers may have had few obvious reasons to distrust them.

This is what makes software supply-chain attacks uniquely difficult. The malicious code can arrive through a workflow that organizations have intentionally approved.

Valid Provenance Did Not Guarantee Safe Code

Software provenance is designed to help users understand where a package came from and how it was built. However, provenance cannot always prove that the source repository or maintainer account was uncompromised.

If an attacker controls a trusted account and triggers a legitimate build workflow, the resulting artifact may still have technically valid provenance.

The lesson is not that provenance is useless. Provenance remains valuable, but it must be combined with source review, behavioral monitoring, account security, and dependency controls.

CI/CD Systems Are High-Value Targets

A developer workstation may contain source code and local credentials, but a CI/CD runner can hold far more powerful secrets.

Build systems frequently have access to:

Source repositories.

Package publishing tokens.

Cloud deployment credentials.

Container registries.

Production infrastructure.

Signing keys.

Environment secrets.

A malicious dependency installed during a build can potentially access these resources before security teams notice.

The Worm Model Creates Exponential Risk

A normal malicious package may affect only the projects that install it. A self-propagating package can potentially create new malicious releases by stealing credentials from each compromised environment.

This changes the incident from a static list of bad packages into a dynamic ecosystem threat.

The number of affected packages may continue to grow even after the original malicious release is removed because compromised credentials could remain active elsewhere.

Removing the Package May Not Remove the Threat

Deleting an affected dependency does not necessarily reverse the compromise.

If the malware executed during installation, it may already have accessed secrets, copied credentials, modified repositories, or communicated with external infrastructure.

Security teams should treat execution as the important event—not merely the presence of the package.

Deep Analysis: Defensive Commands and Investigation Steps

Check Installed Dependency Versions

Organizations can begin by reviewing installed packages and dependency trees:

npm ls keyv cacheable flat-cache file-entry-cache

To inspect all installed dependencies:

npm ls --all

For a project using a lock file, review recently changed package versions:

git diff HEAD~1 package-lock.json

Search for Suspicious Lifecycle Scripts

Search project files for preinstall, setup.mjs, and known malicious filenames:

grep -RInE “preinstall”|setup\.mjs|Math_Symbol\.js|math_init\.js .

On systems with ripgrep:

rg -n “preinstall”|setup\.mjs|Math_Symbol\.js|math_init\.js

Review npm Configuration

Check which npm registry is configured:

npm config get registry

Review npm authentication settings:

npm config list

Do not publish authentication tokens or .npmrc contents in logs, tickets, or public incident reports.

Inspect GitHub Actions Workflows

Search workflows for unexpected changes:

git log --all -- .github/workflows/

Review recent modifications:

git diff HEAD~20..HEAD -- .github/workflows/

Search for unexpected publishing commands:

grep -RInE 'npm publish|npm token|NODE_AUTH_TOKEN' .github/workflows

Search for Suspicious Network Indicators

Security teams can search proxy, DNS, firewall, and endpoint logs for references to:

npm-cache[.]com

The domain should be treated as an indicator requiring investigation, especially when observed from developer workstations or CI/CD infrastructure.

Review Environment Exposure

On a potentially compromised system, avoid printing secrets directly into shared terminals or logs. Security teams should instead identify which secret stores and credentials were available to the affected process.

Potential exposure areas include:

GitHub tokens

npm publishing tokens

AWS credentials

Azure credentials

Google Cloud credentials

Kubernetes service-account tokens

Vault tokens

Database connection secrets

Private keys

CI/CD environment variables

Rebuild Rather Than Trust a Cleaned System

If an affected package executed, a safer response may include rebuilding the developer workstation or CI/CD runner from a known-good image.

A basic recovery model is:

Isolate affected environment

Preserve logs and evidence

Identify accessible secrets

Rotate credentials

Rebuild from a trusted image

Review repositories and cloud activity

Restore only verified code and artifacts

What Undercode Say:

The Real Victim Is the Software Trust Model

ChainDrop is a reminder that the open-source ecosystem is built on an enormous chain of inherited trust. A developer may trust a package, but that package may depend on dozens of other projects maintained by people the developer has never met.

The Attack Did Not Need a Traditional Exploit

There was no need to exploit a browser vulnerability or break into a production server directly. The attackers reportedly entered through a trusted maintainer account and used ordinary development automation.

npm Lifecycle Scripts Deserve More Attention

Automatic installation scripts are convenient, but they also allow packages to execute code before developers have an opportunity to inspect the installed project.

A Dependency Is Also Executable Code

Organizations sometimes treat dependencies as passive libraries. In reality, package installation can execute scripts, download additional components, modify files, and interact with the network.

Provenance Is Necessary but Not Sufficient

Valid provenance can confirm how an artifact was produced, but it cannot always prove that the source account was secure when the artifact was created.

Identity Security Is Supply-Chain Security

Maintainer accounts, publishing tokens, and CI/CD credentials should be treated as critical infrastructure.

GitHub Accounts Can Become Release Infrastructure

When a repository is connected to automated publishing, compromising a source-control account may also provide a path to package distribution.

CI/CD Runners Are Attractive Targets

Build systems often contain secrets with access to multiple services. A compromised runner can become a bridge into cloud infrastructure and production environments.

Token Rotation Must Be Immediate

If a malicious package executed, teams should assume that accessible credentials may have been copied.

Revocation Is More Important Than Password Changes

Changing a password may not invalidate personal access tokens, workflow tokens, cloud credentials, or package publishing keys.

Secret Inventory Reduces Recovery Time

Organizations that know where their credentials are stored can respond faster than organizations that must first discover which secrets existed.

Long-Lived Tokens Increase Blast Radius

A token that remains valid for months can give attackers more time to move through repositories and infrastructure.

Short-Lived Credentials Limit Damage

Temporary credentials and workload identity systems can reduce the value of secrets stolen from a compromised build environment.

Dependency Allowlisting Can Slow Worm Propagation

Restricting installations to approved versions can prevent unexpected package releases from entering sensitive environments.

Lock Files Are Important Security Records

A lock file provides evidence of exactly which dependency versions were installed during a build.

Integrity Checks Should Be Enforced

Teams should verify package integrity rather than relying only on package names or maintainer reputation.

Package Names Are Not Security Boundaries

A familiar package can become malicious if its account, repository, or publishing workflow is compromised.

Behavior Matters More Than Reputation

A trusted package that suddenly downloads an external runtime or reads cloud credentials should trigger investigation.

Endpoint Monitoring Must Include Developer Systems

Developer workstations are often treated as lower-risk systems, even though they may contain source code, cloud credentials, and deployment access.

Security Teams Need Better Build Visibility

Organizations should know which dependencies execute during builds and what processes they launch.

Egress Controls Can Reduce Exfiltration

Restricting outbound network access from CI/CD runners can make credential theft more difficult.

Public Repositories Can Be Abused as Infrastructure

Attackers may use public code-hosting platforms for payload delivery or data staging because those services are widely trusted.

Legitimate Tools Can Support Malicious Chains

The use of Bun demonstrates that trusted software can become part of an attack without being malicious itself.

Obfuscation Remains a Warning Sign

Heavily obfuscated scripts inside a package should receive additional scrutiny, especially when they run during installation.

The Worm Can Outlive the Original Package

Even if the first compromised release is removed, stolen credentials may already have enabled new compromises.

Incident Response Must Follow the Credential Trail

Teams should investigate what the malware could access, not only which package was installed.

Repository History Must Be Reviewed

Unexpected commits, modified workflows, new release tags, and changed publishing configurations may reveal secondary compromise.

Cloud Audit Logs Are Essential

AWS, Azure, and Google Cloud activity should be reviewed for unauthorized access after a potentially exposed build environment.

Kubernetes Secrets Require Special Attention

A compromised runner with cluster access may expose workloads beyond the original development project.

Vault Access Can Multiply the Impact

A single Vault token may provide access to many unrelated application secrets.

Organizations Should Test Their Detection Layers

Security tools may record activity without generating useful alerts. Detection quality must be tested continuously.

Breach Simulation Can Reveal Blind Spots

Organizations should validate whether their SIEM, EDR, identity monitoring, and network controls can detect supply-chain behavior.

Supply-Chain Security Is a Continuous Process

There is no single control that can eliminate this risk. Security requires layered verification across identities, repositories, builds, packages, endpoints, and cloud environments.

The Ecosystem Needs Faster Shared Intelligence

Security companies, package maintainers, and affected organizations must exchange indicators quickly because worm activity can spread faster than traditional incident-response cycles.

Maintainers Need Stronger Protection

Multi-factor authentication, hardware-backed security keys, protected branches, and restricted publishing permissions should become standard for high-impact packages.

High-Download Packages Need Higher Security Standards

Packages with millions of users create systemic risk and should receive stronger monitoring and account protections.

Developers Should Treat Install-Time Code as Production Risk

A malicious dependency can execute before an application is built, tested, or deployed.

The Most Important Question Is No Longer “Was the Package Trusted?”

The better question is: What did the package execute, what did it access, and where could those credentials lead?

✅ The Attack Reportedly Affected Hundreds of npm Packages

Multiple security researchers identified a large number of compromised packages and versions. The reported figures may vary because investigations are ongoing and new affected releases may be discovered.

✅ Malicious npm Lifecycle Scripts Can Execute During Installation

npm lifecycle hooks such as preinstall can run automatically during package installation. This makes malicious lifecycle scripts a serious supply-chain risk.

✅ Valid Build Provenance Does Not Guarantee an Uncompromised Maintainer

If an attacker controls a legitimate repository or publishing account, malicious code can potentially pass through authorized build workflows and retain valid provenance metadata.

✅ Credential Rotation Is Necessary After Confirmed Execution

Removing an affected package does not invalidate credentials that may already have been stolen. Tokens, cloud credentials, package publishing keys, and other exposed secrets should be reviewed and rotated.

❌ Removing the Dependency Alone Does Not Prove the Environment Is Safe

Once the malicious script has executed, the system may already have exposed credentials or performed unauthorized actions. Recovery should focus on the entire environment and its accessible secrets.

❌ A Trusted Package Name Does Not Guarantee a Safe Release

Package reputation is useful, but account compromise, malicious commits, and poisoned release workflows can turn a previously trusted project into a distribution channel for malware.

Prediction

(-1) Supply-Chain Worms Will Continue Targeting Developer Identities

ChainDrop is likely to increase pressure on npm maintainers, GitHub administrators, and CI/CD operators to strengthen identity security. Future campaigns may increasingly focus on stealing publishing tokens and workflow credentials because one successful compromise can provide access to many downstream users.

(+1) Automated Dependency Screening Will Become More Common

Organizations are likely to expand automated checks for lifecycle scripts, unexpected network activity, obfuscated code, suspicious package updates, and unusual release behavior.

(+1) Short-Lived Credentials Will Gain Greater Adoption

More development platforms may move toward temporary tokens, workload identities, and tightly scoped permissions to reduce the value of credentials stolen from developer machines and build systems.

(-1) Trusted Automation Will Become a More Attractive Attack Surface

As software delivery becomes increasingly automated, attackers may continue abusing legitimate CI/CD workflows rather than relying only on traditional malware distribution methods.

(+1) Supply-Chain Defense Will Shift Toward Behavioral Monitoring

The next generation of package security is likely to focus less on whether a dependency is popular and more on what it actually does during installation and execution.

Final Perspective: The Chain Is Only as Strong as Its Most Exposed Identity

ChainDrop demonstrates how quickly a trusted software ecosystem can become an attack distribution network when developer accounts, publishing tokens, and automated release workflows are compromised.

The incident should not be viewed as only an npm problem. Every software ecosystem that relies on third-party dependencies, automated builds, and reusable credentials faces a similar risk.

For organizations affected by a malicious package installation, the correct response is not simply to uninstall the dependency. The environment should be investigated as potentially compromised, accessible credentials should be rotated, systems should be rebuilt when necessary, and repositories and cloud services should be reviewed for unauthorized activity.

The modern software supply chain is built on speed, automation, and trust. ChainDrop shows why those same strengths must now be protected with continuous verification.

▶️ Related Video (82% Match):

🕵️‍📝Let’s dive deep and fact‑check.

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

References:

Reported By: www.bleepingcomputer.com
Extra Source Hub (Possible Sources for article):
https://www.reddit.com/r/AskReddit
Wikipedia
OpenAi & Undercode AI

Image Source:

Unsplash
Undercode AI DI v2

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow UndercodeNews & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin | 🦋BlueSky | 🐘Mastodon | 📺Youtube