← OWASP Top 10 CI/CD Security Risks
CICD-SEC-8
Ungoverned Usage of 3rd Party Services
Third-party apps and services are connected to the organization with broad access and little review. Their compromise becomes yours, through tokens you granted and forgot.
Summary in ghtier's words. Read OWASP CI/CD's own text
Incidents (6)
Last 12 months (0): none
2025
- GitHub MCP / agentic token breadthApplication May 2025
- Salesloft Drift GitHub → AWS pivotOrganization March 2025
- OAuth consent phishing at scaleUser January 2025
2022
- CircleCI session-cookie theftUser December 2022
- Heroku / Travis CI OAuth token theftApplication April 2022
- GitHub App installation token abuseApplication January 2022
Attack path techniques used
- Push directly, without review (Submit malicious code)
- Use a trusted colleague's account (Submit malicious code)
- Add a workflow that dumps secrets (Steal CI secrets and tokens)
- Steal a session and read secrets from a CI vendor (Steal CI secrets and tokens)
- Clone private repos with a stolen token (Read or expose private code)
- Get an agent to copy private code into public (Read or expose private code)
- Add a guest collaborator or new app (Keep access)
Checklist items
The fixes for those techniques, plus the items ghtier tags with this risk.
- Branch protection on default/release branches: required reviews + required status checks
- Rulesets applied: push restriction, tag protection, sensitive file-path protection
- Enforce MFA for every member (prefer hardware/FIDO2 keys over SMS or app codes)
- Require signed commits on the default branch of sensitive repos
- CODEOWNERS in place, required on sensitive paths
- Inventory every Actions secret and its visibility/scope; the results are usually surprising
- Cloud credentials migrated from static keys to OIDC federation, scoped to repo + branch
- Enforce an IP allow list for Git and web UI access from trusted ranges
- Write and rehearse a credential-rotation runbook before you need it
- Set an organization-wide maximum PAT lifetime (90 days is a reasonable default)
- Disable classic PATs organization-wide, forcing migration to fine-grained PATs
- Audit and revoke stale PATs, unused SSH keys, and inactive accounts
- Review every currently installed GitHub App / OAuth App and its granted scope
- Keep OAuth app access restrictions on and require security/IT approval for new apps
- Restrict public repo creation, visibility changes, repo deletion, private forks and outside collaborator invites to owners
- Run a quarterly access review of owners, repo admins, team membership and outside collaborators
- Maintain a documented list of allowed apps, their use case, and their owner
- Decide which AI coding agents and MCP servers may work on the organization's repositories
- Restrict which Actions can run to GitHub-verified creators or an internal allow-list
Permissions involved
The GitHub permissions those incidents abused.