Article
tj-actions compromise: how to catch it in your CI
Where the tj-actions/changed-files compromise could have been caught: moved tags, encoded secrets in logs and the reviewdog link, with buyer questions.
Quick links
Press Enter to search, Esc to close
Significant cyber incident
In March 2025 the popular GitHub Action tj-actions/changed-files was compromised.
In short
In March 2025 the popular GitHub Action tj-actions/changed-files was compromised. Its version tags were changed to point at a malicious commit, so every workflow that used it printed its secrets into the build logs. GitHub's advisory says more than 23,000 repositories were affected, and CISA added the flaw (CVE-2025-30066) to its Known Exploited Vulnerabilities catalog. It matters because a trusted build step silently exposed access keys and tokens, and public logs made them readable by anyone.
On 14 March 2025 a public issue reported that several version tags of the GitHub Action tj-actions/changed-files had been changed. GitHub’s advisory says the tags were retroactively pointed at a malicious commit, so the Action ran a script that put CI/CD secrets into workflow logs.
The advisory says the exposure lasted from 14 to 15 March 2025 and affected over 23,000 repositories. In public repositories the logs were readable by anyone.
CISA says the compromise was potentially enabled by an earlier compromise of the reviewdog/action-setup@v1 Action on 11 March 2025. Both flaws were added to CISA’s Known Exploited Vulnerabilities catalog.
reviewdog/action-setup@v1 is compromised between 18:42 and 20:31 UTC, according to GitHub's advisory.
Version tags of tj-actions/changed-files are repointed to the malicious commit 0e58ed8. NVD and GitHub say the affected period is 14 and 15 March.
A public issue titled "Multiple tags in this action are compromised" is opened on the repository.
CVE-2025-30066 is published (NVD) and GitHub publishes its advisory.
A comment on the issue says the malicious commits were removed from all affected tags and that GitHub restored public access to the organization.
CISA publishes its alert and adds CVE-2025-30066 to the Known Exploited Vulnerabilities catalog (NVD records an add date of 2025-03-18).
The reviewdog maintainers publish a security advisory saying the reviewdog attack potentially led to the tj-actions compromise.
GitHub publishes its advisory for CVE-2025-30154 (reviewdog Actions). CISA updates its alert.
The reviewdog maintainers say a contributor's personal access token was compromised and used to overwrite the v1 tag.
CVE-2025-30154 is added to the Known Exploited Vulnerabilities catalog.
CISA revises its alert to add the reviewdog Actions and the KEV update.
Due date in the KEV catalog for CVE-2025-30066.
GitHub’s advisory says reviewdog/action-setup@v1 was compromised on 11 March 2025 with code that dumps secrets to workflow logs. Other reviewdog Actions that use it were also affected. CISA says this potentially enabled the tj-actions compromise.
GitHub’s advisory says attackers retroactively changed several version tags of tj-actions/changed-files so they pointed to one malicious commit (0e58ed8). NVD says tags v1 through v45.0.7 were affected on 14 and 15 March 2025. Anyone who referenced the Action by tag, the common way, pulled the bad code on its next run.
The advisory says the modified Action ran a Python script. The script scanned the memory of the runner process for secrets, encoded them in base64 and wrote them to the build log. CISA says the secrets may be hidden as a double-encoded base64 payload. In repositories with public logs, anyone could read them.
CISA and the KEV entry name access keys (AWS access keys in the KEV text), GitHub personal access tokens, npm tokens and private RSA keys. The CVE record classifies the weakness as CWE-506, Embedded Malicious Code.
The reviewdog maintainers said a contributor’s personal access token was compromised and used to overwrite the v1 tag. They said the token came from an attack on another repository. They also said contributors to reviewdog action repositories were invited automatically to a team with write access, 118 members at the time.
No source used here maps the activity to MITRE ATT&CK technique ids, so none are listed.
No public attribution. The CISA alert, the GitHub advisories, NVD and the CVE record refer to "attackers" or "a threat actor" and name no group or country. The reviewdog maintainers say they identified the contributor whose token was stolen, but do not name an actor. Sources differ on the exposure window: GitHub's advisory, NVD and the CVE record give 14 to 15 March 2025, while CISA tells organizations to check 12 March 00:00 UTC to 15 March 12:00 UTC.
GitHub's advisory says over 23,000 repositories were impacted and that the exposure ran from 14 to 15 March 2025.
Public repositories were at highest risk because their logs were readable by anyone and could already contain secrets.
CISA names access keys, GitHub personal access tokens, npm tokens and private RSA keys as examples of exposed secrets. GitHub lists API keys, cloud credentials and SSH keys as possible consequences.
NVD gives CVE-2025-30066 a CVSS 3.1 base score of 8.6 (High).
The sources used here do not give a number of stolen secrets or name victims whose secrets were abused.
The reviewdog maintainers said the stolen token came from another repository and that they found no negative impact on that repository's users.
The attack worked because existing tags were repointed to a malicious commit. A workflow that says "use v45" can change its code without any change in your repository.
GitHub's documentation says pinning to a full-length commit SHA is currently the only way to use an Action as an immutable release. Check that the SHA belongs to the Action's own repository, not a fork.
The script put secrets into build logs. In public repositories those logs were readable by anyone, so a log is not a safe place for secrets.
CISA says the reviewdog compromise potentially enabled the tj-actions one. Dependencies of your dependencies matter.
The reviewdog maintainers described an auto-invite flow giving write access to 118 members, and a stolen personal token. Tight write access and rotating tokens reduce this risk.
CISA's advice was to treat identified secrets as compromised and rotate them immediately, without waiting for proof of misuse.
Search all workflow files in your organization for third-party Actions, including tj-actions/changed-files and the reviewdog Actions CISA lists.
Look in run logs for commit 0e58ed8 or runs in the windows GitHub (14 to 15 March) and CISA (12 March to 15 March 12:00 UTC) give. For reviewdog, check 11 March 18:42 to 20:31 UTC.
CISA says secrets may appear as a double-encoded base64 payload in the log. Decode suspicious output as GitHub's advisory describes.
Rotate access keys, GitHub tokens, npm tokens and private keys that were available to affected workflows.
Replace tag references with full-length SHAs and consider the repository or organization policy that requires pinning.
Check who has write access to repositories and tags you own, and review personal access tokens and automatic invitations.
Review which repositories have public workflow logs and what secrets their workflows can reach.
The identifier for the compromise of the GitHub Action tj-actions/changed-files. NVD says it allows remote attackers to discover secrets by reading actions logs.
GitHub's advisory says over 23,000 repositories were impacted.
GitHub's advisory, NVD and the CVE record say 14 and 15 March 2025. CISA advises checking from 12 March 00:00 UTC to 15 March 12:00 UTC. Sources differ.
CISA says the tj-actions compromise was potentially enabled by the compromise of reviewdog/action-setup@v1 (CVE-2025-30154) around the same time.
Yes. CISA added CVE-2025-30066 on 2025-03-18 and CVE-2025-30154 later in March 2025.
There is no public attribution in the sources used here.
Update to version 46.0.1 or later, rotate any exposed secrets, and pin Actions to full-length commit SHAs, as CISA and GitHub advise.
Take control of your digital security with an exclusive demo of our AI-driven threat intelligence platform.