TL;DR: A compromise in tj-actions/changed-files injected code that printed API keys, tokens, and credentials into GitHub Actions build logs, with pinned tagged versions also vulnerable when tags were retargeted, according to Exaforce. The incident shows that supply chain trust, not just workflow hygiene, is the core control failure for CI/CD secrets governance.
At a glance
What this is: A GitHub Actions supply chain compromise exposed CI/CD secrets by turning a widely used action into a log-printing payload, with retargeted tags widening the blast radius.
Why it matters: IAM, PAM and CI/CD teams should treat third-party workflow actions as identity-bearing dependencies, because token scope, trust anchoring and log exposure determine whether secrets become immediately reusable.
By the numbers:
- Since March 14, 2025, Exaforce has been helping design partners respond to the compromise.
- The compromise led to CVE-2025-30066.
Context
GitHub Actions supply chain risk arises when trusted third-party workflow components are altered and then execute inside build pipelines with access to secrets, artifacts and logs. In this case, the core issue is not only malicious code, but the trust model that lets a reusable action inherit workflow permissions and secret visibility across repositories.
For identity and access teams, the intersection is clear: CI/CD actions function like non-human identities with delegated authority, and their tokens, permissions and runtime behaviour need lifecycle governance. When public logs can expose credentials, the problem becomes both supply chain security and NHI secret governance.
Pinned references reduce version drift, but they do not eliminate trust in the upstream maintainer, tag integrity or the action’s execution path. That makes this incident typical of modern pipeline compromise patterns rather than an isolated GitHub-specific failure.
Key questions
Q: What happens when a malicious GitHub Action is used in a CI/CD pipeline?
A: When a malicious action is executed inside CI/CD, it inherits the permissions and context granted to that workflow. It can steal secrets, modify source code, introduce backdoors, or push changes into other repositories that trust the same credentials. The impact can spread beyond one build run because compromised automation often has access to assets that developers assume are routine and safe.
Q: Why do compromised workflow actions create broader risk than a single bad commit in a repository?
A: A compromised workflow action can expose any secrets passed into that workflow, especially when logs are public or broadly accessible. The risk expands beyond the code change itself because the malicious logic can capture credentials, touch multiple repositories, and persist until affected versions are identified, workflows are reviewed, and leaked secrets are rotated.
Q: What are the signs that a third-party CI/CD action may be unsafe to keep using?
A: Look for tag retargeting, unexplained workflow changes, unexpected log output, secret values appearing in job logs and actions that require more permissions than the task justifies. Those are practical indicators that the dependency trust boundary has already weakened.
Q: How should teams respond when build logs may contain leaked secrets?
A: Treat the logs as a disclosure source, not just an investigation record. Identify every secret that may have been printed, revoke or rotate the affected credentials, review downstream systems that used them, and tighten workflow permissions so the same build path cannot expose credentials again.
Technical breakdown
How a compromised GitHub Action turns into a secret exposure path
A GitHub Action runs inside the CI/CD runner with the permissions, environment variables and secret material assigned to the workflow. If the action code is altered upstream, every repository that consumes it can execute the malicious payload without changing local pipeline logic. In this case, the payload did not need to steal secrets over the network to be effective. Printing values into logs was enough because build logs are often broadly accessible, retained for troubleshooting and copied into downstream systems. The control weakness is the assumption that a trusted action remains trustworthy after publication.
Practical implication: Treat reusable actions as privileged runtime dependencies, not passive libraries.
Why tag pinning does not fully solve supply chain trust
Tag pinning helps if a tag remains immutable, but it fails when a maintainer or attacker can repoint the tag to a different commit. That creates a false sense of stability because the workflow appears locked while the underlying code can still change. Commit SHA pinning is stronger because it anchors execution to a specific revision, but even that does not address the broader issue of third-party dependency trust, maintainer compromise or malicious updates elsewhere in the dependency chain. The real governance question is whether the pipeline can verify integrity at execution time, not only at configuration time.
Practical implication: Use immutable commit SHAs and review upstream trust boundaries for every external action.
Why public logs and broad token scope magnify blast radius
Secrets become materially more dangerous when the pipeline can print them into logs and the tokens that protect those workflows can perform more actions than necessary. Public repositories are especially exposed because anyone can inspect logs, but private logs are not a complete defence if access is overly broad or if logs are forwarded into shared observability systems. This is where least privilege and secret minimisation intersect. If a workflow only needs file-change detection, it should not hold reusable credentials that can reach unrelated systems. The exploit succeeds when disclosure, scope and retention line up.
Practical implication: Restrict workflow permissions, minimise secret scope and assume exposed logs are compromise evidence.
Threat narrative
Attacker objective: The attacker’s objective was to surface usable CI/CD secrets from trusted build pipelines and expand access into affected environments.
- Entry occurred through a malicious commit that altered tj-actions/changed-files and spread the payload across tagged releases used by many workflows.
- Credential exposure followed when the injected script printed API keys, tokens and credentials into GitHub Actions build logs instead of sending them off-host.
- Impact was public secret exposure across affected repositories, creating immediate downstream risk of reuse, impersonation and further compromise.
Breaches seen in the wild
- reviewdog Action compromise 2025: A stolen maintainer token poisoned reviewdog/action-setup, leaking CI secrets including the tj-actions bot token used in the next attack.
- Nx s1ngularity attack 2025: Attackers stole Nx's npm token via a GitHub Actions flaw and shipped malware that stole 2,349 secrets and abused developers' AI CLIs.
Read and download The State of NHI & AI Agent Breach Report 2026, covering 200+ breaches impacting Non-Human Identities including AI Agents.
NHI Mgmt Group analysis
Supply chain trust is now an identity control problem: when a third-party action executes inside a pipeline, it inherits delegated authority over secrets, logs and downstream systems. That makes the action closer to a non-human identity than a static dependency, because its effective privilege is determined at runtime. For practitioners, the governance boundary is no longer the repository alone; it is the trust relationship between workflow, maintainer and execution context.
Log exposure is the real blast-radius amplifier: the compromise mattered because sensitive values landed in build logs that are often retained, replicated and accessible beyond the original runner. This is a classic control-gap pattern in CI/CD security: disclosure paths are treated as diagnostics, not as protected data flows. The named concept here is pipeline secret spillover, where a transient runtime event turns into durable secret exposure.
Retargeted tags expose weak release governance: pinning to a tag is only as strong as the integrity of the tag itself, and this incident shows why release references need stronger immutability guarantees. In NHI terms, the problem is not just a compromised action, but an unmanaged trust anchor for a workload-level identity. Practitioners should treat external actions as governed dependencies with explicit ownership, provenance and revocation paths.
Least privilege must extend to automation identities: workflow tokens and service credentials should be scoped to the narrowest viable task, because a compromised action only needs one over-extended permission set to create broad exposure. This is where CI/CD governance meets PAM discipline: the machine path needs the same entitlement scrutiny as a human admin path. The practical conclusion is straightforward, containment starts before execution, not after the log is written.
From our research library:
- 92% of organisations expose NHIs to third parties, raising concerns about supply chain security, according to the Ultimate Guide to NHIs.
- Breaches involving third parties rose to 48% of all breaches, a 60% increase on the previous year, according to Verizon's 2026 Data Breach Investigations Report.
- Read next: CI/CD Pipeline Identity Security Guide
What this signals
Pipeline secret spillover: CI/CD pipelines fail when transient runtime output becomes durable credential exposure. Once secrets appear in logs, the question shifts from detection to revocation, because the disclosure itself is the compromise boundary.
External workflow actions should be governed like workload identities, with provenance, scope and revocation controls that match their delegated access. That is where NHI governance adds value to an otherwise generic supply chain discussion.
The broader programme signal is that build security, secret management and identity governance can no longer be separated. Teams need to know which automation identities can reach production, which can print logs, and which can be cut off immediately when provenance changes.
For practitioners
- Remove untrusted third-party actions from critical workflows Inventory all repositories using external GitHub Actions and replace high-risk dependencies in release and deploy pipelines first. Treat actions that can access secrets, write artifacts or touch production as privileged components requiring explicit approval.
- Pin external actions to immutable commit SHAs Replace version tags with commit SHAs for every third-party action, and verify that repository owners cannot silently retarget references in ways your governance process would miss.
- Review workflow token scope and secret exposure paths Apply least privilege to GITHUB_TOKEN and any reusable credentials, then check which workflows can print secrets into logs, artifacts or external monitoring streams.
- Search logs for exposed CI/CD secrets Review historical GitHub Actions logs around the compromise window and assume any secret that appears in output has already been exposed for reuse or impersonation.
- Create an incident-ready rotation path for pipeline secrets Predefine ownership and revocation steps for API keys, tokens and passwords used by build automation so secret rotation is immediate when a workflow dependency is compromised.
Key takeaways
- A poisoned GitHub Action can turn a normal CI/CD job into a secret exposure event if the workflow has broad permissions and logs are accessible.
- The incident shows why tag pinning alone is not enough when release references can be retargeted and third-party code can still inherit trusted execution.
- The control that matters most is trust governance for automation identities, including immutable references, least-privilege tokens and rapid secret rotation.
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 CIS Controls v8 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 printed into build logs after a compromised action executed. |
| NHI-03 — Vulnerable Third-Party NHI | The compromised GitHub Action behaves like a third-party non-human identity with delegated access. | |
| NHI-07 — Long-Lived Secrets | The incident shows why reusable API keys and tokens become high-risk once exposed in logs. | |
| Recommendation — Scan pipelines for secret leakage and revoke any credentials exposed in build output immediately. Review third-party automation dependencies and restrict trust in externally maintained non-human identities. Replace long-lived pipeline secrets with short-lived credentials and rotate any leaked values at once. | ||
| MITRE ATT&CK | TA0006;TA0010 — Credential Access; Exfiltration | The attack path used credential exposure through logs rather than direct network theft. |
| Recommendation — Map log-based secret exposure to credential access and exfiltration techniques to improve detections. | ||
| CIS Controls v8 | CIS-5 — Account Management | The article emphasises scoped tokens, secret rotation and control over automation accounts. |
| Recommendation — Apply account management controls to automation identities and remove unnecessary permissions from workflow tokens. | ||
Key terms
- GitHub Action Supply Chain Compromise: A compromise in which a third-party GitHub Action or its repository is altered so downstream workflows execute attacker-controlled code. The risk comes from the trust relationship between the workflow and the action reference, especially when teams rely on mutable tags rather than immutable commit identifiers.
- Endpoint Secret Spillover: Endpoint secret spillover occurs when a local compromise exposes both human and non-human credentials stored on the same machine. The problem is wider than malware infection because one workstation can hold browser sessions, cloud tokens, SSH keys, and application credentials that all become reusable by an attacker.
- Session Token Exposure: Session token exposure occurs when authentication tokens or session artifacts are stored, transmitted, or logged in places they should not be. Once exposed, they can function like reusable credentials. This makes them part of identity and access risk, not only application behaviour.
Deepen your knowledge
The NHI Foundation Level course, the industry's only accredited NHI security programme, covers NHI governance, workload identity and secrets management in the context of modern automation. It helps security, IAM and platform teams align delegated access with real operational risk.
Published by the NHIMG editorial team on August 2, 2026.
Updated on October 12, 2026.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org