A Supply-Chain Worm Is Turning a Popular npm Package Into a Credential-Stealing Machine

Listen to this Post

Featured ImageIntroduction: When a Developer Install Becomes a Security Incident

Modern software development depends on an enormous ecosystem of open-source packages. A single npm install can pull in hundreds or even thousands of dependencies, often created and maintained by people and small teams far removed from the organization using them.

That convenience has created one of the most dangerous fault lines in modern cybersecurity: the software supply chain.

The latest incident involving @7nohe/openapi-react-query-codegen is a sharp reminder of just how quickly a trusted development dependency can become an entry point into an organization’s entire engineering environment. According to Aikido Security, multiple malicious versions of the npm package were published in a coordinated campaign, turning a tool used to generate type-safe TanStack Query hooks into a vehicle for credential theft, repository compromise, and further package poisoning.

The incident is particularly concerning because the package reportedly receives more than 150,000 weekly downloads. That means the compromise was not aimed at an obscure dependency sitting unused in some forgotten project. It targeted software sitting directly inside developer machines, CI pipelines, build environments, and potentially production-oriented engineering infrastructure.

And the most unsettling part is that the attack did not stop at stealing credentials.

The malware was designed as a worm.

Once it obtained publishing tokens and repository credentials, it could potentially use those privileges to spread into other npm, PyPI, and RubyGems packages or inject malicious developer tooling into accessible GitHub repositories.

This is exactly the kind of supply-chain attack security teams have increasingly feared: one compromised package becoming the starting point for a much larger ecosystem infection.

What Happened: Ten Malicious Releases in Minutes

A Rapid and Coordinated npm Compromise

Aikido Security reported identifying 10 malicious versions of @7nohe/openapi-react-query-codegen published within approximately 20 minutes.

The package is designed to generate type-safe hooks for TanStack Query, making it part of a workflow familiar to modern JavaScript and TypeScript developers.

The speed of the publication campaign is important. Attackers did not need weeks to gradually establish themselves inside the ecosystem. Once they gained control of the relevant release mechanism, they could push malicious versions rapidly and allow automated package installation to do much of the work.

For organizations that automatically consume dependency updates, that creates a particularly dangerous window.

Why This Package Was an Attractive Target

Developers Already Trusted the Dependency

Supply-chain malware succeeds because it hides behind trust.

Developers generally do not expect a package they install through npm to behave like an information-stealing trojan. They expect it to install, compile, and perform the functionality described by its documentation.

That trust becomes extremely valuable to attackers.

Instead of convincing an employee to open a malicious attachment, an attacker can compromise a dependency and wait for developers or CI systems to execute the package’s installation process.

The resulting execution may happen automatically.

The Name Behind the Payload: “Trinitite”

A Distinctive Malware Fingerprint

Researchers identified the payload using the label:

Trinitite: Sponsored by Preview 2 Effects

The tradecraft reportedly resembles activity associated with TeamPCP-linked campaigns, although attribution remains unresolved.

That distinction matters.

Similar technical techniques can appear across different threat actors, and researchers should avoid treating malware similarities as definitive proof of attribution.

What is much clearer is the operational goal: steal credentials, gain additional access, and use those credentials to spread.

The GitHub Actions Problem

Valid Provenance Does Not Automatically Mean Safe Software

One of the most interesting aspects of this incident is the reported abuse of a GitHub Actions workflow.

The attackers are believed to have modified or abused the release process in a way that allowed malicious releases to retain valid provenance attestations.

This exposes an important misconception in modern software security.

A provenance attestation can help answer a question such as:

“Did this artifact come from the expected build workflow?”

But that is not necessarily the same as answering:

“Was the build workflow itself trustworthy?”

If an attacker compromises the workflow, credentials, repository, build logic, or release process, a cryptographically valid artifact can still contain malicious code.

Provenance tells you where something came from. It does not automatically prove that everything involved in producing it was uncompromised.

The Clever Installation Trap

binding.gyp Was Used as an Execution Mechanism

Most compromised versions reportedly weaponized a file called binding.gyp.

Normally, binding.gyp is associated with Node.js native addon compilation and the node-gyp build system.

