By NHI Mgmt Group Editorial TeamBased on Truffle Security: “CISA's Leaked Admin GitHub Token Remained Live 2 Days After Krebs Reported It Leaked” (May 22, 2026)

TL;DR: Truffle Security reports that a GitHub App private key granting write access to CISA’s GitHub organisation stayed live two days after public disclosure, alongside other active tokens, passwords, and keys hidden in encoded Terraform configs. Secret removal is not remediation when discovery, revocation, and recursive decoding lag behind exposure.


At a glance

What this is: Truffle Security shows that a leaked GitHub admin credential and multiple other live secrets persisted in CISA-related infrastructure after public reporting, revealing a secret sprawl problem rather than a single isolated leak.

Why it matters: IAM, PAM, and NHI teams should treat secret removal, revocation, and encoded-secret detection as one governance workflow, because a deleted file does not equal a revoked credential.

👉 Read Truffle Security's analysis of CISA’s leaked GitHub admin key and secret sprawl


Context

Secret sprawl is the operational problem here: credentials, keys, and tokens are distributed across repositories, build files, and encoded blobs, so exposure can remain active even after the original file is removed. In this case, the critical issue was not just that a secret existed, but that it continued to grant access after public disclosure.

For identity programmes, the lesson is that non-human identity governance cannot stop at inventory. Service access, GitHub App keys, vendor tokens, and archived repository artefacts all need discovery, ownership, and revocation paths that are tested together, not handled as separate clean-up tasks.


Key questions

Q: What breaks when a leaked GitHub App key is treated like an ordinary file secret?

A: The incident response model breaks because the credential can stay valid after the file is removed, and the attacker may still be able to authenticate directly to the platform. For GitHub App keys, the real control point is revocation at the issuer and confirmation that the target no longer accepts the key.

Q: Why do leaked non-human credentials require immediate revocation instead of simple deletion?

A: Because deletion only removes one copy of the exposure, while the credential may already exist in caches, archives, forks, or downstream systems that still trust it. Immediate revocation is what cuts off usable access and prevents the leaked secret from remaining an active identity.

Q: How can security teams tell whether secret scanning is actually catching the risky credentials?

A: A useful programme finds nested, encoded, and context-dependent secrets, not just obvious plaintext keys. If the scanner cannot detect credentials hidden inside Terraform, JSON, or base64 layers, it is missing the secrets that most often survive casual cleanup and continue to authenticate.

Q: Should organisations prioritise GitHub App keys over low-value tokens during exposure response?

A: Yes. Organisation-wide GitHub App keys can change repository settings, manage runners, and expose workflow data, so they create a much larger blast radius than a typical service token. Exposure response should always sort credentials by reachable privilege and operational impact.


Technical breakdown

Why encoded secrets evade standard scanning

Secret scanners that look for obvious plaintext patterns miss credentials that are wrapped in layers such as base64 inside JSON inside Terraform strings. That matters because the secret is still live even when it is not human-readable, and the discovery problem becomes one of decoding and context rather than simple pattern matching. In this article, Truffle Security showed that a key classified as a generic private key only became meaningful when paired with the GitHub App ID and validated against the GitHub API. Practical implication: detection has to include recursive decoding and secret-to-application correlation, not just regex matching.

Practical implication: Add recursive decoding and application-context correlation to secret discovery so encoded credentials are not treated as inert noise.

GitHub App keys are privileged non-human identities

A GitHub App private key is not just another file secret. It authenticates a non-human identity that can be granted organisation-wide permissions, including repository administration, self-hosted runner management, and workflow visibility. When that key is compromised, an attacker can move from credential possession to control of repository settings and CI/CD execution paths. In this incident, the key had write access across the organisation, which makes it a governance problem as much as a leakage problem. Practical implication: treat app keys as high-risk NHI credentials with explicit ownership, scope, and revocation procedures.

Practical implication: Classify GitHub App keys as privileged NHI credentials and govern them with the same rigor as other high-impact machine identities.

Secret deletion is not credential revocation

