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/03-dependency-chain-abuse.md
title: 'CICD-SEC-3: Dependency Chain Abuse' description: OWASP CI/CD Top 10 reference for dependency chain abuse vulnerabilities including dependency confusion and typosquatting attacks
03 Dependency Chain Abuse
Identifier: CICD-SEC-3:2025 Category: Supply Chain
Description
Dependency chain abuse risks refer to an attacker's ability to abuse flaws relating to how engineering workstations and build environments fetch code dependencies. Dependency chain abuse results in a malicious package inadvertently being fetched and executed locally when pulled.
Managing dependencies and external packages is increasingly complex given the total number of systems involved across all development contexts. Packages are fetched using dedicated clients per programming language, typically from a combination of self-managed package repositories and language-specific SaaS repositories. Inadequate configurations may cause an engineer or the build system to download a malicious package instead of the intended one, and in many cases the package is immediately executed after download due to pre-install scripts.
The main attack vectors are dependency confusion (publishing malicious packages in public repositories with the same name as internal packages), dependency hijacking (compromising a package maintainer's account to upload malicious versions), typosquatting (publishing packages with names similar to popular packages), and brandjacking (publishing packages that mimic a trusted brand's naming conventions).
Risk
Malicious code executes on developer workstations or build servers when a poisoned package is pulled.
Credential theft and lateral movement within the environment where the malicious code executes.
Malicious code can make its way to production from the build server, potentially maintaining the original safe functionality to reduce probability of discovery.
Internal package names leaked to public repositories enable dependency confusion attacks.
Build environments fetching packages directly from the internet without proxy controls are exposed to all dependency chain attack vectors.
Vulnerability checklist
Clients fetch packages directly from external repositories without routing through an internal proxy.
Internal package names are not registered under the organization's scope.
No checksum or signature verification is configured for pulled packages.
Clients are configured to pull the latest version of a package rather than a pinned version.
Package manager configuration files (such as .npmrc) are absent from project repositories.
Pre-install scripts execute in a context with access to secrets and sensitive resources.
Names of internal projects are published or discoverable in public repositories.
No controls exist to prevent dependency confusion between internal and external registries.
Prevention controls
Route all package fetches through an internal proxy rather than directly from the internet.
Where applicable, configure all clients to pull packages only from internal repositories containing pre-vetted packages, and enforce this client configuration.
Enable checksum verification and signature verification for all pulled packages.
Pin package versions to pre-vetted versions or ranges and use framework-specific lock files.
Register all private packages under the organization's scope.
Ensure all code referencing a private package uses the package's scope.
Force clients to fetch scoped packages solely from the internal registry.
Run pre-install scripts in a separate context without access to secrets or other sensitive resources.
Include package manager configuration files in every project repository to override insecure default client configurations.
Avoid publishing names of internal projects in public repositories.
Example attack scenarios
Scenario A — Dependency confusion
An attacker discovers the name of an internal NPM package used by the organization by finding references in a public repository. The attacker publishes a package with the same name on the public NPM registry with a higher version number. The build system, configured to check both internal and public registries, pulls the higher-versioned malicious package. The pre-install script executes, exfiltrating environment variables containing cloud credentials.
Scenario B — Dependency hijacking
An attacker compromises the account of a maintainer of a widely-used Python package on PyPI. They upload a new version containing a backdoor that executes during installation. Organizations configured to pull the latest version of the package automatically fetch and execute the compromised version on their build servers, granting the attacker access to build secrets and deployment credentials.
Detection guidance
Monitor package manager audit logs for unexpected package sources or version changes.
Compare checksums of fetched packages against known-good values.
Alert on packages pulled from public registries that share names with internal packages.
Audit package manager client configurations across build environments and developer workstations.
Scan dependency lock files for unexpected version changes or new dependencies.
Monitor outbound network connections from build nodes during dependency installation.
Remediation
Configure internal proxies as the sole package source for all build environments and developer workstations.
Register all internal package names under the organization's scope on relevant public registries to prevent namespace squatting.
Pin all dependency versions and enforce lock file usage.
Enable checksum and signature verification across all package manager configurations.
Isolate pre-install script execution from secrets and sensitive build resources.
Remove any references to internal package names from public repositories.
Harden all build environments according to the guidelines under CICD-SEC-7.
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