GitHub Action tj-actions/changed-files was compromised in supply chain attack
The GitHub Action tj-actions/changed-files was compromised, enabling attackers to extract secrets from repositories using the CI/CD workflow.
Researchers reported that threat actors compromised the GitHub Action tj-actions/changed-files, allowing the leak of secrets from repositories using the continuous integration and continuous delivery CI/CD workflow.
The tj-actions/changed-files GitHub Action is used in over 23,000 repositories, it automates workflows by detecting file changes in commits or pull requests, aiding testing, and automation.
“The tj-actions/changed-files GitHub Action, which is currently used in over 23,000 repositories, has been compromised. In this attack, the attackers modified the action’s code and retroactively updated multiple version tags to reference the malicious commit. The compromised Action prints CI/CD secrets in GitHub Actions build logs. If the workflow logs are publicly accessible (such as in public repositories), anyone could potentially read these logs and obtain exposed secrets.” states StepSecurity. “There is no evidence that the leaked secrets were exfiltrated to any remote network destination.”
StepSecurity researchers discovered a supply chain attack on March 14, 2025, where attackers modified the tool to leak CI/CD secrets from workflow logs.
“StepSecurity Harden-Runner detected this issue through anomaly detection when an unexpected endpoint appeared in the network traffic. Based on our analysis, the incident started around 9:00 AM March 14th, 2025 Pacific Time (PT) / 4:00 PM March 14th, 2025 UTC.” continues StepSecurity. “Update March 14, 2025 11:00 PM UTC: Most versions of tj-actions/changed-files are compromised.”
On March 15, the company detected multiple public repositories that had leaked secrets in build logs, allowing anyone to steal these secrets.
The CVE-2025-30066 (CVSS score: 8.6) was assigned to this supply chain attack.
The researchers noticed that compromised GitHub Action executes a malicious Python script that extracts CI/CD secrets from the Runner Worker process. Attackers retroactively altered multiple release tags to point to the same malicious commit, injecting an exploit that dumps memory and extracts sensitive data. The commit, falsely attributed to the renovate bot, downloads and executes a script from an external source, using memory forensics to locate and extract secrets.
Wiz Threat Research confirmed the secret-dumping script’s execution and identified dozens of public repositories exposing sensitive data, notifying affected parties.

“The compromised action injected malicious code into any CI workflows using it, dumping the CI runner memory containing the workflow secrets. On public repositories, the secrets would then be visible to everyone as part of the workflow logs, though obfuscated as a double-encoded base64 payload.” concludes Wiz. “As of now, no external exfiltration of secrets to an attacker-controlled server were observed; secrets were only observable within the affected repositories themselves.”
GitHub promptly removed the tj-actions/changed-files Action preventing GitHub Actions workflows from using this Action. Users should update to GitHub Action version 46.0.1 and review workflows from March 14-15 for unexpected output in the changed-files section.
“The Personal access token affected was stored as a GitHub action secret which has since been revoked,” states the project maintainers. “Going forward no PAT would be used for all projects in the tj-actions organization to prevent any risk of reoccurrence.”
Follow me on Twitter: @securityaffairs and Facebook and Mastodon
Pierluigi Paganini
(SecurityAffairs – hacking, malware)