Le tue pipeline sono codice. Quindi le leggiamo.
I tuoi file di workflow letti come codice: injection, action non pinnate, token e trust, ognuno con la sua correzione.
- CriticaInjection in un workflowrelease.yml:24
run: echo "${{ github.event.pull_request.title }}"env: TITLE: ${{ github.event.pull_request.title }}run: echo "$TITLE"Fix prontoIl titolo passa in una variabile d'ambiente, fuori dalla shell.
Le falle della pipeline, trovate nel file.
Injection in un workflow
- ${{ github.event.pull_request.title }}
Action non pinnate
- actions/checkout@v3
- actions/setup-node@main
Token con troppi privilegi
- permissions: write-all
Fiducia OIDC
- "sub": "repo:acme/*"
L'injection, corretta nel workflow.
Come è scritto
run: echo "${{ github.event.pull_request.title }}"Il titolo della pull request arriva a run: nella shell.
Con la correzione
env: TITLE: ${{ github.event.pull_request.title }}run: echo "$TITLE"Il titolo passa in una variabile d'ambiente, fuori dalla shell.
Corretto dal tuo agente, nella sessione.
Il tuo agente legge questi finding mentre scrive e li corregge nella stessa sessione.
- CI/CDScansiona il repository a ogni push.Trovato
- VibeDefendPassa il finding al tuo agente di codice.Servito
- Il tuo agenteLo corregge nella sessione.Corretto
- CommitEntra senza la falla.Pulito
Claude Code
Cursor
WindsurfGitHub Copilot
OpenAI Codex
Inizia da un repository.
Collega GitHub, GitLab, Bitbucket o Azure DevOps, scegli un repository e la prima scansione parte.
Nel dettaglio
Sei falle di pipeline, trovate nel file.
- CWE-77, CWE-78
Injection in un workflow
Action non pinnate
Token con troppi privilegi
Fiducia OIDC
Fughe di segreti
Avvelenamento di cache e artefatti
Tutto quello che controlla
Intercetta la misconfig prima che il runner giri.
La maggior parte degli incidenti di pipeline è già visibile nello YAML. Lo leggiamo come lo legge un attaccante.
Le pipeline, un asset a tutti gli effetti
GitHub Actions, GitLab CI, Jenkinsfile
I finding arrivano nella PR
Sei falle di pipeline, trovate nel file.
Convertiamo i tuoi workflow in un AST e in un grafo del flusso dei dati, poi applichiamo i nostri rule pack.
Workflow injection (CWE-77 / 78)
Action non pinnate e non affidabili
Token troppo permissivi
Trust OIDC mal configurato
Secret che trapelano
Poisoning di cache e artefatti
Dallo YAML al fix
Lo YAML è insicuro.
Giudicato prima del run.
Fissato e limitato.
Collega il repo, il resto è automatico.
Collega GitHub o GitLab. I nostri scanner pullano i file di pipeline e girano a ogni push (o a richiesta). Nulla da installare nella tua CI, nessuno step runner privilegiato. I finding affluiscono nella dashboard unificata e nella tua review PR.
Sei dialetti CI alimentano un solo parser: GitHub Actions, GitLab CI, Bitbucket, Azure DevOps, Jenkins, CircleCI.
Il commit a3f9c2e modifica release.yml. Dalla build partono due run: #4821 e #4822.
Al gate, release.yml viene letto come lo leggerebbe un attaccante: trigger, permessi, ogni uses: e run:.
#4821 è bloccata: pull_request_target con contents: write e un'action non pinnata non arrivano mai al job di deploy.
#4822 va in prod-eu: SHA pinnato, token in sola lettura, il titolo della PR tenuto fuori dalla shell.