In this attack, however, the configuration was reportedly abused as an installation-time execution mechanism.

Instead of simply compiling legitimate native code, the malicious configuration caused Python code to execute during dependency installation.

That creates a powerful attack surface because developers may trigger it merely by installing the package.

Python Class Hierarchy Abuse

Turning a Build Configuration Into Code Execution

The malicious binding.gyp reportedly abused

From there, the attacker-controlled code could import the os module and execute the obfuscated Node.js payload.

Conceptually, the chain looked like this:

npm installation → node-gyp → Python evaluation → built-in access → OS interaction → Node.js payload → credential harvesting

That is an important lesson for defenders.

A file does not need to look like a traditional executable to become an execution mechanism.

Build systems, package managers, configuration files, lifecycle hooks, and compiler tooling can all become attack surfaces.

No Native Addon Was Actually Needed

The “Build” Was a Disguise

Researchers reportedly found that no legitimate native build was necessary for the malicious behavior.

The presence of binding.gyp therefore served primarily as an installation-time execution mechanism.

Some prerelease versions reportedly used explicit preinstall scripts instead, while later versions combined multiple techniques.

That evolution suggests an attacker willing to experiment with different execution paths while maintaining the same underlying objective.

The 5.4 MB Payload

3FWCvzduYZg.js

The primary payload was identified as:

3FWCvzduYZg.js

The file is reportedly approximately 5.4 MB, compressed into a single line and protected by multiple layers of obfuscation.

Researchers identified techniques involving:

XOR-based obfuscation

AES-GCM

JavaScript obfuscation

Runtime downloading

Environment detection

Credential harvesting

Cloud credential validation

Automated exfiltration

Further propagation

The large, heavily obfuscated JavaScript file was not simply a passive downloader.

It reportedly contained functionality designed to operate as a credential stealer and as a propagation mechanism.

Downloading Bun Before Executing

Another Layer of Indirection

The malware reportedly downloaded the Bun JavaScript runtime before executing portions of its functionality.

This provides another layer between the package installation process and the actual malicious execution.

From a

Attackers can bring their own runtime environment into a compromised machine.

Anti-Analysis Checks

The Malware Did Not Want to Be Watched

The malware reportedly performed several environment checks designed to identify analysis and security research environments.

Among the reported checks were:

Russian locale settings

Security-tool directories

Known scanner decoy credentials

Research accounts

StepSecurity’s harden-runner

Other indicators associated with automated analysis

If certain conditions were detected, the malware could terminate rather than reveal its behavior.

This is classic defensive evasion.

The objective is not necessarily to defeat every security product. It is often enough to recognize common automated analysis environments and remain quiet there.

The Real Prize: Credentials

The Attack Went After the

The stolen information reportedly included a remarkably broad collection of credentials and configuration data.

Potential targets included:

GitHub tokens

npm tokens

PyPI tokens

RubyGems credentials

AWS credentials

Azure credentials

Google Cloud credentials

HashiCorp Vault credentials

Kubernetes service-account information

Kubernetes kubeconfig files

SSH keys

Docker configuration

.env files

Git credentials

Shell history

Cryptocurrency wallets

Messaging-session information

VPN configurations

Claude-related files

This is why supply-chain malware can be disproportionately dangerous.

The attacker does not need to compromise every service individually.

They can compromise the developer workstation that already has access to those services.

Cloud Metadata Is Also in the Crosshairs

From Developer Machine to Cloud Environment

Aikido Security reportedly observed functionality capable of querying cloud metadata services and validating discovered cloud credentials.

This is particularly concerning in environments where developer or CI workloads have access to cloud infrastructure.

A stolen credential can be much more valuable when the attacker can determine whether it is still valid and what environment it can access.

The attack therefore moves beyond simple information theft.

It becomes an access-discovery operation.

The Malware Exfiltration Strategy

Stolen Data Was Hidden in GitHub Repositories

The collected information was reportedly encrypted and committed to attacker-controlled GitHub repositories.

Researchers noted that these repositories were commonly named after Touhou Project characters and used the Trinitite description.

