Join our Newsletter — 33% off our NHI Course

Why do GitHub Actions supply chain attacks bypass normal IAM controls?

They bypass normal IAM controls because the most sensitive access exists inside ephemeral automation, not in a permanent user session. The workflow inherits credentials for a short time, uses them automatically, and then exits. Traditional reviews focus on who approved access, but the attack occurs after access has already been delegated to the runner.

Why This Matters for Security Teams

GitHub Actions supply chain attacks are dangerous because the trust boundary is not the human account alone. The workflow runner can be granted repository-scoped tokens, cloud credentials, package publishing rights, or signing permissions that never appear in a normal user access review. Once a malicious workflow, dependency, or injected step runs, it can act with legitimate automation privileges and look routine in logs. That is why conventional IAM often misses the real blast radius.

Security teams that rely only on user lifecycle controls, MFA, and periodic access recertification usually overlook the machine path by which access is delegated. The sharper question is whether a workflow should have had that privilege at all, whether the secret was narrowly scoped, and whether the runner can be trusted for the full duration of execution. This is where identity governance, secrets management, and supply chain controls intersect.

Current threat reporting keeps reinforcing this pattern, including the kind of automated abuse described in the Anthropic first AI-orchestrated cyber espionage campaign report, where autonomous execution and delegated access made detection harder than a simple stolen password case. In practice, many security teams encounter this only after a workflow has already published, signed, or exfiltrated something it should never have touched.

How It Works in Practice

The bypass happens because GitHub Actions does not rely on a standing user session in the way classic IAM reviews assume. A workflow is triggered by code, events, or schedules, then receives ephemeral credentials or token-based access that exists only for the job runtime. If a malicious change lands in the workflow definition, a dependency is compromised, or an action is swapped for a lookalike, the runner can inherit privileges automatically without any new human login.

In practical terms, the attack path often includes:

  • compromising a maintainer or pull request path so the workflow definition is altered;
  • abusing overly broad GitHub token permissions or long-lived secrets;
  • stealing cloud credentials, package publish tokens, or signing keys from the runner;
  • using the automation path to move from source code control into build, release, or production systems.

This is why OWASP Non-Human Identity Top 10 is highly relevant here: the core problem is identity governance for workloads, not just for people. Mature controls usually combine least privilege, short-lived credentials, isolated runners, environment approvals, secret scanning, dependency pinning, and provenance checks for workflows and actions. Mapping the attack to techniques in the MITRE ATT&CK Enterprise Matrix helps teams see where credential access, execution, and lateral movement can emerge from CI/CD rather than from a user endpoint. These controls tend to break down when self-hosted runners share network trust with production systems because a compromised job can reuse local access paths and cached secrets.

Common Variations and Edge Cases

Tighter workflow control often increases build friction, requiring organisations to balance release speed against the risk of hidden privilege. Best practice is evolving, especially where reusable workflows, third-party actions, and AI-assisted development are involved, so there is no universal standard for every repository pattern yet.

Some environments are safer when they use GitHub-hosted runners with narrow token scopes, while others need self-hosted runners for performance or data residency reasons. The tradeoff is that self-hosted runners can introduce persistent state, network reach, and credential residue that make normal IAM boundaries less meaningful. Another edge case is agentic or AI-generated code changes, where the workflow may be modified by a tool rather than a person; that makes provenance and approval logic more important, not less. For broader context on recurring supply chain patterns, security teams can also track CISA cyber threat advisories and the ENISA Threat Landscape. The practical lesson is that the control question is not only who can start the workflow, but what the workflow can become once execution begins.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10 and MITRE ATT&CK address the attack and risk surface, while NIST CSF 2.0, NIST AI RMF and NIST SP 800-53 Rev 5 set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
OWASP Non-Human Identity Top 10 NHI-03 Workflows use non-human credentials and tokens that need dedicated governance.
NIST CSF 2.0 PR.AC-4 Least privilege is central when automation inherits sensitive access.
NIST AI RMF GOVERN AI-assisted or autonomous code changes need accountable oversight and risk ownership.
MITRE ATT&CK T1195 Supply chain compromise maps directly to malicious changes in build and workflow paths.
NIST SP 800-53 Rev 5 AC-6 Least privilege control is the main safeguard against overbroad runner access.

Hunt for tampering in CI/CD, dependencies, and release pipelines as attack entry points.