GitHub Action Breach Exposes Secrets in Hundreds of Repositories

GitHub has removed a poisoned Action used in 23,000+ repos after it exfiltrated CI secrets, prompting concerns over supply chain security.

A supply chain breach targeting a popular GitHub automation script from GitHub Actions has compromised hundreds of open-source projects, exposing sensitive CI/CD secrets such as GitHub tokens, AWS keys, and DockerHub credentials.

GitHub Actions is a powerful automation platform integrated directly into GitHub repositories, offering continuous integration and continuous delivery (CI/CD) capabilities. It allows developers to automate their build, test, and deployment pipelines, as well as other project management tasks.

The security breach, identified by GitHub security specialist StepSecurity, began on March 14th. An attacker infiltrated the ‘Changed-files’ code, injecting a harmful Python script. This script aimed to extract sensitive CI/CD credentials and display them within the build logs.

The malicious update was pushed after a threat actor hijacked the maintainer’s npm account and published a modified version of tj-actions/changed-files, a GitHub Action used in more than 23,000 repositories.

Once deployed in developer workflows, the poisoned Action silently exfiltrated environment secrets during build execution. In some cases, secrets were also leaked through CI/CD build logs.

The stolen data was transmitted to a hardcoded IP address located in Russia. While attribution remains unclear, the use of foreign infrastructure has intensified concerns about systemic vulnerabilities in GitHub’s ecosystem of trusted automation tools.

A Cascading Chain of Compromise

What initially seemed like a standalone breach quickly revealed a more complex infection path. Security analysts discovered that an earlier compromise of reviewdog/action-setup@v1—via a malicious dependency update—likely allowed the attacker to pivot laterally across projects. This upstream breach laid the groundwork for the poisoned deployment of tj-actions/changed-files.

According to BleepingComputer, the cascading nature of the incident underscores the inherent risks of interdependent Actions in GitHub workflows, where the compromise of a single dependency can silently contaminate others.

The malicious version of the GitHub Action stole secrets from CI/CD environments and uploaded them to an external server. The poisoned Action operated undetected for a period sufficient to affect at least 218 known repositories, although the true reach may be higher due to its widespread adoption.

Detection Triggered by Hardened Monitoring

The breach was ultimately uncovered by a runtime monitoring tool embedded within GitHub Actions pipelines. StepSecurity’s Harden-Runner, which enforces outbound traffic restrictions during CI builds, flagged a suspicious workflow making external network calls to an unknown IP address.

Harden-Runner detected a workflow run where the tj-actions/changed-files action was trying to send data to an IP address not associated with GitHub or any known service provider. The tool uses egress filtering to limit which services CI scripts can contact, providing a layer of behavioral enforcement that static code analyzers often miss.

Upon detecting the activity, StepSecurity’s telemetry confirmed that secrets were actively being exfiltrated. This triggered a broader review of affected repositories and initiated GitHub’s takedown of the malicious Action.

Microsoft’s Detection Systems Underperformed

Despite GitHub’s deep integration with Microsoft’s AI-powered security tools, the compromised script passed through platform defenses unnoticed.

Both CodeQL and Copilot Security—designed to flag vulnerabilities and potentially malicious logic—failed to detect the poisoned Action before it was executed in user environments.

This has prompted criticism from security professionals who argue that AI tools alone are not sufficient to detect real-time behavioral anomalies. Static analysis can identify known vulnerabilities but is often blind to dynamic threats like command-and-control exfiltration, which only manifests during execution.

GitHub has removed the compromised action from the marketplace and is contacting affected users. However, the lack of early detection has renewed scrutiny of GitHub’s trust model and its reliance on automation for platform security.

Systemic Abuse of GitHub Trust Signals

The `tj-actions` incident isn’t isolated. It reflects a broader pattern of abuse targeting GitHub’s social and reputation-based discovery systems. Malicious actors have repeatedly exploited trust signals—such as stars, forks, and comment threads—to propagate malware through seemingly legitimate repositories.

Attackers previously cloned thousands of repositories and modified them with malware, relying on fake stars and forks to manipulate visibility. A group known as Stargazer Goblin hijacked over 3,000 accounts in mid-2024 to distribute malicious code masked as software utilities. Other campaigns embedded credential-stealing malware in comment sections and deployed fake star campaigns to deceive developers browsing trending projects.

These tactics aren’t new, but the scale is escalating. A recent malware campaign leveraging fake GitHub repositories has infected nearly one million devices. The attackers redirected users from pirated streaming websites to compromised GitHub projects, exploiting the platform’s credibility to distribute malware payloads.

GitHub Response and Potential Policy Reforms

In response to the current incident, GitHub removed the infected version of `tj-actions/changed-files` and reached out to repository maintainers who had integrated it. The company is now exploring changes to how third-party GitHub Actions are managed.

These discussions reportedly include tightening default permission scopes, adding alerts when a maintainer changes or a package suddenly spikes in activity, and expanding sandboxing measures to isolate third-party code.

Such changes could reduce the damage of future compromises, though they may also introduce friction for developers relying on community-contributed automation tools.

Security advocates point to Harden-Runner as a model for future safeguards—offering real-time detection of unauthorized behavior, rather than relying solely on static review or user vetting. But unless GitHub’s trust architecture evolves, the platform may continue to be a high-value target for attackers exploiting its open design.

Balancing Automation and Risk

GitHub Actions are widely used because they streamline build, test, and deployment workflows. However, these scripts often run with elevated permissions, including access to repository content and CI secrets. When a trusted Action is compromised, the consequences ripple across every project that uses it without question.

The breach of `tj-actions/changed-files` is a case study in how small cracks in open-source supply chains can lead to widespread exposure. The Action’s popularity and its access to sensitive environment variables made it a potent vector for exploitation.

Security teams are now advising developers to audit their workflows, minimize permissions, and avoid integrating third-party Actions without a full understanding of their behavior. Until more rigorous safeguards are in place, the convenience of GitHub Actions will continue to come with hidden risks.

Markus Kasanmascheff
Markus Kasanmascheff
Markus has been covering the tech industry for more than 15 years. He is holding a Master´s degree in International Economics and is the founder and managing editor of Winbuzzer.com.
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
0
We would love to hear your opinion! Please comment below.x
()
x