This provides defenders with useful hunting clues.

A compromised machine may not necessarily communicate with an obviously malicious command-and-control domain. Instead, stolen information can be hidden inside legitimate cloud platforms and code-hosting infrastructure.

That makes traditional network-based detection more difficult.

The Worm Changes Everything

This Was Not Just a Credential Stealer

The most dangerous characteristic of the campaign is its ability to potentially use stolen credentials to spread.

If npm, PyPI, or RubyGems publishing credentials are obtained, the malware can potentially use them to inject malicious files into other packages.

That creates a chain reaction:

Package A → stolen credentials → Package B → new victims → additional credentials → Packages C and D

This is what makes a supply-chain worm fundamentally different from a conventional infostealer.

The victim can become the next attacker-controlled distribution point without realizing it.

GitHub Repositories Can Become Weapons

Backdoors Hidden Inside Developer Tooling

Stolen GitHub credentials reportedly allowed the malware to poison accessible repositories with malicious developer configuration.

Potential targets included:

VS Code tasks

Claude Code hooks

Fake CodeQL workflows

Developer configuration files

Other automation mechanisms

This is especially dangerous because developer tooling is increasingly powerful.

A malicious task or hook may execute automatically when a developer opens a repository, runs a command, or starts a development workflow.

The supply chain therefore extends beyond packages.

It can reach the development environment itself.

Why CI/CD Systems Are Especially Vulnerable

Automation Can Turn One Compromise Into Hundreds

CI/CD environments often contain exactly what attackers want:

Cloud credentials

Deployment keys

Package publishing tokens

GitHub tokens

Secrets

Build permissions

Production-adjacent access

If a compromised dependency runs during CI installation, the attacker may gain access to a machine that is far more privileged than an ordinary developer workstation.

This is one reason organizations should never assume that package installation is a harmless preliminary step.

The Hidden Risk of Environment Files

.env Files Remain a High-Value Target

Environment files frequently contain API keys, database credentials, service tokens, and internal endpoints.

Developers may consider .env files temporary configuration rather than sensitive assets.

Attackers do not make that distinction.

When an infostealer searches broadly across a development workstation, .env files can become one of the easiest ways to discover secrets that were never intended to leave the machine.

Why npm Install Deserves More Attention

Installation Is an Execution Event

A common misconception is:

“I only installed the package. I

In reality, npm package installation can execute lifecycle scripts and trigger build tooling.

That means the boundary between installing software and executing software is much thinner than many developers realize.

For security-sensitive environments, dependency installation should therefore be treated as code execution.

Deep Analysis

Understanding the Attack Chain

At a high level, the campaign can be represented as:

Compromised Package

|
v

npm install
|
v
node-gyp / lifecycle execution
|
v

Python-based execution path

|
v

Obfuscated JavaScript payload

|

+-+

| |

v v

Environment discovery Credential theft

| |

+-+–+

|
v

Credential validation

|
v

Exfiltration

|
v

GitHub-controlled storage

|
v

Package/repository poisoning

|
v

Further propagation

Defensive Dependency Inspection

Before deploying or updating a dependency, security teams can inspect package metadata and lifecycle scripts.

npm view @7nohe/openapi-react-query-codegen versions --json

Inspect a specific version:

npm view @7nohe/[email protected] scripts --json

Review package metadata:

npm view @7nohe/[email protected] dist --json

Inspect the local dependency tree:

npm ls --all

Search a project for suspicious lifecycle hooks:

grep -R "\"preinstall\"" package.json . 2>/dev/null
grep -R "\"postinstall\"" package.json . 2>/dev/null

Look for suspicious build configuration:

find . -name "binding.gyp" -o -name ".gyp"

Search for the reported payload filename:

find . -name "3FWCvzduYZg.js" -print

Search Git history for unexpected changes:

git log --all --stat --oneline

Look for suspicious recent commits:

git log --all --since="30 days ago" --oneline

Organizations can also search repositories for unexpected VS Code automation:

find . -path "/.vscode/" -type f -print

And inspect GitHub Actions configuration:

find .github/workflows -type f -maxdepth 1 -print

