AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The owasp-cicd skill provides a machine-readable reference library derived from the OWASP Top 10 CI/CD Security Risks project. It is designed to assist AI agents in evaluating pipeline security by offering standardized definitions, risk assessments, and remediation strategies for common vulnerabilities such as dependency chain abuse, insufficient flow control, and inadequate identity management. Each vulnerability is documented with specific checklists, attack scenarios, and defensive controls to support security auditing and hardening of CI/CD environments.
What it does
- Provides structured documentation for the 10 most critical CI/CD security risks.
- Offers vulnerability checklists to identify potential exposure in pipeline configurations.
- Details specific prevention controls and remediation steps for each risk category.
- Includes realistic attack scenarios to help visualize potential exploitation paths.
- Supplies detection guidance to help identify security signals within CI/CD systems.
When to use it
- When auditing CI/CD pipeline configurations for security gaps.
- When developing security policies for automated build and deployment processes.
- When assessing the risk profile of existing supply chain and deployment workflows.
- When training or prompting an agent to perform security reviews of infrastructure-as-code or pipeline definitions.
Advantages
- Standardized, machine-readable format facilitates integration into automated security workflows.
- Derived from the authoritative OWASP CI/CD Security project.
- Covers both immediate remediation and long-term defensive strategies.
- Provides clear, actionable guidance for complex security topics like artifact integrity and credential hygiene.
Usage examples
- “What are the risks associated with insufficient flow control in our CI/CD pipeline?”
- The agent retrieves the CICD-SEC-1 reference, outlining risks like unauthorized code pushes and deployment bypasses, and provides a checklist to verify branch protection rules.
- “How can we prevent dependency chain abuse in our build process?”
- The agent accesses the CICD-SEC-3 documentation to provide specific prevention controls and detection methods for securing the software supply chain.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/microsoft/owasp-cicd/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip owasp-cicd.zip -d .agents/skills
Documentation by Microsoft
OWASP® CI/CD Top 10 — Skill Entry
This SKILL.md is the entrypoint for the OWASP CI/CD Top 10 skill.
The skill encodes the OWASP Top 10 CI/CD Security Risks as structured, machine-readable references that an agent can query to identify, assess, and remediate CI/CD pipeline security risks.
Normative references (CI/CD Top 10)
Skill layout
SKILL.md— this file (skill entrypoint).references/— the CI/CD Top 10 normative documents.00-vulnerability-index.md— index of all vulnerability identifiers, categories, and cross-references.01through10— one document per vulnerability aligned with OWASP CI/CD Security numbering.
Third-Party Attribution
Copyright © OWASP Foundation. OWASP® Top 10 CI/CD Security Risks content is derived from works by the OWASP Foundation, licensed under CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/). Source: https://owasp.org/www-project-top-10-ci-cd-security-risks/ Modifications: Vulnerability descriptions restructured into agent-consumable reference documents with added detection and remediation guidance. OWASP® is a registered trademark of the OWASP Foundation. Use does not imply endorsement.
Files
- ATTRIBUTION.mdAdded by AutoGineer975 B
- LICENSEAdded by AutoGineer17.9 KiB
- SKILL.md2.6 KiB
- references/00-vulnerability-index.md2.8 KiB
- references/01-insufficient-flow-control-mechanisms.md5.2 KiB
- references/02-inadequate-identity-access-management.md6.0 KiB
- references/03-dependency-chain-abuse.md5.9 KiB
- references/04-poisoned-pipeline-execution.md6.9 KiB
- references/05-insufficient-pbac.md5.6 KiB
- references/06-insufficient-credential-hygiene.md6.1 KiB
- references/07-insecure-system-configuration.md5.9 KiB
- references/08-ungoverned-usage-of-3rd-party-services.md6.5 KiB
- references/09-improper-artifact-integrity-validation.md5.7 KiB
- references/10-insufficient-logging-visibility.md6.5 KiB
references/04-poisoned-pipeline-execution.md
title: 'CICD-SEC-4: Poisoned Pipeline Execution' description: OWASP CI/CD Top 10 reference for poisoned pipeline execution vulnerabilities including malicious code injection into CI/CD pipelines
04 Poisoned Pipeline Execution
Identifier: CICD-SEC-4:2025 Category: Pipeline Security
Description
Poisoned Pipeline Execution (PPE) risks refer to the ability of an attacker with access to source control systems, and without access to the build environment, to manipulate the build process by injecting malicious code or commands into the build pipeline configuration, essentially poisoning the pipeline and running malicious code as part of the build process.
The PPE vector abuses permissions against an SCM repository in a way that causes a CI pipeline to execute malicious commands. Users that have permissions to manipulate CI configuration files, or other files which the CI pipeline job relies on, can modify them to contain malicious commands. Pipelines executing unreviewed code, such as those triggered directly from pull requests or commits to arbitrary repository branches, are more susceptible to PPE.
There are three types of PPE:
Direct PPE (D-PPE) occurs when the attacker modifies the CI configuration file in a repository they have access to, either by pushing directly to an unprotected branch or by submitting a pull request. The pipeline execution is defined by the commands in the modified configuration file.
Indirect PPE (I-PPE) occurs when the pipeline configuration file is protected but the attacker injects malicious code into files referenced by the configuration, such as Makefiles, test frameworks, linter configurations, or scripts called from the pipeline.
Public PPE (3PE) targets public repositories that allow contributions from anonymous users. If the CI pipeline of a public repository runs unreviewed code suggested by anonymous users, it is susceptible to this attack, potentially exposing internal assets including secrets from private projects sharing the same CI instance.
Risk
Access to any secret available to the CI job, including secrets injected as environment variables and credentials for cloud providers, artifact registries, and the SCM itself.
Access to external assets the job node has permissions to, such as files on the node's filesystem or credentials to cloud environments accessible through the underlying host.
Ability to ship malicious code and artifacts further down the pipeline in the guise of legitimate build output.
Ability to access additional hosts and assets in the network or environment of the job node.
Lateral movement from the CI environment to production systems using stolen credentials.
Vulnerability checklist
Pipelines execute code from unreviewed pull requests or commits to arbitrary branches.
CI configuration files can be modified by contributors without review.
Pipeline configuration files are stored in the same repository as source code without protection.
Files referenced by the pipeline configuration (Makefiles, scripts, test files, linter configs) can be modified without triggering a separate review process.
Public repositories run CI pipelines on code submitted by anonymous contributors.
Pipeline execution nodes have access to secrets beyond what is needed for the specific job.
No isolation exists between pipeline nodes handling public and private repositories.
Branch protection rules do not have correlating CI trigger restrictions.
Prevention controls
Ensure pipelines running unreviewed code execute on isolated nodes not exposed to secrets and sensitive environments.
Evaluate the need for triggering pipelines on public repositories from external contributors. Where possible, refrain from running pipelines originating from forks and consider requiring manual approval for pipeline execution.
For sensitive pipelines exposed to secrets, ensure each branch configured to trigger a pipeline has a correlating branch protection rule in the SCM.
Require review of CI configuration file changes before the pipeline runs, or manage the CI configuration file in a separate protected branch.
Remove unnecessary SCM repository permissions from users.
Scope each pipeline to only the credentials it needs with minimum required privileges.
Review and restrict which files referenced by the pipeline configuration can be modified without additional approval.
Example attack scenarios
Scenario A — Direct PPE credential theft
A GitHub Actions workflow is configured to trigger on push events. An attacker creates a new remote branch and modifies the workflow file to exfiltrate AWS credentials stored as repository secrets. The modified workflow loads the secrets into environment variables and sends them to an attacker-controlled server. The push triggers the pipeline, which executes the poisoned configuration and leaks the credentials.
Scenario B — Indirect PPE via Makefile
A Jenkins pipeline fetches its Jenkinsfile from a protected main branch, but the build stage runs a Makefile stored in the repository. An attacker creates a pull request modifying the Makefile to replace the build target with a command that exfiltrates all environment variables. Since the pipeline triggers on pull requests, the malicious Makefile content executes during the build stage where AWS credentials are loaded, sending them to the attacker.
Scenario C — Public PPE on open source project
An open source project runs CI on all pull requests. An attacker submits a pull request modifying the test suite to include malicious code. The CI pipeline executes the tests, running the attacker's code on the build node. Because the same CI instance services private repositories, the attacker accesses secrets belonging to private projects.
Detection guidance
Monitor for modifications to CI configuration files in pull requests and pushes.
Alert on pipeline executions triggered by unreviewed code from forks or external contributors.
Audit which files referenced by pipeline configurations have been modified in recent commits.
Monitor outbound network connections from build nodes for unexpected destinations.
Review pipeline logs for unusual secret access patterns or commands.
Compare pipeline configuration files against their protected branch versions before execution.
Remediation
Isolate pipeline execution nodes that process unreviewed code from those handling sensitive workloads.
Move CI configuration files to protected branches and require review for all changes.
Implement manual approval gates for pipelines triggered by external contributors.
Restrict pipeline credentials using fine-grained scoping aligned with each job's requirements.
Separate CI infrastructure for public and private repositories.
Audit and lock down all files referenced by pipeline configurations (Makefiles, scripts, test configurations, linter configurations).
Enable and enforce branch protection rules with correlating pipeline trigger restrictions.
Requirements and compatibility
Written for: GitHub Copilot, Claude Code
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Claude Code frontmatter
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Microsoft
- Publisher
- Microsoft (Official)
- Source
- microsoft/hve-core · .github/skills/security/owasp-cicd · commit f425e94
- Licence
- Creative Commons Attribution-ShareAlike 4.0 International (redistribution allowed)
- LICENSE (written by AutoGineer)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Microsoft.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download owasp-cicd.zip