Subscribe to the Non-Human & AI Identity Journal

What is the difference between developer account compromise and secret compromise in CI/CD?

Developer account compromise gives an attacker interactive access to tools and approvals, while secret compromise gives direct machine-level access without needing a login. In supply chain incidents, both matter because a stolen token can publish code, access cloud resources, and persist after the human account is secured.

Why This Matters for Security Teams

Developer account compromise and secret compromise are often discussed together, but they create different blast radii. A stolen developer login can change code, approve builds, or alter pipeline settings; a stolen secret can skip the human layer entirely and authenticate as a workload. That distinction matters because the second path is usually faster, quieter, and more durable. The State of Secrets Sprawl 2026 found that 59% of compromised machines in a major 2025 supply chain attack were CI/CD runners rather than personal workstations, which shows how often the machine path becomes the real prize.

Security teams also need to separate identity controls from secret lifecycle controls. A compromised developer account is handled with MFA resets, session revocation, and approval review. A compromised token or certificate needs discovery, scope analysis, and immediate revocation, because it may still work even after the human account is clean. Guidance from the OWASP Non-Human Identity Top 10 reinforces that non-human credentials behave like identities, not just configuration values. In practice, many security teams encounter secret abuse only after a pipeline or cloud workload has already been used for persistence, rather than through intentional user login abuse.

How It Works in Practice

Developer account compromise starts with a person: phishing, token theft, password reuse, OAuth abuse, or session hijacking. Once inside, the attacker uses legitimate interfaces to push code, bypass reviews, approve releases, or change pipeline logic. Secret compromise starts with a credential: an API key in a repo, a token in CI logs, a certificate in a container image, or a cloud secret in a build variable. The attacker does not need the developer account if the secret already authorizes the action they want.

That difference changes the response model. For developer compromise, the priority is account recovery and trust reset. For secret compromise, the priority is finding every place the secret can be used, revoking it, and replacing it everywhere it was embedded. The practical lesson from NHIMG research such as the Guide to the Secret Sprawl Challenge and the Reviewdog GitHub Action supply chain attack is that secrets frequently spread beyond source code into build systems, collaboration tools, and generated artifacts. Current guidance suggests treating CI/CD secrets as short-lived operational trust, not reusable login assets.

  • Use separate controls for human identity and workload identity.
  • Prefer short-lived, scoped secrets over long-lived static tokens.
  • Revoke on exposure, then rotate dependent credentials and certificates.
  • Review pipeline permissions, not just repository permissions.
  • Monitor logs, artifacts, and chat tools for leaked credentials.

For implementation detail, external guidance from the Anthropic report on first AI-orchestrated cyber espionage is a useful reminder that automation amplifies credential misuse, while identity design for machines needs the same rigor as human access. These controls tend to break down when legacy CI/CD systems share static secret across many jobs because revocation becomes slow, incomplete, and operationally disruptive.

Common Variations and Edge Cases

Tighter secret controls often increase operational overhead, so organisations have to balance faster delivery against lower credential exposure. That tradeoff becomes visible in federated pipelines, container builds, and cross-account deployments, where teams sometimes keep long-lived secrets because re-authentication is hard. Best practice is evolving, but current guidance is clear: if a secret can publish, deploy, or assume privilege, it should be treated as a high-value identity, not a convenience variable.

There are also edge cases where the two compromise types overlap. A stolen developer account may expose secret stores, and a leaked secret may let an attacker mint new sessions or change approvals. That is why incident response should ask two questions at once: who was the human identity, and which machine identities were also trusted? NHIMG cases such as the Shai Hulud npm malware campaign and the CI/CD pipeline exploitation case study show why this matters across the full delivery chain. The main exception is when a secret is only used for read-only access; even then, leakage can still expose code, metadata, or internal systems for later escalation.

For supply chain teams, the safest assumption is that developer compromise is interactive and time-bound, while secret compromise is automated and repeatable until revoked. That is the operational difference security teams should design for.

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 address the attack and risk surface, while NIST CSF 2.0 and NIST AI RMF set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
OWASP Non-Human Identity Top 10 NHI-03 Secret lifecycle and rotation are central to preventing reusable machine access.
NIST CSF 2.0 PR.AC-4 Least-privilege access limits what a stolen account or secret can do.
NIST AI RMF Autonomous tooling increases the need for governed identity and runtime accountability.

Inventory secrets, rotate exposed credentials fast, and bind them to the least privilege needed.