# tj-actions/changed-files tags repointed to dump CI secrets into logs

Source: https://startwithidentity.com/cves/cve-2025-30066/
Last updated: 2026-11-05
License: content by Start with Identity. Cite the source URL.

---

## What broke

On March 14 and 15, 2025, an attacker modified version tags of the tj-actions/changed-files GitHub Action, v1 through v45.0.7, so they pointed at a malicious commit (0e58ed8). Any workflow that referenced the action by tag ran that code. It downloaded a Python script that read the memory of the GitHub Actions Runner Worker process, base64-encoded the secrets it found, and printed them into the build log. On a public repository those logs are readable by anyone. NVD scores it CVSS 3.1 8.6, and the CWE is CWE-506 (embedded malicious code). The GitHub advisory says more than 23,000 repositories used the action; v46.0.1 is the fixed release.

CISA added it to KEV on March 18, 2025 and listed what the logs could hold: AWS access keys, GitHub personal access tokens, npm tokens and private RSA keys. CISA also said the compromise was potentially enabled by an earlier compromise of reviewdog/action-setup@v1 (CVE-2025-30154).

## Why it matters

No password or login was involved. The identities at risk were the pipeline's own credentials: every token and cloud key a workflow could read became readable by whoever watched the log. A CI job is a [non-human identity](https://startwithidentity.com/glossary/workload-identity/) with standing access to registries, clouds and source code, and it trusted a mutable tag to decide which code ran with those secrets in memory. This is the [secrets in repositories and CI](https://startwithidentity.com/techniques/secrets-in-repositories-and-ci/) pattern at scale.

## What to do

- Pin third-party actions to a full commit SHA, not a tag. Tags can be moved; a SHA cannot.
- Search workflow runs from March 14 and 15, 2025 for changed-files output, and decode any base64 blobs (the advisory gives the command).
- Replace long-lived cloud keys in CI with short-lived credentials through [workload identity federation](https://startwithidentity.com/glossary/workload-identity-federation/) (GitHub OIDC to AWS, Azure or Google Cloud).
- Restrict outbound network access from runners so a step cannot fetch a script from an unexpected host.

## After you patch

- Rotate every secret any affected workflow could read, not only the ones you find in logs. See [secrets rotation](https://startwithidentity.com/glossary/secrets-rotation/).
- Review the audit trail of each rotated token for use between March 14, 2025 and the rotation date.

## Sources

- [NVD: CVE-2025-30066](https://nvd.nist.gov/vuln/detail/cve-2025-30066)
- [GitHub Security Advisory GHSA-mrrh-fwg8-r2c3](https://github.com/advisories/GHSA-mrrh-fwg8-r2c3)
- [CISA: Supply chain compromise of tj-actions/changed-files and reviewdog/action-setup@v1](https://www.cisa.gov/news-events/alerts/2025/03/18/supply-chain-compromise-third-party-tj-actionschanged-files-cve-2025-30066-and-reviewdogaction)
- [CISA Known Exploited Vulnerabilities catalog, added March 18, 2025](https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2025-30066)
