Join our Newsletter — 33% off our NHI Course
Home› Guides› Signing keys and certificates in breaches: What eleven…
Guide Non-Human Identity (NHI)

Signing keys and certificates in breaches: What eleven incidents teach about protecting trust keys

PDF for newsletter subscribers · free to read online

← All guides
By NHI Mgmt Group, edited by Lalit Choda Updated 28 October 2026 14 min read
On this page

A stolen signing key does not open one door, it lets an attacker manufacture trust that every downstream system accepts without question. Code signing certificates, SAML token-signing certificates, cloud token-signing keys, firmware keys, GPG release keys, ASP.NET machine keys and GitHub App private keys all behave the same way in a breach: whoever holds the private key can make forged software, tokens or tickets look genuine. NHI Mgmt Group's breach analysis counts signing keys or certificates among the identities abused in 31 breaches. This guide pulls the cross-breach lessons from eleven of those incidents and turns them into controls, a rollout order and the measures that show the risk is falling. It is written for PKI owners, platform and release engineers, identity architects and incident responders.

Key takeaways

  • Signing keys are tier-zero non-human identities. NHI Mgmt Group, The State of NHI & AI Agent Breach Report 2026 (October 2026) lists signing key or certificate as an abused identity type in 31 of more than 200 breaches, and says of SolarWinds that build systems, signing keys and federation certificates each need an owner, tight scope and monitoring.
  • Where the key lives decides the outcome. Keys in CI environment variables, on developer laptops, in repositories or in crash-dump-reachable memory were the root of HashiCorp, Coupang, GitHub and Storm-0558. Non-exportable keys in an HSM or managed signing service remove most of these paths.
  • Validation failures matter as much as theft. Storm-0558 worked because Exchange Online accepted a consumer key for enterprise tokens, and Coupang's forged tokens were never checked against issuance events. Verifiers need scope, issuer and lifetime checks.
  • Revocation is expensive, so plan it before you need it. AnyDesk, GitHub and NVIDIA show that revoking a long-lived certificate breaks legitimate releases or is not done at all. Per-product keys, timestamping and a release-to-key map make revocation survivable.
  • Patching does not revoke a stolen key. ToolShell attackers kept access after SharePoint was patched because machine keys had been taken. Every host compromise needs a key rotation step.

What the breach data shows

The report classifies each breach by attack route and identity type. Signing key or certificate appears 31 times as an identity type, behind secrets, cloud credentials, API keys, source control tokens and CI/CD tokens, but the blast radius per incident is larger: one key can vouch for software on thousands of customer machines or mint tokens for any mailbox. The report also finds that 56% of breaches involved more than one kind of non-human identity, and signing keys are usually the second or third credential in a chain, reached after a token, a vault or a build account fell first. The report's SolarWinds entry is the clearest example: up to 18,000 customers received the backdoor, 9 federal agencies and about 100 companies were compromised, and the identities abused were build and code-signing trust, SAML token-signing certificates and service principal credentials.

Eleven incidents, grouped by key type