Removing a repository or deleting the file that exposed a secret does not necessarily revoke the credential, and it certainly does not erase copies already captured in archives or forks. Truffle Security’s analysis shows that the lifecycle gap sits between discovery and actual revocation: a leaked secret can remain valid while the organisation believes the incident has been handled. The important control question is whether the credential itself was invalidated everywhere it could still be used. Practical implication: offboarding must target the secret, its issuer, and any downstream replicas, not just the source file.

Practical implication: Build revocation steps that target the live credential everywhere it may still be accepted, not just the leaked file.


Threat narrative

Attacker objective: Use the leaked GitHub App key to gain organisation-wide GitHub control and reach workflow secrets, deployment credentials, and repository settings.

  1. Entry occurred when a GitHub repository exposed a GitHub App private key and other credentials in Terraform and related configuration files. Credential access became possible because the attacker only needed the key material and supporting App ID to authenticate.
  2. Privilege abuse followed when the GitHub App key was validated successfully and shown to have write access to the organisation, including administration and self-hosted runner permissions. That access extended beyond code reading into repository control and CI/CD execution paths.
  3. Impact would have included malicious runner registration, repository setting changes, access to workflow logs, and exposure of secrets or deployment credentials touched by GitHub Actions workflows. The article shows that the credential remained active long enough for this to be a real operational risk.
  4. The attacker objective is to turn a leaked GitHub App key into organisation-level control of repositories and CI/CD activity, with the ability to reach adjacent secrets and deployment material.

Read our 52 NHI Breaches Analysis report for a comprehensive view of breaches impacting Non-Human Identities including AI Agents.


NHI Mgmt Group analysis

Secret sprawl becomes a governance failure when the credential remains live after disclosure: The article is not really about one bad file, but about the gap between exposure, detection, and true revocation. Once a secret can survive public reporting for days, the control failure is lifecycle management, not simply repository hygiene. Practitioners should read this as evidence that secret inventory without validated revocation produces false confidence.

GitHub App keys are high-risk non-human identities, not ordinary application artefacts: The leaked key carried organisation-wide permissions, runner management rights, and repository administration scope. That combination puts it squarely in the privileged NHI category, where standing access and broad blast radius matter more than where the key was stored. IAM teams should classify these keys by reachable authority, not by file type.

Recursive decoding is now part of secret discovery, not a forensic luxury: The article shows that meaningful credentials can sit multiple encodings deep inside otherwise ordinary infrastructure code. That means detection maturity is measured by whether teams can identify the effective secret, not whether they can match the first visible wrapper. The practitioner conclusion is that discovery engines must understand context, nesting, and issuer relationships.

Deletion without revocation is a broken operating assumption: The old assumption was that removing the exposed file meaningfully reduces risk. That assumption fails when the same credential can be copied, cached, archived, or still be valid in the target system after the file disappears. The implication is that identity governance must treat exposure as a live credential state, not a file-management event.

Identity blast radius, not secret count, is the useful metric: The article lists many different credentials, but the practical risk comes from which ones can alter infrastructure, runners, or repository controls. A small number of privileged secrets can outrank a large number of low-value tokens when incident response capacity is limited. Teams should prioritise the identities that can change the environment, not the ones that merely exist.

What this signals

Secret lifecycle management is the control boundary that failed here: A leaked secret is only one event; the real exposure continues until revocation, validation, and downstream discovery are complete. IAM teams should stop treating deletion and rotation as interchangeable actions, because the article shows they are not.

Privileged NHI credentials need blast-radius-based governance: A GitHub App key with organisation-wide write access changes repository settings, runner placement, and workflow execution, so its risk profile is closer to a privileged service account than to a standard API token. The practical signal is that NHI inventories should rank identities by what they can change, not by how they were stored.

Recursive decoding belongs in standard secret discovery workflows: Hidden credentials are often buried under multiple encodings, and that means static pattern matching will continue to miss real exposure. Teams should build scanning workflows that validate decoded content against the issuing platform before closing a finding.


