TL;DR: GitGuardian says three supply chain attacks across npm, PyPI and Docker Hub between April 21 and 23, 2026 were built to steal API keys, cloud credentials, SSH keys and registry tokens from developer environments and CI/CD pipelines. The security problem has shifted from package trust to secret exposure, rotation and revocation across the full NHI estate.
At a glance
What this is: This analysis shows that recent supply chain malware is optimised to harvest developer secrets from packages, images and pipeline surfaces rather than corrupt software delivery itself.
Why it matters: IAM and NHI teams need to treat repositories, CI/CD systems and developer workstations as credential-bearing attack surfaces, because exposure and revocation now matter as much as package integrity.
👉 Read GitGuardian's analysis of supply chain malware targeting developer secrets
Context
Supply chain attacks against packages and build tooling are no longer just a software integrity problem. In this case, the more relevant question is how many secrets were reachable from developer environments when malicious code executed, because credentials are the asset attackers actually monetise.
The article centres on non-human identities that live in development and delivery workflows, including API keys, cloud credentials, SSH keys and registry tokens. Those credentials often outlast the package that carried the malware, which means governance has to follow the secret lifecycle rather than stop at code trust.
Key questions
Q: What breaks when a compromised package can read secrets during installation?
A: The main failure is that package installation becomes an identity event. If the environment exposes tokens, keys, or certificates while a dependency executes, the attacker does not need application-level access first. They can steal reusable credentials and move into cloud, CI/CD, or internal systems that trust those secrets.
Q: Why do developer machines create more supply chain exposure than CI/CD pipelines alone?
A: Developer machines often hold the highest value credentials and execute unreviewed code earlier in the workflow. That combination creates a wider attack surface than CI/CD alone, because compromise can happen before code review, build controls, or release gates. Lateral movement starts when stolen tokens or keys connect into repositories and publishing systems.
Q: What are the signs that secrets are being exposed through developer tooling?
A: Look for unexpected publish events, unusual token use, unfamiliar outbound connections from runners and repeated secret discovery in files, environment variables or logs. A compromised extension or package often leaves little visual damage to code, so the stronger signal is credential activity that does not match the normal build workflow.
Q: How should security teams handle exposed developer secrets after a supply chain attack?
A: They should assume the secrets are reusable until proven otherwise, revoke them immediately, and trace where they were accepted before the compromise was contained. Developer tokens and keys often bridge source control, build systems, and cloud accounts, so response has to cover all three layers, not just the endpoint.
Technical breakdown
How install-time execution turns packages into secret harvesters
Malicious npm and PyPI packages can execute during installation through hooks such as postinstall, which means the payload runs before a developer fully trusts the dependency. At that point, the malware can enumerate environment variables, local config files, shell history, cached tokens and SSH material. The technical pattern is not just code infection. It is runtime access to whatever credentials a workstation or build runner already holds, including secrets that were never meant to leave the local context. That makes the package a delivery vehicle for credential discovery and exfiltration.
Practical implication: treat install-time execution as a credential access event, not only a software supply chain issue.
Why CI/CD pipelines and developer machines are high-value secret reservoirs
CI/CD runners, build containers and developer laptops concentrate credentials because they need access to repositories, registries, clouds and signing services. That concentration creates a broad blast radius when one trusted tool, extension or package is compromised. In these environments, a single exposed token can unlock publish permissions, cloud APIs or cross-ecosystem access, which is why the malware in this article targets environment variables, config files and cached auth material. The attacker does not need to break into production first if the pipeline already contains usable non-human identities.
Practical implication: inventory where pipeline and developer secrets exist, then reduce the privileges attached to each location.
How self-propagating malware turns one stolen token into ecosystem spread
CanisterSprawl shows the next stage of the problem: once a publish token is stolen, the malware can republish itself into new packages and move from one ecosystem to another. That is credential abuse plus propagation logic, not just one-off theft. The attack pattern matters because it turns a developer secret into a distribution mechanism, allowing a compromised account to seed additional victims across npm and potentially PyPI. The defensive lesson is that token scope, publish rights and cross-ecosystem trust relationships define propagation potential.
Practical implication: review publish-token scope and cross-package permissions as a propagation-control problem, not a routine access issue.
Threat narrative
Attacker objective: The attacker wants reusable developer secrets that enable lateral movement, package propagation and cloud or registry access across multiple ecosystems.
- Entry occurs when a trojanized package, extension or image is pulled into a developer or CI/CD environment and executed during install or use. Credential access follows as the payload searches environment variables, config files, SSH material and cloud tokens for reusable secrets.
- Escalation happens when the stolen credentials are valid enough to publish packages, reach cloud APIs or move into adjacent ecosystems such as npm and PyPI. The attacker can then reuse trusted access rather than rely on a single infection point.
- Impact is credential reuse at scale, including secret exfiltration, package self-propagation and expansion into additional developer targets. The result is broader compromise of the NHI estate and a larger attack surface than the original package infection suggested.
Breaches seen in the wild
- Miasma and Hades Supply Chain Worms: Self-propagating supply chain worms Miasma and Hades compromise npm, PyPI, and Azure credential stores.
- PyPI secrets exposure 2023: Researchers found 3,938 unique secrets in published PyPI packages, 768 still valid; a new release or yank does not remove them.
Read and download The State of NHI & AI Agent Breach Report 2026, covering 150+ breaches impacting Non-Human Identities including AI Agents.
NHI Mgmt Group analysis
Developer pipelines have become credential reservoirs, not just delivery systems. The article shows malware targeting the secrets that make software delivery possible, including cloud tokens, SSH keys and registry credentials. That shifts the governance problem from package approval to the controllability of secrets at runtime. Practitioners should stop treating the pipeline as a neutral transport layer.
Secret exposure is now the real supply chain blast radius. A compromised package matters because the token it can read or replay often outlives the code that delivered it. This is why rotation, revocation and scope reduction are now first-order controls for supply chain risk. The implication is that trust in source code is insufficient when the operational credential estate remains broad.
Ephemeral delivery does not eliminate secret persistence. Even short-lived builds can expose long-lived credentials if the runner, extension or workstation already has them cached or mounted. The named concept here is secret shadowing: credentials hidden inside development surfaces that are not governed with the same rigor as production secrets. Practitioners need to treat every development surface as part of the identity perimeter.
Cross-ecosystem token reuse is what turns one compromise into many. When the same token or workflow can publish, install or authenticate across multiple repositories and package systems, attackers inherit propagation paths that ordinary software reviews miss. This is where NHI governance meets supply chain security directly. The practical conclusion is that publish rights and secret reuse patterns deserve the same scrutiny as privileged production access.
Identity programmes must govern secrets by lifecycle, not by storage location. The article makes clear that code repositories, CI configs, environment variables and local machines all act as secret containers. That means ownership, revocation and offboarding need to follow the credential wherever it appears. Teams that only secure vaults while ignoring shadowed secrets elsewhere are leaving the highest-risk identities unmanaged.
From our research library:
- The blast radius of the Salesloft-Drift OAuth supply chain attack was 10 times greater than earlier incidents in which attackers breached Salesforce directly.
- Read next: Guide to the Secret Sprawl Challenge
What this signals
Secret shadowing: developer environments often hold more sensitive access than teams realise, and malware only needs one install-time execution path to expose it. The governance gap is not the absence of secrets management, but the fact that many secrets sit outside governed vault workflows and still remain live enough to be stolen.
When a package, image or extension can reach both build infrastructure and cloud tokens, the boundary between software supply chain security and NHI governance disappears. That is why credential rotation, publish-right scoping and environment isolation now belong in the same programme conversation.
According to the Ultimate Guide to NHIs, 96% of organisations store secrets outside of secrets managers in vulnerable locations including code, config files, and CI/CD tools. In this context, that figure is the point, not the exception: malware is finding the weakest storage location before defenders even know a package was executed.
For practitioners
- Audit developer secret surfaces Map where API keys, cloud credentials, SSH keys and registry tokens exist across repositories, CI configs, environment variables and workstations. Prioritise any surface that can execute third-party code during install or build.
- Reduce publish and build token scope Limit package publish rights, separate build credentials from release credentials and remove cross-ecosystem reuse where one token can reach more than one registry or cloud provider.
- Rotate secrets after package exposure Treat successful execution of a suspicious package or image as a trigger to revoke and reissue any credential that was reachable in that environment, including environment-stored tokens and SSH material.
- Harden CI/CD execution paths Restrict postinstall and extension execution where possible, and isolate runners so a compromised package cannot read the same secrets used for deployment or publishing.
- Track secret reuse across ecosystems Look for the same credential patterns appearing in npm, PyPI, Docker and cloud access paths, because reuse creates the propagation channel that malware can exploit.
Key takeaways
- The core risk in this article is not code tampering but the theft of reusable developer secrets that can be replayed across clouds, registries and package ecosystems.
- The supply chain blast radius grows when build tools, extensions and packages can read secrets from environment variables, config files and local caches.
- Teams that cannot rapidly revoke and replace exposed credentials will keep treating package compromise as an isolated event when it is really an identity event.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
OWASP Non-Human Identity Top 10 and MITRE ATT&CK address the attack and risk surface, while NIST SP 800-53 Rev 5 sets the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| OWASP Non-Human Identity Top 10 | NHI-02 — Secret Leakage | The article centres on secrets exposed in code, CI/CD and developer environments. |
| NHI-03 — Vulnerable Third-Party NHI | Trojanized packages and tools show third-party software exposing credentials. | |
| NHI-07 — Long-Lived Secrets | The article highlights reusable tokens and keys that remain valid after exposure. | |
| Recommendation — Scan developer and pipeline surfaces for leaked secrets and revoke any exposed credential immediately. Assess third-party packages and build tools for secret access before allowing them into trusted workflows. Replace persistent tokens with short-lived credentials and enforce rapid revocation on exposure. | ||
| NIST SP 800-53 Rev 5 | IA-5 — Authenticator Management | Credential lifecycle management is central to the exposure and revocation problem described. |
| Recommendation — Apply authenticator lifecycle controls to rotate, revoke and replace exposed development credentials. | ||
| MITRE ATT&CK | TA0006;TA0010 — Credential Access; Exfiltration | The malware's primary behavior is secret harvesting followed by off-host theft. |
| Recommendation — Map the activity to credential access and exfiltration techniques to improve detections in build and developer environments. | ||
Key terms
- Persona Shadowing: A pattern where an AI agent acts under its own identity while remaining linked to a human delegator. This preserves attribution, revocation, and auditability. It is more defensible than direct impersonation because the agent is governed as a separate subject with scoped authority.
- Install-Time Execution: Install-time execution is code that runs while dependencies are being installed rather than when an application is launched. In supply chain attacks, this matters because the install phase often has access to the richest secrets in developer and CI environments, making it a high-value privilege boundary.
- Publish token: A credential that authorises a package maintainer or automation process to publish or overwrite software artefacts. In identity terms, it is a high-value non-human credential with direct supply chain impact, so it needs rotation, scope limitation, and strict lifecycle ownership.
- Credential containment: Credential containment is the practice of preventing end users from handling the secrets that unlock backend systems. It reduces exposure by keeping passwords, keys, and tokens out of operator workflows, but it only works when revocation and logging are tied to the same control plane.
What's in the full analysis
GitGuardian's full article covers the operational detail this post intentionally leaves for the source:
- Step-by-step breakdown of the three campaigns across npm, PyPI and Docker Hub
- Payload-level detail on which secret types were targeted in each environment
- Investigative notes on the CanisterSprawl worm and its propagation mechanics
- Source analysis of why the TeamPCP pattern matters for developer credential governance
Deepen your knowledge
NHI governance, agentic AI identity, and machine identity lifecycle are core topics in our NHI Foundation Level course, the industry's only accredited NHI security programme. If you are building or maturing an IAM programme, it is worth exploring.
Published by the NHIMG editorial team on May 30, 2026.
Updated on October 7, 2026.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org