Key typeIncidentHow the key was reached or abusedLesson
Build and code signingSolarWinds SUNBURSTAn injector altered Orion builds before signing, so tampered builds shipped with valid signatures (March to June 2020)A signature proves who signed, not what was built. Protect the build, not only the key.
SAML token-signing certificateSolarWinds victims (Golden SAML)On-premises admin access used to steal the federation certificate and forge tokens for any user without MFAFederation signing certificates are tier zero; alert on new credentials added to service principals.
Cloud token-signing keyMicrosoft Storm-0558A 2016 consumer key that should have retired in 2021 forged tokens accepted for enterprise mailboxes at 22 organisationsAutomate rotation, alert on old active keys, validate key scope.
Token-signing keyCoupangA former engineer kept a key stored on developer computers that was never rotated; about 33.7 million accounts affectedOffboarding must rotate keys a leaver could reach.
Code signing certificateAnyDeskProduction compromise; all security certificates revoked and version 8.0.8 shipped on a new certificateLong-lived signing identities make revocation costly for customers.
Code signing certificates (expired)NVIDIA (Lapsus$)Two leaked expired certificates were used to sign malware because Windows still accepted them for driversExpiry is not revocation; use application control policies to block abused certificates.
Code signing certificatesGitHub Desktop and AtomA machine account token cloned repositories holding password-protected certificates; revocation broke Desktop for Mac 3.0.2 to 3.1.2 and Atom 1.63.0 to 1.63.1Keep keys out of repositories; know which releases each key signed.
Firmware and Boot Guard keysMSIRansomware leak exposed firmware image signing keys for 57 products and Boot Guard keys for 116Keys burned into devices are close to irrevocable; separate keys per product line.
GPG release keyHashiCorpThe key that signs SHA256SUMS sat in CI environment variables read by the tampered Codecov uploaderIsolate the signing job from third-party tools and other secrets.
ASP.NET machine keysToolShell SharePointA web shell read ValidationKey and DecryptionKey, allowing forged ViewState after patchingRotate machine keys and restart IIS after any suspected compromise.
GitHub App private keysLeaked GitHub App keys474 leaked keys still authenticated; App private keys do not expire, and 207 could write repository contentInventory every App key with an owner and delete keys on exposure.

For the federation side of SolarWinds, the Mimecast certificate compromise shows the same pattern from a vendor: a certificate used to authenticate to customers' Microsoft 365 Exchange Web Services was stolen, and every affected customer had to delete the connection and re-create it with a replacement certificate.

Five cross-breach lessons

1. Storage location is the real control

In HashiCorp the key was an environment variable in a pipeline that ran a third-party script. In Coupang it sat on developer computers. In GitHub it was in cloned repositories, protected only by a password. Microsoft's post-incident review for Storm-0558 says key material should not leave the production environment and describes fixes to crash dump handling and credential scanning. The common fix is a non-exportable key in hardware: the CA/Browser Forum Baseline Requirements for Code Signing Certificates (v3.11.0) have required subscriber code signing keys to be generated, stored and used in a suitable hardware crypto module since 1 June 2023. Apply the same standard to keys no CA polices: token-signing, GPG, firmware and App keys.

2. Lifetime without rotation turns a leak into a permanent door

The Storm-0558 key was created in 2016 and should have been retired in March 2021; consumer key rotation was manual and stopped after an outage, with no alert for old active keys. Coupang's keys reportedly had validity periods of 5 to 10 years. GitHub App private keys never expire. Set a cryptoperiod for every key type (NIST SP 800-57 Part 1 Rev. 5 is the reference for doing this), automate rotation and alert when a key outlives it.

3. Verifiers must check more than the signature

Storm-0558 succeeded because libraries did not validate key scope and the mail system's developers assumed they did. Microsoft has since shipped libraries that automate key scope validation. Coupang's systems did not verify that tokens mapped to real issuance events. A relying party should check issuer, audience, key identifier, key scope and token lifetime, and high-value services should reconcile tokens against issuance logs.

4. Revocation needs a plan before the incident

AnyDesk's revoked certificate covered every release before 7.0.15 and 8.0.8. GitHub's revocation broke specific Desktop and Atom versions. NVIDIA's certificates were not revoked because that would have blocked legitimate drivers, so Microsoft advised Windows Defender Application Control policies instead. MSI's Boot Guard keys are built into devices in the field. Keep a map of which releases each key signed, timestamp signatures so revocation can be dated, and split keys by product and environment so one revocation does not break everything. The Compromised Code Signing Certificate Playbook covers the response steps.

5. Key theft is a post-compromise step, so rotation belongs in every response

