Cascading GitHub action supply chain attacks: reviewdog/action-setup leads to tj-actions/changed-files compromise
Take action: Review your code and actions for any reviewdog or tj-actions/changed-files actions - update it immediately or remove it entirely. If possible, pin GitHub Actions to specific commit hashes instead of version tags. This prevents attackers from compromising your workflow by updating a tag to point to malicious code. For example, use reviewdog/action-setup@a123b456c789d0e1 instead of reviewdog/action-setup@v1. In the meantime, review workflow logs for leaked credentials and as precaution, rotate any exposed secrets.
Learn More
A sophisticated chain of attacks, reveals how threat actors compromised popular GitHub Actions to steal critical secrets from thousands of repositories. According to a recent report by cybersecurity firm Wiz, the compromise of reviewdog/action-setup@v1 is now believed to be the initial entry point that ultimately led to the breach of tj-actions/changed-files last week.
The attack sequence appears to have followed these steps:
- Initial compromise: Attackers first targeted the reviewdog/action-setup GitHub Action, specifically its v1 tag, which was compromised between March 11, 2025, 18:42 and 20:31 UTC
- Payload deployment: A malicious base64-encoded payload was injected directly into the install.sh file used by the workflow
- Secret exfiltration: This code dumped CI runner memory containing workflow secrets to logs
- Stealth tactics: After achieving their objective, attackers force-pushed back to an older commit to cover their tracks.
- Obfuscation: The dumped secrets were double base64 encoded to avoid log masking (GitHub recognises and masks secrets if printed out to logs)
- Credential theft: The compromised reviewdog action was used by tj-actions/eslint-changed-files, which runs with a Personal Access Token (PAT)
- Secondary attack: The stolen PAT was used to compromise tj-actions/changed-files
- Large-scale impact: This subsequently affected approximately 23,000 repositories that use tj-actions/changed-files
The primary confirmed compromise was: reviewdog/action-setup@v1, but the following actions may also be impacted since they use the compromised component:
- reviewdog/action-shellcheck
- reviewdog/action-composite-template
- reviewdog/action-staticcheck
- reviewdog/action-ast-grep
- reviewdog/action-typos
For public repositories, secrets were exposed in workflow logs, though they were obfuscated as double-encoded base64 payloads. Private repositories had secrets exposed only within their own logs. No external exfiltration to attacker-controlled servers has been observed at this time.
Wiz researchers believe this may have been a targeted attack chain aimed at a specific high-value target rather than an indiscriminate campaign, given the attackers' efforts to maintain stealth.
While the exact compromise method remains under investigation, Wiz noted that the reviewdog GitHub Organization has a large contributor base and actively adds contributors through automated invites. This significantly increases the attack surface, making it possible that either a contributor's access was compromised or malicious actors gained contributor access directly.
Organizations should take the following immediate actions:
- Use GitHub queries to identify any repositories referencing the affected GitHub Actions
- Check workflow logs for evidence of compromise (look for "🐶 Preparing environment ..." lines and double-encoded base64 strings)
- Stop using impacted actions immediately and replace them with safer alternatives
- Remove all references to affected actions across all branches
- Rotate any leaked secrets as soon as possible
- Consider downloading workflow logs before deleting them for forensic purposes
- For future protection, pin GitHub Actions to specific commit hashes rather than version tags
- Use GitHub's allow-listing feature to block unauthorized GitHub Actions
- Audit past workflow runs for suspicious activity
Wiz has disclosed these findings to both reviewdog and GitHub. While the reviewdog compromise appears to have been remediated, there remains a risk of cached malicious actions and already leaked secrets