Poisoned Pipeline Execution
The most dangerous CI/CD vulnerability changes not a single line of application code. It changes the pipeline — and runs arbitrary code in the build with its privileges and secrets.
What PPE is
Poisoned Pipeline Execution (OWASP CICD-SEC-4) abuses write access to the source-control system so the CI pipeline runs malicious commands — with access to the secrets, artifacts and internal network of the build runner.
- D-PPE (Direct): the attacker changes the CI configuration directly (the workflow file).
- I-PPE (Indirect): they change files referenced by the CI — build scripts, tests, lint configs.
Megalodon: PPE at industrial scale
On May 18, 2026, the Megalodon campaign injected malicious workflow files into over 5,561 GitHub repos in a single 6-hour window — a textbook d-PPE that exploited repos with weak or missing branch protection. Crucially: the attacker never touched application code, only pipeline definitions — practically invisible to code reviewers.
The TanStack npm attack (May 11, 2026) showed related weaknesses: insecure pull_request_target, cache poisoning and token theft in GitHub Actions workflows.
The walkthrough
Here's how a PPE attack runs — and where PoisonZero severs it when an agent in the runner holds protected paths:
Branch protection missing
Fork PRs or weak rules allow write access to pipeline files.
Pipeline file poisoned
Only the workflow/CI config is changed — app code stays untouched.
Runner executes
With the privileges and secrets of the job.
PoisonZero evaluates writes to protected agent/config paths in the runner.
danger 0.95 → revertSecrets exfil → backdoor
↳ Backdoor into the signed artifact
↳ Lateral movement to further repos
Why reviews miss it
Code reviewers look at business logic. A changed pipeline file slips through — and then runs with full privilege. It's exactly this "invisible" layer that makes PPE so effective.
Where PoisonZero steps in
More and more often AI agents run in the pipeline (see AI agents in the CI/CD pipeline). PoisonZero protects their memory/config and evaluates writes into protected paths fail-closed — related: Supply-chain worms.
Protect agents in the pipeline.
PoisonZero evaluates writes into protected paths — on CI runners too.
Try 14 days freeRead next: Supply-chain worms · AI agents in the CI/CD pipeline · Why fail-closed wins