These commands are defensive investigation techniques intended to help identify suspicious package installations, repository modifications, and unexpected automation.

Credential Rotation Must Come First

If a machine executed an affected package, simply uninstalling the package is not enough.

The attacker may already have copied credentials.

Organizations should therefore assume that secrets accessible to the affected environment may have been exposed.

Prioritize rotation of:

GitHub tokens

npm tokens

PyPI tokens

RubyGems credentials

AWS credentials

Azure credentials

GCP credentials

Vault credentials

SSH keys

Kubernetes credentials

Docker credentials

VPN credentials

CI/CD secrets

Revocation should happen before cleanup whenever practical.

Otherwise, investigators may spend hours cleaning malware while stolen credentials remain usable.

Investigating GitHub

Security teams should review:

git log --all --since="14 days ago"

But repository history alone is not enough.

Organizations should also inspect:

New GitHub Actions workflows

Modified workflow permissions

New repository secrets

Unexpected deploy keys

Unexpected collaborators

VS Code tasks

Developer automation files

Claude Code hooks

CodeQL configuration

Changes to package publishing workflows

A compromised token can allow an attacker to make changes that look surprisingly legitimate.

Hunting for the SHA-256 Indicator

The reported SHA-256 indicator is:

8e5d1af68ca340ae0c6e8132cb00c686ec2d60502c1994d94ce353d1472ad5a3

On Linux, defenders can search known files with:

sha256sum suspicious-file.js

For broader investigation:

find . -type f -print0 | xargs -0 sha256sum 2>/dev/null | grep 8e5d1af68ca340ae0c6e8132cb00c686ec2d60502c1994d94ce353d1472ad5a3

The presence of the hash should be treated as an investigation indicator, not as the only detection mechanism.

Dependency Pinning Matters

Using broad dependency ranges can make supply-chain incidents significantly more difficult to contain.

For example:

{
"dependencies": {
"example-package": "1.2.3"
}
}

is more deterministic than allowing a wide range such as:

{
"dependencies": {
"example-package": "^1.2.3"
}
}

Lockfiles should also be committed and protected.

npm ci

is generally preferable to unconstrained dependency installation in reproducible CI environments because it uses the lockfile as the source of truth.

But Lockfiles Are Not a Complete Defense

Pinning dependencies reduces exposure to unexpected upgrades, but it does not solve every supply-chain problem.

A compromised version can remain malicious indefinitely.

An organization may also already have a compromised version recorded in its lockfile.

Therefore, dependency security requires multiple layers:

Dependency pinning

+

Lockfile integrity

+

Package reputation

+

Malware scanning

+

Build isolation

+

Least privilege

+

Credential rotation

+

Repository monitoring

+

CI/CD hardening

No single control is sufficient.

Least Privilege for Publishing Tokens

Publishing tokens should never provide more access than necessary.

If a developer needs to publish one package, that credential should not automatically provide unrestricted access across every organization package.

The same principle applies to CI/CD.

A build job that only needs to publish an npm artifact should not simultaneously have broad AWS administrator credentials, GitHub organization-level write permissions, and unrestricted access to unrelated repositories.

Supply-chain attacks thrive on excessive privileges.

Provenance Should Be Treated as a Layer

One of the most important lessons from this incident is the difference between authenticity and security.

A valid provenance statement can provide valuable evidence about an artifact’s origin.

But if the trusted build pipeline is compromised, an attacker may still produce an artifact that passes provenance verification.

Therefore:

Provenance is evidence. It is not immunity.

Organizations should combine provenance with source review, workflow protection, build isolation, artifact scanning, and runtime controls.

What Undercode Say:

  1. The Developer Has Become a High-Value Target

Developers now sit at the intersection of source code, cloud infrastructure, package registries, CI/CD systems, and production environments.

2. That Makes Developer Machines Extremely Valuable

Compromising one workstation can provide access to dozens of unrelated services.

3. Package Managers Are Security Boundaries

An npm install operation should no longer be treated as harmless.

4. Installation Scripts Deserve Security Review

preinstall, install, and postinstall hooks can execute code before developers ever interact with the package.

