Back to all lessons
Awareness Lessons
last month

Malicious GitHub Actions Workflows Steal Secrets from Thousands of Repos

Written by AI from the linked story. Not reviewed by an editor. How this works

The GhostAction campaign demonstrates a sophisticated supply chain attack where compromised maintainer accounts were leveraged to inject malicious CI/CD workflows into thousands of open-source repositories. By abusing trusted GitHub Actions pipelines, attackers silently exfiltrated API keys, tokens, and other secrets to attacker-controlled infrastructure — a technique that is especially dangerous because workflows are often treated as trusted automation. This matters because developers and downstream users of these repositories may unknowingly execute malicious code, cascading the breach across entire ecosystems. The use of leaked credentials as the initial access vector highlights that a single compromised account in a position of trust can have outsized consequences across thousands of projects.

Tactical Insight

Immediate actions

  • Audit all GitHub Actions workflows in your repositories for unexpected changes or hard-coded external IP addresses.
  • Rotate all secrets, API keys, and tokens stored in GitHub repository secrets or environment variables immediately if compromise is suspected.
  • Enable GitHub's secret scanning and push protection features to detect and block accidental or malicious secret exposure.

Long-term improvements

  • Enforce MFA on all GitHub accounts, especially maintainers and those with write access to critical repositories.
  • Pin GitHub Actions to specific commit SHAs rather than mutable tags (e.g., `@v3`) to prevent dependency hijacking.
  • Apply the principle of least privilege to GitHub tokens and workflows, scoping permissions to only what each job requires.

Detection measures

  • Monitor GitHub audit logs and set alerts for unexpected workflow file changes, new collaborators, or unusual secret access patterns.
  • Implement OIDC-based short-lived credentials for CI/CD pipelines instead of long-lived static secrets stored in repository settings.
  • Establish a process to regularly review and verify the integrity of third-party Actions used in your pipelines against known-good versions.

Back this up with a control

All controls and vendors

Training helps people spot this. These controls make the attack fail even on the day someone does not.