Compromised GitHub Actions Tag: A New Vector for CI/CD Credential Theft
How the Attack Unfolded
A recent software supply chain attack has exposed a critical vulnerability in how GitHub Actions handle version tags. The popular open-source workflow actions-cool/issues-helper was hijacked when attackers redirected every existing tag in its repository to point to a malicious commit not present in the normal commit history. This allowed the injected code to harvest sensitive CI/CD credentials and exfiltrate them to an attacker-controlled server.

This incident underscores a growing threat: attackers are no longer just targeting source code but the automation pipelines that build, test, and deploy software. By compromising a widely used action, they can infect countless downstream projects with a single stroke.
The Mechanics of Tag Redirection
Git tags are meant to be immutable references to specific commits, providing stability for users who rely on versioned actions. However, in this attack, the repository maintainer’s access was apparently compromised, allowing the actor to force-push and move existing tags to a different commit. The new commit contained obfuscated payloads designed to extract environment variables such as ACTIONS_ID_TOKEN_REQUEST_TOKEN, GITHUB_TOKEN, and other secrets.
Because the tags were overwritten in place, users who referenced v1.0.0 or latest would silently pull the malicious version. The illegitimate commit did not appear in the public history, making forensic analysis difficult. This method is particularly insidious because it bypasses typical review processes – a tag that was previously trusted now executes harmful code.
What Was Stolen
The malicious action exfiltrated a range of credentials:
- GitHub tokens (including temporary access tokens for CI/CD)
- Repository secrets used for deployments
- Cloud provider credentials (AWS, Azure, GCP) if stored as environment variables
- Private keys and API keys
These credentials could be used to gain persistent access to the victim’s infrastructure, escalate privileges, and launch further supply chain attacks. Because the exfiltration occurred during the CI run, it left minimal local traces – the stolen data was sent directly to a remote server via HTTP requests or DNS tunneling.
Protecting Your CI/CD Pipeline
This attack highlights the importance of hardened practices for GitHub Actions consumption. Here are steps developers and DevOps teams should take:

- Pin actions to commit SHAs rather than version tags or branch names. SHA1 hashes are immutable and resistant to tag redirection.
- Audit action changes by reviewing commit history before updating. Use tools that compare the pinned SHA with the expected source.
- Use branch protection rules to prevent force-pushes on repositories you own. For third-party actions, vet the maintainer’s security posture.
- Limit credentials exposure by scoping tokens to the minimum necessary permissions and avoiding storing long-lived secrets in CI variables where possible.
- Enable Dependabot or Renovate to alert you to outdated versions, but cross-check updates against known security incidents.
For more on securing GitHub Actions, see the mechanics of tag redirection section above.
Lessons for the Developer Community
This incident is a wake-up call that tag-based versioning in open-source actions is not safe from malicious manipulation. The community must advocate for:
- Cryptographic signing of tags and commits so that any redirection breaks the signature chain.
- Immutable release artifacts – for instance, using GitHub Releases with checksums instead of relying solely on git tags.
- Centralized action verification platforms similar to npm’s package signatures.
Until such measures become standard, developers should treat every third-party action as potentially compromised and verify its integrity before each use.
In conclusion, the actions-cool/issues-helper compromise demonstrates that supply chain attacks are evolving beyond package repositories into the runtime layer of CI/CD. By understanding the attack vector and adopting robust defense strategies, teams can reduce their exposure to this class of threats.