5. Build Tools Can Become Attack Vectors

The abuse of binding.gyp demonstrates how legitimate development infrastructure can be repurposed.

  1. Configuration Files Can Become Executable Attack Surfaces

The malicious workflow did not need a traditional executable installer.

7. The Attack Was Designed for Scale

Credential theft alone would have been serious.

  1. The Worm Component Makes It Far More Dangerous

Stolen credentials could potentially be used to compromise additional packages and repositories.

  1. npm Is Only One Piece of the Puzzle

The malware reportedly targeted npm, PyPI, and RubyGems credentials.

10. Cross-Ecosystem Propagation Is the Nightmare Scenario

One compromised developer environment can potentially become a bridge between multiple software ecosystems.

  1. GitHub Is Becoming Part of the Supply Chain

Repositories are not simply places to store source code anymore.

12. GitHub Actions Are Infrastructure

A compromised workflow can influence what software organizations build and distribute.

  1. Workflow Security Deserves the Same Attention as Application Security

Teams should protect workflows with restrictive permissions and strong review processes.

14. Provenance Is Valuable but Limited

A valid signature or attestation should not end an investigation.

  1. Trust Must Extend Through the Entire Build Chain

Source code, workflow, dependencies, secrets, builders, and publishing credentials all matter.

  1. CI/CD Environments Should Be Treated as High-Value Assets

They frequently contain more privileges than developer laptops.

17. CI Credentials Should Be Short-Lived

Long-lived secrets give attackers a much larger window of opportunity.

18. Cloud Credentials Are Especially Dangerous

A stolen developer credential can potentially become a cloud compromise.

19. Kubernetes Credentials Raise the Stakes

A compromised kubeconfig or service account can potentially expose entire workloads.

20. SSH Keys Should Not Be Forgotten

They can provide persistent access even after the original malware disappears.

21. .env Files Remain a Persistent Problem

Secrets frequently accumulate in local development environments.

  1. Shell History Can Reveal More Than Expected

Developers sometimes accidentally place tokens and credentials directly into commands.

  1. Cryptocurrency Wallets Show How Broad the Collection Was

The malware was reportedly interested in much more than software-development credentials.

  1. Anti-Analysis Shows That the Attackers Expected Investigation

Security researchers were not an afterthought.

  1. Malware That Checks for Security Tools Is Adapting

Attackers increasingly understand how automated analysis works.

  1. Legitimate Cloud Services Can Become Exfiltration Infrastructure

Using GitHub repositories for stolen data can make malicious traffic harder to distinguish from normal developer activity.

27. Security Teams Need Repository-Level Monitoring

Unexpected commits can be as important as suspicious network traffic.

28. Developer Tooling Needs Supply-Chain Protection Too

VS Code tasks and AI coding-agent hooks can become attack surfaces.

  1. AI Development Tools Add Another Layer of Risk

Modern coding agents can interact with repositories, files, shells, and credentials.

30. Claude-Related Files Being Targeted Is Significant

Attackers are clearly paying attention to the modern AI-assisted development ecosystem.

31. Automated Updates Need Guardrails

“Latest version” should never automatically mean “trusted version.”

  1. Organizations Should Know Exactly What Their CI Installs

Blind dependency resolution creates unnecessary exposure.

33. Dependency Inventory Is Essential

You cannot protect packages you do not know you are using.

  1. Lockfiles Should Be Treated as Security Artifacts

They provide reproducibility and make dependency changes easier to investigate.

35. Security Teams Need Historical Visibility

Knowing which version was installed last week can be crucial during incident response.

36. Token Rotation Must Be Comprehensive

Changing one GitHub token does not help if AWS or npm credentials were also stolen.

37. Incident Response Should Assume Credential Exposure

If malicious code executed with access to secrets, those secrets should be considered potentially compromised.

38. Supply-Chain Security Is Becoming Identity Security

The most valuable asset may no longer be the package itself.

39. The Real Target Is Trust

Attackers exploit the assumption that trusted development infrastructure is inherently safe.

40. The Biggest Lesson Is Simple

Your dependency tree is part of your attack surface.

