Operational guidance, not legal advice. This page distills named public sources (regulator guidance and industry practice). It is not a legal determination, not a notification decision, and not a substitute for your counsel, insurer, or a retained DFIR firm. Verify applicability and current deadlines for your facts and jurisdiction.
CI/CD pipeline compromise response checklist
Updated
Freeze the pipeline. Audit runners, workflows, and secrets. Rotate every pipeline credential and signing key. Verify artifact provenance and check downstream releases. This page is not legal advice.
Operational guidance, last verified 7 September 2026 against CISA and NSA, Defending Continuous Integration/Continuous Delivery (CI/CD) Environments (Cybersecurity Information Sheet, 28 June 2023 — recommendations and best practices, not a statute), NIST SP 800-218 Secure Software Development Framework (SSDF) Version 1.1 (February 2022 — recommendations, not a statute), NIST SP 800-204D Strategies for the Integration of Software Supply Chain Security in DevSecOps CI/CD Pipelines (February 2024 — strategies, not a statute; maps pipeline controls onto SSDF and cites SLSA), SLSA v1.2 Threats & mitigations (build-track threats (D) external build parameters, (E) build process, (F) artifact publication, (G) distribution channel — a specification, not a statute), the OpenSSF Source Code Management Platform Configuration Best Practices (Best Practices Working Group, 2023-08-29 — industry practice covering GitHub and GitLab equally, not a ranking), and CNCF TAG Security Software Supply Chain Best Practices. Pointers to GitHub Actions and GitLab Runner security documentation are equal and are not a ranking of pipeline products. This page does not start a notification clock and is not a substitute for counsel, your insurer, or a retained DFIR firm. Not legal advice.
Freeze the pipeline first — this is not a statute
Audience: the incident commander facing a compromised CI/CD pipeline (poisoned workflow, compromised runner, stolen pipeline secret, or tampered artifact), and counsel, the insurer, and DFIR on the out-of-band bridge. The we've-been-breached page on this site is the first-moves hub. The preserve-evidence page on this site is the capture order for workflow-run logs, runner images, and artifact stores. The credential-compromise-checklist page on this site is the revoke-rotate-hunt for the identity that minted the pipeline tokens. The who-to-call page on this site is the contact order. This page is the CI/CD-compromise runbook: freeze poisoned builds, audit runners, workflows, and secrets, rotate every pipeline credential and signing key, verify artifact provenance, then check downstream releases. It does not rank GitHub Actions, GitLab CI, Jenkins, or any other pipeline product, does not rank DFIR firms, does not name any host as the source of truth, and does not start a notification clock.
CISA and NSA's Defending CI/CD Environments CSI (28 June 2023, last verified still listed on 7 September 2026) is tool-agnostic: it enumerates common CI/CD risks and attack surfaces and asks organizations to harden the pipeline without regard to the specific tools being adapted — a cybersecurity information sheet, not a statute. NIST SP 800-218 SSDF Version 1.1 is recommendations for mitigating software-vulnerability risk (PS.1 protect all forms of code from unauthorized access and tampering; PS.2 provide a mechanism for verifying software release integrity; PW.6 configure compilation, interpreter, and build processes to improve executable security) — recommendations, not a statute. NIST SP 800-204D maps those SSDF practices onto CI/CD pipeline stages and cites SLSA for provenance and attestation — strategies, not a statute. SLSA v1.2 is a specification for describing and incrementally improving supply-chain security; Build L1 is provenance exists, L2 is signed provenance from a hosted build platform, L3 is a hardened build platform — a specification, not a statute, and not a legal requirement this page will invent. Last verified 7 September 2026. Not legal advice.
- Freeze first, then audit, then rotate, then verify artifacts. A new signing key with a still-running poisoned job is not containment. CISA/NSA CSI: recognize the attack surfaces (source, build environment, secrets, artifact store) and stop the path that is still publishing.
- Do not tip the actor. No in-band 'we see you', no public status page, no mass secret rotation from a possibly compromised pipeline identity. CISA: actors watch the response. Preserve workflow-run logs and runner state before you wipe the runner to 'start clean.' The preserve-evidence page on this site is that hold.
- The credential-compromise-checklist page on this site is the revoke-rotate-hunt for the identity that minted the pipeline tokens. The cloud-account-compromise-checklist page on this site is the preserve-logs-first tenant runbook when a pipeline minted cloud keys. The repository-compromise-checklist page on this site is the access-and-token audit, planted-commit hunt, and secret-rotation runbook. The supply-chain-incident-checklist page on this site is the vendor-incident intake, blast-radius, and flow-down runbook.
- This page does not rank pipeline products, does not interpret YOUR policy, does not start a notification clock, and is not legal advice.
What to do now
Walk top to bottom. Unknowns belong on the list. Last verified 7 September 2026. Not legal advice.
- Declare the incident. Name one commander. Open an out-of-band bridge the actor cannot see (phone, a clean conference). The who-to-call page on this site is the contact order.
- Freeze the pipeline: disable workflows, cancel in-flight jobs, pause self-hosted runners, and stop deploys and publishes from the compromised path. Do not delete the run history, the runner, or the artifact to 'clean up.' This product does not freeze pipelines.
- Place the evidence hold on workflow-run logs, runner registration and audit, CI variables and secret-access records, artifact and package-registry publishes, and webhook deliveries. GitHub: if a secret appeared unredacted in a log, delete that log after you have an exported copy, then rotate the secret. GitLab: document the time of exposure and the time you revoked. The preserve-evidence page on this site is the capture list.
- Audit runners, workflows, and secrets: new or edited workflow files, reusable workflows, third-party actions pinned to a moving tag, self-hosted runner groups, privileged executors, CI variables, OIDC trusts, and webhook destinations created in the dwell window. Unexplained is persistence until an owner claims it.
- Rotate every pipeline credential and signing key: CI secrets, deploy tokens, runner registration tokens, job tokens still in logs, package-registry tokens, cloud keys the pipeline could mint, and the keys that sign artifacts, commits, or container images. A commit that deletes a leaked secret is not rotation. This product does not rotate signing keys.
- Verify artifact provenance for anything the pipeline published in the window: packages, containers, GitHub/GitLab Releases, signed blobs. SLSA: a verifier rejects an artifact whose provenance subject does not match the hash received — that check does not catch a build that honestly built planted source. This product does not verify SLSA provenance.
- Check downstream releases: who consumed a possibly poisoned artifact; yank or unpublish only after you have a copy and a consumer-notification plan. The supply-chain-incident-checklist page on this site is the vendor-incident intake and flow-down runbook. Page counsel and the insurer if YOUR plan or policy requires prompt notice. This page does not start a clock.
Freeze-and-audit — runners, workflows, secrets
Containment for a compromised pipeline is not 'rerun the last job and hope.' CISA/NSA CSI treats the build environment, the secrets the job can read, and the artifact store it can write as distinct attack surfaces. GitHub's secure-use reference treats self-hosted runners as persistently compromiseable by untrusted workflow code and tells you they should almost never be used for public repositories. GitLab's runner-security guide treats the shell executor and Docker privileged mode on reused machines as high-risk because a job can steal CI_JOB_TOKEN and other secrets from a compromised environment. Walk the rows. Last verified 7 September 2026. Not legal advice.
| Surface | What 'done' looks like | If you skip it |
|---|---|---|
| In-flight jobs and deploys | Every running workflow, pipeline, deploy, and publish from the compromised path is cancelled or paused. New runs on that path are disabled. The freeze is recorded with time and who ordered it. | The actor keeps publishing while you hunt. This product does not freeze pipelines. |
| Self-hosted and shared runners | Runners that processed jobs in the dwell window are taken offline, imaged if you still can, and treated as untrusted until rebuilt from a known-good image. GitHub: self-hosted runners do not have guarantees around ephemeral clean VMs and can be persistently compromised. GitLab: cloning a runner with the same token steals jobs; rotate the runner authentication token. | A poisoned runner signs the next 'clean' build. Ephemeral-after-the-fact is not a forensic copy. This product does not image a runner. |
| Workflow and pipeline definitions | New or edited workflow files, reusable workflows, included CI configs, scheduled pipelines, and branch-protection or environment-protection changes in the window are listed. Unexplained approval of a workflow change is a finding. OpenSSF SCM Best Practices: default workflow token permission should be read-only; workflows should not be allowed to approve pull requests. | The planted workflow still runs after you freeze the one you noticed. |
| Third-party actions and images | Actions, reusable workflows, and container images the job pulled are inventoried by digest, not by a moving tag. GitHub: pin actions to a full-length commit SHA; a tag can move. Unexplained new action or image in the window is persistence until claimed. | A tag the actor moved still builds the backdoor after you 'revert' the workflow file. |
| CI secrets, variables, and OIDC | Secrets, masked variables, environment secrets, OIDC trusts, and cloud roles the pipeline could assume are listed. Unexplained secret creates, secret updates, and new OIDC subjects in the window are revoked. GitHub: delete-and-rotate any secret that appeared unredacted in a log. GitLab: CI_JOB_TOKEN is valid only while the job runs; a leaked token from a still-running job is live. | A disabled workflow with a live deploy token is still the actor. |
Rotate pipeline secrets and signing keys
A frozen pipeline that still holds the old signing key will sign the next artifact the actor queues. Rotate at the issuer, then revoke the old value. CISA's 28 May 2026 supply-chain alert (Nx Console / GitHub repositories) tells organizations that discover a compromise to rotate and revoke all secrets accessible to CI/CD, including API keys, cloud credentials, SSH keys, registry tokens, and GitHub/GitLab/Bitbucket tokens. GitHub's secure-use reference: if an unredacted secret is sent to a workflow-run log, delete the log and rotate the secret. NIST SP 800-218 PS.1 is protect all forms of code from unauthorized access and tampering — recommendations, not a statute. Last verified 7 September 2026. Not legal advice.
| Credential class | What 'rotated' looks like | Limit |
|---|---|---|
| CI secrets, deploy tokens, runner tokens | Every secret the compromised path could read is rotated at the issuer and the old value revoked. Runner registration and authentication tokens are rotated so a cloned runner cannot steal jobs. Remaining secrets have an owner and a rotation date. | A secret in a log, a fork, or an artifact store is still the old value. Deleting the variable is not rotation. This product does not rotate pipeline secrets. |
| Cloud keys and OIDC roles the pipeline minted | Access keys, service-principal secrets, and workload-identity bindings the job used are rotated or the OIDC trust is narrowed to a known-good subject. The cloud-account-compromise-checklist page on this site is the preserve-logs-first tenant runbook. | This product does not rotate cloud keys. A disabled workflow with a live cloud role is still the actor. |
| Artifact signing keys (Sigstore, GPG, container signing, commit signing) | Keys that signed packages, containers, releases, or commits in the window are rotated. Old signatures are inventoried, not shredded. Downstream verifiers are told which keys to distrust. | This product does not rotate signing keys. Deleting the only copy of the public key is how you lose the ability to prove what was signed before the freeze. |
| Package-registry and deploy credentials | npm, PyPI, container-registry, Maven, crates, and similar tokens the pipeline used to publish are revoked. Publish rights on the compromised identity are suspended until the hunt is done. | A yanked package with a still-valid publish token comes back. The actor republishes under the same name. |
Artifact provenance — SLSA is guidance, not a statute
SLSA (Supply-chain Levels for Software Artifacts) is a specification, established by industry consensus, for describing and incrementally improving supply-chain security. It is not a statute, not a certification this product issues, and not a legal requirement this page will invent. Build L0 is no guarantees. Build L1 is provenance showing how the package was built — it can catch mistakes and is trivial to forge. Build L2 is signed provenance generated by a hosted build platform. Build L3 is a hardened build platform that resists tampering during the build. NIST SP 800-204D cites SLSA among the building blocks to integrate into CI/CD pipelines. A verifier that checks provenance is asking whether the artifact matches the signed claim about how it was built; it is not asking whether the source the builder honestly compiled was itself planted. Last verified 7 September 2026. Not legal advice.
- Inventory every artifact the compromised path published in the dwell window: packages, containers, GitHub/GitLab Releases, signed blobs, SBOMs. Unknown publishes are a gap, not a clean bill.
- If provenance is missing, write that down. Do not invent a SLSA level. This product does not verify SLSA provenance and does not issue a SLSA attestation.
- The supply-chain-incident-checklist page on this site is the vendor-incident intake and flow-down runbook. Downstream notification of a poisoned artifact is often a supply-chain question for counsel on YOUR facts. This page does not start that clock.
| Check | What it can tell you | What it cannot |
|---|---|---|
| Provenance exists (Build L1) | There is a record of what was built, from which source, by which builder. Missing provenance is a gap, not a finding of no tampering. | Unsigned provenance is trivial to forge. SLSA: L1 does not protect against tampering. |
| Signed provenance, subject matches digest (Build L2) | The builder you expected signed a claim that it produced this digest from this source. A swapped blob with the original provenance fails the subject check. | A compromised builder, or a builder that honestly compiled planted source, will sign a true statement about a bad artifact. SLSA threat (F) vs (B). |
| Hardened builder (Build L3) | The control plane, not the tenant worker, generated the provenance; builds are isolated; signing material is not on the worker. Stronger against SLSA threat (E) build-process tampering. | L3 does not prove the source was reviewed. Source threats (B) and (C) are a different track. This product does not verify SLSA provenance. |
| Rebuild or reproduce from known-good source | A second build from a known-good revision produces a comparable artifact. Divergence is a lead, not a notification determination. | Non-reproducible builds (timestamps, network, unsigned base images) fail this check even when honest. Absence of a rebuild is a gap. |
Downstream-release impact
A poisoned pipeline is how a source compromise becomes a consumer compromise. SLSA threat (F) is artifact publication that does not reflect the official source; threat (G) is a modified package on the registry or in transit. CISA's 28 May 2026 supply-chain alert tells organizations that discover a compromise to conduct a forensics review of CI/CD logs, cloud audit trails, and affected developer machines, and to notify proper stakeholders if necessary — a cybersecurity alert, not a statute, and not a determination that YOUR notification duty has started. The supply-chain-incident-checklist page on this site is the vendor-incident intake, blast-radius, and flow-down runbook. Last verified 7 September 2026. Not legal advice.
- Name the artifacts, registries, release channels, and downstream consumers that may have taken a build from the compromised path. Internal mirrors and 'latest' tags are in scope.
- Yank or unpublish only after you have a copy, a hash, and a consumer-notification plan. Pin consumers to a known-good digest. Rotate signing keys if the actor could have used them.
- This product's blast-radius search is over captured dependencies — transitive npm when a lockfile was fetched. That is package exposure in YOUR tree, not a finding that a release you published was poisoned and not a freeze of YOUR pipeline.
- Delivery Health is a DORA posture score (deployment frequency, lead time, change failure rate, time to restore) from connected sources, including GitHub Actions run failures and duration. A drop in deploy frequency after you freeze the pipeline is an expected measurement change, not a detector that the pipeline is compromised.
Provider pipeline pointers — not a ranking
Each major pipeline product publishes its own runner-security and secrets documentation. The rows below are pointers so a responder can find the current doc. They are not a comparison, not a recommendation of which CI to run, and not a finding that one provider's runner is 'enough.' Use the doc for the pipeline you actually run. If you run more than one, do the freeze-audit-rotate-verify loop in each. Last verified 7 September 2026. Not legal advice.
- The order of the rows is alphabetical by common short name, not a ranking. This page does not rank GitHub Actions or GitLab CI.
- Follow the current provider doc, not a screenshot of this table. Last verified 7 September 2026 is how you can see we have not re-checked yet.
- CISA/NSA Defending CI/CD Environments CSI remains the tool-agnostic overlay: harden source, build environment, secrets, and artifact store regardless of which product you run.
| Provider doc (pointer) | What it is | Limit this page will not paper over |
|---|---|---|
| GitHub — Secure use reference (Actions security hardening) | GitHub's current Actions security practices: secrets handling and rotation, pin actions to a full-length commit SHA, self-hosted runners are persistently compromiseable and should almost never be used for public repositories, OIDC instead of long-lived cloud secrets, audit org.update_actions_secret. | GitHub-hosted runners are ephemeral; self-hosted are not. This page does not operate YOUR Actions settings. This product does not freeze pipelines. |
| GitLab — Security for self-managed runners, and CI/CD job token | GitLab's runner-security guide (shell executor is high risk on a reused host; privileged containers on reused machines; cloned runners steal jobs) and CI_JOB_TOKEN docs (token is valid only while the job runs; mask in logs; limit job-token access to the current project). | A leaked CI_JOB_TOKEN from a still-running job is live. This product does not revoke a GitLab job token. |
Where this shows up in ShipReady Metrics
The signed-in app does not freeze pipelines, cancel workflow runs, take runners offline, rotate pipeline secrets, rotate signing keys, verify SLSA provenance, or unpublish a poisoned artifact. It does ingest security findings, including GitHub secret-scanning alerts (exposed secrets as findings, typically critical), Dependabot alerts, and code-scanning / SAST findings. Security findings is where those land, alongside DAST. Security also has a blast-radius search over captured dependencies — transitive npm when a lockfile was fetched — which is package exposure, not a poisoned-pipeline hunt. Delivery Health is a DORA posture score (deployment frequency, lead time for changes, change failure rate, time to restore) from connected sources, including GitHub Actions workflow runs (failures, duration) and deployments where available; it is not an incident-response runbook and not a detector that YOUR pipeline is compromised. The AI-authored-code floor is a git-marker count of attributed lines — a floor, not a claim that the pipeline reviewed the model. The GitHub connector and GitHub App are read-only (Contents, Metadata, Pull requests, Actions, Administration, Dependabot/code/secret-scanning alerts; org Members) — nothing writable. If you already have a session: signed-in app → Compliance → CRA reporting tracks the 24-hour / 72-hour / 14-day ladder from your recorded awareness for findings the org has classified as CRA-in-scope. That ladder is not a CI/CD-compromise runbook, it does not start a clock for you, and it is not a determination that CRA applies. A named human still submits. None of those surfaces freezes a pipeline, rotates a signing key, or verifies SLSA provenance.
Primary sources (last verified 7 September 2026)
Every operational claim on this page is taken from one of these. If a later revision of a source changes the advice, the date above is how you can see we have not re-checked yet.
CISA and NSA, Defending Continuous Integration/Continuous Delivery (CI/CD) Environments (Cybersecurity Information Sheet, 28 June 2023) remains the current joint CISA/NSA CI/CD-hardening CSI this page cites — tool-agnostic recommendations and best practices, not a statute, last verified still listed on 7 September 2026. CISA, Supply Chain Compromises Impact Nx Console and GitHub Repositories (alert, 28 May 2026) remains the current CISA supply-chain alert this page cites for rotating and revoking CI/CD-accessible secrets (including GitHub/GitLab/Bitbucket tokens and SSH keys) and reviewing CI/CD logs — a cybersecurity alert, not a statute. NIST SP 800-218, Secure Software Development Framework (SSDF) Version 1.1 (February 2022) remains the current SSDF this page cites (PS.1 protect code from unauthorized access and tampering; PS.2 verify software release integrity; PW.6 configure build processes) — recommendations, not a statute. NIST SP 800-204D, Strategies for the Integration of Software Supply Chain Security in DevSecOps CI/CD Pipelines (February 2024) maps those SSDF practices onto CI/CD stages and cites SLSA — strategies, not a statute. SLSA v1.2, Threats & mitigations remains the current SLSA threat model this page cites for build threats (D) external build parameters, (E) build process, (F) artifact publication, and (G) distribution channel — a specification, not a statute, and not a legal requirement. OpenSSF Source Code Management Platform Configuration Best Practices (Best Practices Working Group, 2023-08-29) is industry practice covering GitHub and GitLab equally (default workflow token read-only, workflows should not approve pull requests, runner groups limited) — not a ranking and not a statute. CNCF TAG Security, Software Supply Chain Best Practices, remains the CNCF overlay this page cites for layered controls, signing and verification, and a minimal build environment — industry practice, not a statute. GitHub, Secure use reference (Actions security hardening), and GitLab, Security for self-managed runners plus CI/CD job token, are vendor documentation, not a statute, and are not ranked. NIST SP 800-61r2 remains the current final Computer Security Incident Handling Guide this cluster cites for containment then eradication then recovery.
Frequently asked questions
What should we do first if a CI/CD pipeline is compromised?
Freeze the pipeline — disable workflows, cancel in-flight jobs, pause self-hosted runners, and stop deploys — then preserve workflow-run logs and runner state, then audit runners, workflows, and secrets, then rotate every pipeline credential and signing key, then verify artifact provenance and check downstream releases. Do not tip the actor. CISA/NSA Defending CI/CD, NIST SP 800-218, NIST SP 800-204D, and SLSA v1.2 are the primary sources. This product does not freeze pipelines. Not legal advice.
Does freezing the pipeline destroy evidence?
It can, if you delete run history, wipe the runner, or shred the artifact store to 'start clean.' Freeze means stop new publishes, not destroy the copy. GitHub: if a secret appeared unredacted in a log, export it, then delete that log and rotate the secret. GitLab: document the time of exposure and the time you revoked. The preserve-evidence page on this site is the capture order. Isolate, do not destroy. Not legal advice.
Is SLSA a legal requirement?
No. SLSA v1.2 is a specification for describing and incrementally improving supply-chain security, established by industry consensus. NIST SP 800-204D cites it as a building block to integrate into CI/CD pipelines. It is not a statute, not a certification this product issues, and not a notification duty. Build L1 (provenance exists) through L3 (hardened builder) are integrity levels, not legal findings. Whether YOUR contracts or a named regulation require provenance is a question for counsel on YOUR facts. Not legal advice.
Does ShipReady Metrics freeze pipelines, rotate signing keys, or verify SLSA provenance?
No. The signed-in app does not freeze pipelines, cancel workflow runs, take runners offline, rotate pipeline secrets, rotate signing keys, verify SLSA provenance, or unpublish an artifact. It does ingest security findings, including GitHub secret-scanning alerts, Dependabot alerts, and code-scanning / SAST findings. Blast-radius search is package exposure over captured dependencies, not a poisoned-pipeline hunt. Delivery Health is a DORA posture score from connected sources, including Actions runs — not a CI/CD runbook. Compliance → CRA reporting is a ladder from recorded awareness, not a clock this product starts. Not legal advice.
Is this legal advice?
No. It is operational guidance distilled from CISA/NSA Defending CI/CD Environments, CISA's 28 May 2026 supply-chain alert, NIST SP 800-218 (SSDF), NIST SP 800-204D, SLSA v1.2 Threats & mitigations, OpenSSF SCM Best Practices, CNCF TAG Security supply-chain best practices, and GitHub/GitLab pipeline-security docs. Whether a notification duty has started, whether a poisoned artifact was 'unauthorised access' under a named statute, and what you may say to downstream consumers are questions for counsel on YOUR facts. This page does not rank pipeline products and does not start a notification clock.
Published by ShipReady Metrics, an evidence-based technology and compliance intelligence platform. This guide is educational and vendor-neutral.