ToolShell attackers took machine keys after the initial exploit; SolarWinds attackers took the token-signing certificate after gaining on-premises admin; Mimecast's certificate was reached through the SUNBURST backdoor. Microsoft's guidance for systemic identity compromise is to replace the AD FS token-signing certificate fully, including updating the cloud side so the old certificate can no longer authenticate users, and to review audit logs for added service principal credentials. If a host that could read a key was compromised, treat the key as stolen.

Controls by key type

Key typeStorageLifetime and rotationVerification and detection
Code signingHSM or managed signing service; signing via an approved, logged requestPer-product certificates; RFC 3161 timestamps; release-to-key mapAlert on signing outside release pipelines; hunt for files signed with revoked serials; block abused certificates with application control
SAML or OIDC token-signingHSM-backed or cloud-managed key; no exportScheduled rollover with a published next key (see the JWKS Signing Key Rotation Guide)Validate issuer, audience and key scope; compare sign-ins at relying parties with issuance logs at the IdP
Release GPG and checksum keysDedicated signing job with no third-party tools and no other secretsPre-published successor key and update path for clientsVerify signatures in consumers; alert on signing jobs outside release tags
Firmware and secure bootHSM, offline ceremony, dual controlSeparate keys per product line; design revocation into the trust chainVendor-channel-only updates; firmware integrity attestation where supported
Application machine keys (ASP.NET)Unique per farm; never default or sharedRotate after any host compromise and on a scheduleAlert on web shells and unexpected reads of configuration files
GitHub App and similar private keysSecrets manager or hardware-backed store, never in repositoriesDelete and regenerate on exposure; remove keys of abandoned AppsSecret scanning on public and private code; review App permissions and installations

For the underlying disciplines see the Code Signing Security Guide, the Golden SAML and Federation Trust Abuse Defence Guide, the HSM Deployment and Operations Guide and the Firmware and Boot Security Guide.

Implementation: a phased approach

  1. Inventory (weeks 1 to 2): list every private key that signs something others trust: code signing, federation, JWKS, GPG, firmware, machine keys, GitHub Apps, SSH host keys. Record owner, location, creation date, algorithm, what it signs and which systems verify it. The Machine Identity, PKI and Certificate Lifecycle Guide describes the fields.
  2. Find exposed copies (weeks 1 to 3): scan repositories, CI variables, container images, file shares and developer endpoints for key files and PFX or PEM material. Treat any copy outside the approved store as compromised and schedule its rotation.
  3. Move to non-exportable storage (weeks 3 to 8): start with keys whose compromise affects customers (code signing, federation, release keys). Pilot one product's signing through a managed signing service before moving the rest.
  4. Rehearse rotation (weeks 6 to 10): run a test rollover for each key type in a staging environment, including relying parties and clients that pin the key. Keep the old key available for rollback until verifiers confirm the new one, then remove it completely, as Microsoft's AD FS guidance stresses.
  5. Harden verifiers (weeks 8 to 12): confirm issuer, audience and key scope checks in token validation libraries; enable signature verification in consumers of your releases.
  6. Wire into incident response and offboarding: add "rotate reachable signing keys" to host compromise playbooks and to leaver processes for engineers with signing access. See the NHI Offboarding and Decommissioning Guide.

Decision guidance

  • HSM versus managed cloud signing: on-premises HSMs suit firmware and offline root keys that need ceremonies and dual control; cloud KMS or managed signing suits high-volume code and token signing. Small teams rarely need their own HSM for code signing.
  • Keyless or identity-bound signing: short-lived certificates bound to a workload identity remove the long-lived key altogether for open source and internal artefacts. Keep a conventional key where platforms require it, such as Windows Authenticode and secure boot.
  • Revoke or block: revoke when the CA and platform support dated revocation and you can re-sign affected releases; block by certificate or hash with application control when revocation would break widely deployed legitimate software, as in the NVIDIA case.
  • Large organisations: run a central signing service with approval workflows and per-team keys. Smaller teams should at least remove keys from CI variables and repositories and assign a named owner.

Detection and measurement