✅ The Package Had a Significant Download Footprint

The article reports that @7nohe/openapi-react-query-codegen receives more than 150,000 weekly downloads, making a compromise potentially impactful beyond a small group of users.

✅ Multiple Malicious Versions Were Reported

Aikido Security reportedly identified numerous malicious releases published within a short period, supporting the characterization of the event as a coordinated supply-chain compromise.

✅ The Attack Used Installation-Time Execution Techniques

The reported use of binding.gyp, Python evaluation, and package lifecycle mechanisms is consistent with the broader technical description of an attack designed to execute during installation.

⚠️ Attribution to TeamPCP Should Remain Unconfirmed

The reported tradecraft has similarities to TeamPCP-linked activity, but similarity alone does not establish attribution. The responsible actor should therefore be described as unresolved unless additional evidence emerges.

⚠️ Provenance Does Not Equal Safety

A valid build attestation can establish useful information about artifact origin, but it cannot independently prove that a compromised workflow, repository, or build environment was safe.

Indicators of Compromise

Malicious Package Versions

@7nohe/[email protected]

@7nohe/[email protected]

@7nohe/[email protected]

@7nohe/[email protected]

@7nohe/[email protected]

@7nohe/[email protected]

@7nohe/[email protected]

@7nohe/[email protected]

Malicious Payload

3FWCvzduYZg.js

Reported SHA-256

8e5d1af68ca340ae0c6e8132cb00c686ec2d60502c1994d94ce353d1472ad5a3

Immediate Response Checklist

1. Identify Affected Installations

Search developer workstations, CI runners, build containers, and dependency lockfiles for affected package versions.

2. Stop Further Installation

Prevent CI systems and developer environments from installing known malicious versions.

3. Revoke Credentials

Assume credentials available to systems that executed the malicious package may have been exposed.

4. Rotate Cloud Secrets

Prioritize AWS, Azure, GCP, Vault, Kubernetes, and other infrastructure credentials.

5. Rotate Registry Credentials

Review and rotate npm, PyPI, and RubyGems publishing credentials.

6. Inspect GitHub

Look for unexpected commits, workflows, deploy keys, repository changes, VS Code tasks, and developer-agent configuration.

7. Review CI/CD Logs

Search for suspicious network connections, unexpected package publishing, unusual workflow executions, and unknown commands.

8. Examine Package Registries

Determine whether compromised credentials were used to publish or modify other packages.

9. Investigate Downstream Repositories

If the worm obtained GitHub access, inspect repositories that the affected identities could modify.

10. Preserve Evidence

Before wiping affected systems, preserve relevant logs, package files, timestamps, Git history, and authentication records when incident-response procedures allow.

Prediction

(+1) Supply-Chain Security Will Move Closer to Developer Identity Protection

Over the next several years, organizations are likely to stop treating dependency security as merely a software-composition problem.

The industry is moving toward a broader model in which packages, developers, build systems, repositories, credentials, CI/CD pipelines, and cloud identities are treated as one connected security boundary.

That shift will likely accelerate as AI-assisted development expands.

Coding agents increasingly interact with source repositories, terminals, package managers, cloud services, and development credentials. A supply-chain compromise like this demonstrates why those capabilities need strong isolation and least-privilege controls.

The organizations that adapt early will have a significant advantage.

The ones that continue assuming that a package manager is simply a convenient way to download libraries may eventually discover that their most dangerous security incident began with something as ordinary as:

npm install

The Bigger Warning

The most frightening aspect of this campaign is not the size of the malicious JavaScript file, the obfuscation, or even the number of compromised package releases.

It is the trust relationship.

Developers trusted the package.

The build system trusted the workflow.

The package manager trusted the release.

The CI pipeline trusted the dependency.

And the organization trusted the credentials already present on the machine.

Attackers only needed to break one link.

Once they did, the rest of the supply chain became a potential path forward.

That is the uncomfortable reality of modern software development: the code you write may be yours, but the software you depend on can become someone else’s doorway into your environment.

🕵️‍📝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: cyberpress.org
Extra Source Hub (Possible Sources for article):
https://www.twitter.com
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