CVE-2025-30066
tj-actions/changed-files GitHub Action Embedded Malicious Code Vulnerability
Description
CVE-2025-30066 is a high-severity supply chain compromise affecting the tj-actions/changed-files GitHub Action, one of the most widely used actions in the GitHub ecosystem. On March 14-15, 2025, a threat actor modified the mutable tags v1 through v45.0.7 to point to a malicious commit (0e58ed8) containing code that extracts CI/CD secrets and dumps them to GitHub Actions workflow logs. With a CVSS v3.1 score of 8.6 and an EPSS score of 86.60% at the 99.4th percentile, CVE-2025-30066 represents one of the most impactful supply chain attacks in the GitHub Actions ecosystem. CISA has confirmed active exploitation and issued a dedicated alert.
KEV Information
CVSS Score
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:NOpen in CalculatorCWEs
Affected Products
| Vendor | Product | Version |
|---|---|---|
| tj-actions | changed-files | <= 45.0.7 |
Multiple CVSS Assessments
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
References
- https://blog.gitguardian.com/compromised-tj-actions/(Exploit, Third Party Advisory)
- https://github.com/chains-project/maven-lockfile/pull/1111(Issue Tracking)
- https://github.com/espressif/arduino-esp32/issues/11127(Issue Tracking)
- https://github.com/github/docs/blob/962a1c8dccb8c0f66548b324e5b921b5e4fbc3d6/content/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions.md?plain=1#L191-L193(Product)
- https://github.com/modal-labs/modal-examples/issues/1100(Issue Tracking)
- https://github.com/rackerlabs/genestack/pull/903(Issue Tracking)
- https://github.com/tj-actions/changed-files/blob/45fb12d7a8bedb4da42342e52fe054c6c2c3fd73/README.md?plain=1#L20-L28(Product)
- https://github.com/tj-actions/changed-files/issues/2463(Issue Tracking)
- https://github.com/tj-actions/changed-files/issues/2464(Issue Tracking)
- https://github.com/tj-actions/changed-files/issues/2477(Issue Tracking)
- https://news.ycombinator.com/item?id=43367987(Issue Tracking, Third Party Advisory)
- https://news.ycombinator.com/item?id=43368870(Issue Tracking, Third Party Advisory)
- https://semgrep.dev/blog/2025/popular-github-action-tj-actionschanged-files-is-compromised/(Third Party Advisory)
- https://sysdig.com/blog/detecting-and-mitigating-the-tj-actions-changed-files-supply-chain-attack-cve-2025-30066/(Mitigation, Third Party Advisory)
- https://web.archive.org/web/20250315060250/https://github.com/tj-actions/changed-files/issues/2463(Issue Tracking)
- https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised(Exploit, Mitigation, Third Party Advisory)
- https://www.stream.security/post/github-action-supply-chain-attack-exposes-secrets-what-you-need-to-know-and-how-to-respond(Third Party Advisory)
- https://www.sweet.security/blog/cve-2025-30066-tj-actions-supply-chain-attack(Third Party Advisory)
- https://www.wiz.io/blog/github-action-tj-actions-changed-files-supply-chain-attack-cve-2025-30066(Third Party Advisory)
- https://www.cisa.gov/news-events/alerts/2025/03/18/supply-chain-compromise-third-party-github-action-cve-2025-30066(Third Party Advisory, US Government Resource)
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2025-30066(US Government Resource)
Weakness Type
CWE-506: Embedded Malicious Code
CVE-2025-30066 is classified under CWE-506 (Embedded Malicious Code), which describes the intentional insertion of harmful code into software. A threat actor compromised the tj-actions/changed-files repository and modified existing version tags to reference a malicious commit containing the updateFeatures function, which was designed to exfiltrate secrets from CI/CD environments. This supply chain attack exploited GitHub's mutable tag system, where version tags can be retroactively modified to point to different commits.
Learn more: CWE-506 — Embedded Malicious Code
Impact Analysis
The impact of CVE-2025-30066 is primarily on confidentiality with Changed scope (S:C), reflecting that compromised secrets extend the attack far beyond the GitHub Actions environment. Confidentiality (High) is critically compromised because the malicious code exfiltrates all environment variables and secrets available to the workflow, including deployment tokens, cloud provider credentials, API keys, database passwords, and signing keys. The attack vector is network-based (AV:N) with low complexity (AC:L), requiring no privileges (PR:N) or user interaction (UI:N), as the malicious code executes automatically in any workflow using the compromised action version. Given that tj-actions/changed-files was used by thousands of repositories including enterprise and open-source projects, the blast radius of this supply chain attack is enormous. The EPSS score of 86.60% at the 99.4th percentile reflects the massive scale of exploitation, and the Changed scope means stolen credentials can be used to compromise cloud infrastructure, production deployments, package registries, and code signing systems.
Exploit Maturity
CVE-2025-30066 has confirmed, widespread active exploitation. CISA has confirmed the attack and issued a dedicated supply chain compromise alert. Public exploit analysis is available via the GitGuardian blog and the StepSecurity blog, which detail the malicious code injection and detection methods. The EPSS score of 86.60% at the 99.4th percentile reflects the massive scale of this supply chain attack, affecting thousands of repositories that used tj-actions/changed-files. Multiple security vendors including Wiz, Sysdig, Semgrep, and StepSecurity published detailed analyses, and the attack generated significant coverage across security communities including Hacker News. This incident also triggered a cascading investigation that linked the attack to a prior compromise of the reviewdog/action-setup action (CVE-2025-30154).
Remediation
-
Immediately audit all CI/CD workflows that reference tj-actions/changed-files with tag-based version pinning (v1 through v45.0.7). Check workflow run logs from March 14-15, 2025, for evidence of secret exfiltration. Any secrets visible in those logs must be considered fully compromised.
-
Rotate all compromised credentials including cloud provider keys, deployment tokens, NPM/PyPI/Maven registry tokens, database passwords, signing certificates, and any other secrets exposed as environment variables. Prioritize credentials with production infrastructure access.
-
Update to tj-actions/changed-files version 46 or later, which was released after the compromise. Pin the action to a specific commit SHA rather than a mutable tag to prevent future tag-based supply chain attacks.
-
Implement GitHub Actions security best practices: pin all actions to full commit SHAs, enable workflow permissions to read-only by default, use OIDC tokens instead of long-lived secrets where possible, configure branch protection rules, and deploy monitoring tools like StepSecurity Harden-Runner to detect anomalous workflow behavior.
-
Review downstream impact of any compromised credentials. If deployment keys were exposed, audit production systems for unauthorized changes, check container registries for tampered images, and verify package integrity in any registries where publishing credentials were exposed.
Technical Details
CVE-2025-30066 is a supply chain attack targeting the widely-used tj-actions/changed-files GitHub Action. On March 14-15, 2025, a threat actor modified the mutable tags v1 through v45.0.7 to point to malicious commit 0e58ed8, which contained an updateFeatures function designed to extract CI/CD secrets. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N reflects the network-accessible, zero-interaction nature of the attack with Changed scope due to the cascading impact beyond the workflow environment. The malicious code exploited GitHub Actions' architecture where workflows automatically fetch the code referenced by a tag at execution time. Because most repositories used mutable tag references like @v45 rather than immutable commit SHA pinning, the retroactive tag modification affected all subsequent workflow runs without any visible change to the workflow configuration files. The attack was eventually traced to a compromise chain originating from the reviewdog/action-setup action (CVE-2025-30154), demonstrating how supply chain attacks can cascade through dependency relationships in the GitHub Actions ecosystem.
Frequently Asked Questions
Is CVE-2025-30066 being actively exploited?
Yes. The tj-actions/changed-files action was actively compromised on March 14-15, 2025, affecting thousands of repositories. CISA issued a dedicated supply chain compromise alert confirming active exploitation. The EPSS score of 86.60% at the 99.4th percentile reflects the massive scale of the attack.
What products are affected by CVE-2025-30066?
The tj-actions/changed-files GitHub Action versions up to and including 45.0.7 are affected. Any repository that used this action with tag-based version pinning and ran workflows during or after the compromise window had its CI/CD secrets exposed.
How do I fix CVE-2025-30066?
Update to tj-actions/changed-files version 46 or later, pin it to a full commit SHA, and rotate all secrets that were exposed during the compromise period. Implement GitHub Actions security hardening including read-only permissions and OIDC tokens.
How severe is CVE-2025-30066?
CVE-2025-30066 is rated High with a CVSS score of 8.6 and Changed scope. The direct impact is secret exfiltration, but compromised credentials enable cascading attacks against production infrastructure, cloud environments, and package registries, making the potential downstream impact critical.
Need Help With Vulnerability Management?
Our security experts can help you prioritize and remediate vulnerabilities effectively.