Log every signing operation with requester, artefact hash and pipeline run; alert on signing outside tagged releases or approved pipelines. In Entra ID and other IdPs, alert on new credentials added to applications and service principals (the SolarWinds pattern). Monitor mail and data access logs where available: the State Department caught Storm-0558 through a custom alert on MailItemsAccessed events.

MetricTarget direction
Share of signing keys in non-exportable storageRising towards 100% for customer-facing keys
Signing keys past their defined cryptoperiodZero
Signing keys with a named owner and verifier list100%
Days since last rehearsed rollover per key typeWithin the agreed interval, for example 12 months
Key copies found outside the approved store per quarterFalling to zero
Signing events without a matching release or approvalZero, each investigated

Common failure patterns

  • Rotation stopped after an outage: Storm-0558's manual rotation lapsed in 2021 and nobody was alerted. Automate it and alert on overdue keys.
  • Keys in CI variables next to third-party tools: HashiCorp's GPG key was harvested by a tampered uploader script.
  • Leavers keep keys: Coupang's former engineer used a key that was never rotated after departure.
  • Treating expiry as safety: NVIDIA's expired certificates still signed accepted drivers.
  • Patching without rotating: ToolShell persistence survived the patch because machine keys were already stolen.
  • Forgotten keys that never expire: the 474 working GitHub App keys included some leaked in 2020.

Framework mapping

FrameworkReferenceRelevance
MITRE ATT&CK v20T1552.004 Private Keys; T1649 Steal or Forge Authentication Certificates; T1606.002 SAML TokensTheft of keys and forging of tokens
MITRE ATT&CK v20T1553.002 Code Signing; T1588.003 Code Signing Certificates; T1098.001 Additional Cloud CredentialsSigned malware, stolen certificates, credentials added to app identities
NIST SP 800-53 Rev. 5SC-12 Cryptographic Key Establishment and Management; IA-5(2) Public Key-based AuthenticationKey lifecycle and certificate validation
NIST SP 800-53 Rev. 5SI-7(15) Code Authentication; CM-14 Signed Components; AU-6 Audit Record ReviewVerify signatures before install, review signing logs
NIST CSF 2.0PR.AA-01; ID.AM-08; DE.CM-09Manage machine credentials, lifecycle, monitoring

Practitioner checklist

  • Inventory every signing key and certificate with owner, location, age, what it signs and who verifies it.
  • Remove key material from repositories, CI variables, images, shares and laptops; rotate anything found.
  • Move customer-facing signing keys into an HSM or managed signing service as non-exportable keys.
  • Define a cryptoperiod per key type, automate rotation and alert on keys that outlive it.
  • Keep a release-to-key map, timestamp signatures and split keys by product line.
  • Check issuer, audience and key scope in every token validation path.
  • Alert on new credentials added to applications and on signing outside approved pipelines.
  • Add signing key rotation to host compromise playbooks and engineer offboarding.
  • Rehearse a full rollover for each key type at least yearly.

Standards and references

Related NHI Mgmt Group resources: Code Signing Security Guide · Golden SAML and Federation Trust Abuse Defence Guide · Cryptographic Key Management Guide · Non-Human Identity (NHI) Guide

PDF for subscribers

Take this guide with you

Every section, table and checklist in one PDF, with links to the sources and related guides. Subscribe to our weekly NHI & AI Identity Journal and we’ll email you a download link.

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Researched and written by the NHI Mgmt Group editorial team using AI tools, under the editorial direction of Lalit Choda. Facts are drawn from the sources listed on this page and checked by our automated quality process. Last updated 28 October 2026. Spotted an error? Use our contact page.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM and Agentic AI security. nhimg.org

PDF Downloads for Newsletter Subscribers

Get the guide

Enter your details and we’ll email you a download link.

The full guide is free to read online. The PDF is a thank you for subscribing.

Fill in all fields marked * and tick the PDF box to continue.