For practitioners

  • Map every high-risk secret to an owner and a revocation path Build a credential register that ties each GitHub App key, token, password, and certificate to a system owner, issuer, and documented revocation procedure. Include NHI credentials embedded in infrastructure code and encoded blobs, not just obvious plaintext secrets.
  • Enable recursive secret detection in code and archive scans Scan Terraform, Docker, JSON, and archived repository content with recursive decoding so nested base64 and multi-layer encoded credentials are surfaced as live secrets. Treat decoded values as separate findings that require validation against the target service.
  • Separate file removal from credential invalidation Require a verified revocation step whenever a leaked secret is found, and confirm that the target service no longer accepts the credential. Do not close the incident when the repository is deleted or the exposure file is removed.
  • Prioritise privileged GitHub identities for incident response Classify GitHub App keys with organisation-wide permissions, self-hosted runner control, or workflow visibility as privileged non-human identities. Put them ahead of low-impact tokens when triaging exposure because they can reach repository settings and CI/CD execution.

Key takeaways

  • The core problem is not only leaked credentials, but leaked credentials that remain valid after public disclosure and file deletion.
  • The article shows that a GitHub App private key can grant organisation-wide control, including repository administration and self-hosted runner access.
  • Secret governance has to combine discovery, recursive decoding, ownership, and verified revocation, or exposure will persist beyond the initial leak.

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 SP 800-53 Rev 5 sets the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
OWASP Non-Human Identity Top 10NHI-02 — Secret LeakageThe article centres on leaked GitHub App keys and other exposed credentials.
NHI-05 — Overprivileged NHIThe GitHub App key granted organisation-wide write access and runner control.
NHI-07 — Long-Lived SecretsMultiple credentials stayed live after disclosure, showing weak revocation discipline.
Recommendation — Scan for leaked NHI secrets across code, Terraform, and archives, then revoke exposed credentials immediately. Reduce NHI blast radius by limiting GitHub App permissions to the minimum required scope. Replace persistent secrets with shorter-lived credentials and verify revocation actually invalidates access.
NIST SP 800-53 Rev 5IA-5 — Authenticator ManagementThe incident is about managing and revoking authenticators and keys across systems.
Recommendation — Apply authenticator lifecycle controls to track, rotate, and revoke leaked machine credentials.
MITRE ATT&CKTA0006;TA0008 — Credential Access; Lateral MovementA stolen GitHub App key can be used to authenticate and move into broader repository control.
Recommendation — Map leaked key exposure to credential access and lateral movement techniques in your detection pipeline.

Key terms

  • GitHub App Token: A GitHub App Token is a short-lived credential that lets an installed GitHub App act on repositories or organizations. It is issued after the app authenticates and is scoped to the app installation, with permissions limited to the actions granted by the installation and the token lifetime.
  • Secrets Sprawl: The uncontrolled proliferation of sensitive credentials, API keys, tokens, passwords, certificates, across codebases, cloud environments, CI/CD pipelines, and configuration files. In 2024, over 50 million leaked secrets were found on the dark web.
  • Recursive Decoding: Recursive decoding is the process of repeatedly unpacking encoded data until the underlying secret or payload is visible and usable. For identity security, it matters because real credentials are often hidden inside multiple layers, and basic scanners that stop at the first wrapper miss active risk.
  • Credential Revocation: Credential revocation is the process of disabling a secret, token, or key so it can no longer authenticate or authorize action. It is the operational half of detection, because exposed credentials remain dangerous until they are invalidated and replaced across every dependent system.

What's in the full analysis

Truffle Security's full article covers the operational detail this post intentionally leaves for the source:

  • The exact GitHub App key validation steps used to confirm live access against the GitHub API
  • The full breakdown of additional live tokens, passwords, and certificates found in the repository
  • The decoding chain for the CrowdStrike credential buried inside nested base64 and Terraform content
  • The disclosure timeline and rotation implications across multiple vendors and environments

👉 The full Truffle Security post covers the validation steps, credential inventory, and disclosure timeline in detail.

Deepen your knowledge

NHI governance, secrets management, and workload identity security are core topics in our NHI Foundation Level course, the industry's only accredited NHI security programme. If you are building or maturing an IAM programme, it is worth exploring.
NHIMG Editorial Note
Published by the NHIMG editorial team on July 14, 2026.
Updated on October 5, 2026.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org