Prodotto · CI/CD

Le tue pipeline sono codice.Le leggiamo come tale.

Uno scanner di sicurezza CI/CD dedicato. Analisi statica sui file di workflow nel tuo repo: workflow injection, action non pinnate, token troppo permissivi, drift OIDC. Intercettati prima che qualunque runner prenda il job.

Prenota una demo di 30 min
Cosa intercetta lo scanner

Sei classi di flaw pipeline-as-code, lette dal file, prima che qualunque runner giri.

I nostri scanner parsano le tue config di pipeline in un AST e un grafo di dataflow, poi applicano rule pack proprietari nutriti da OpenSSF Secure Workflows, playbook StepSecurity e la nostra ricerca su incidenti di poisoning reali. I finding affluiscono nella dashboard unificata accanto a SAST, SCA, IaC, Secrets e Container.

Superficie di review pull request con una riga YAML annotata come sink tainted, finding mostrato inline accanto allo step incriminato

Workflow injection (CWE-77 / 78)

Ogni volta che interpoli ${{ github.event.* }}, nomi di branch, titoli di PR o body di issue in un blocco `run:`, stai facendo shell injection sulla tua stessa pipeline. Lo scanner marca come tainted ogni input non fidato e lo segue attraverso ogni step finché atterra in una shell, anche attraverso le composite action.

Griglia di ecosistemi sorgente di action (GitHub, GitLab, Docker, Jenkins) cross-referenziati per publisher non pinnati e non fidati

Action non pinnate e non fidate

@v3, @main, @latest, ogni ref fluttuante è un futuro incidente supply-chain. Lo scanner segnala ogni action non pinnata a uno SHA completo, ogni action da publisher non verificato, e la incrocia con il feed delle action malevole.

Token troppo permissivi

I default scope del GITHUB_TOKEN sono `write` su quasi tutto. Rileviamo `permissions:` non settati, scope larghi che non usi, e raccomandiamo il set minimo per job.

Misconfiguration di trust OIDC

Identità federata AWS, Azure e GCP da GitHub, GitLab e CircleCI. Intercettiamo pattern `sub` troppo larghi, audience check mancanti e trust policy che qualunque fork può assumere.

Pattern di leak di secret

`echo $SECRET`, secret passati come argomenti posizionali, secret loggati negli artefatti, secret incorporati nei layer del container. Rilevati staticamente, prima che il runner emetta una singola riga.

Cache e artefact poisoning

PR non fidate che scrivono in cache lette da branch protetti. Riuso di self-hosted runner senza isolamento. Upload di artefact da contesti non fidati. L'intera classe di CVE di cache-poisoning post-2024.

Perché uno scanner statico

Intercetta la misconfig prima che il runner giri.

La maggior parte degli incidenti di pipeline è visibile nello YAML. Lo leggiamo come lo legge un attaccante, staticamente, con contesto completo di dataflow, così il finding atterra nella review PR, non in un post-mortem.

Pipeline come asset di prima classe

I file di workflow ricevono lo stesso scrutinio del tuo codice applicativo: parsing AST, propagazione di taint, analisi source-to-sink. Il threat model è specifico per pipeline: trigger non fidati, sorgenti di action, scope di token, trust OIDC, isolamento runner.

GitHub Actions, GitLab CI, Jenkinsfile

Parser di prima classe per i dialetti CI che oggi muovono la maggior parte delle pipeline, inclusi reusable workflow, catene `include:` GitLab e Jenkinsfile (declarative e scripted Groovy). Nuovi dialetti arrivano a richiesta.

I finding affluiscono nella PR

Ogni finding atterra come commento inline sulla riga YAML incriminata, stessa superficie del SAST. Nessuna nuova dashboard da imparare, nessuna queue di triage separata, nessuno step runner privilegiato da installare.

Come gira lo scanner

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.

Esplora tutte le integrazioni
FAQ

Domande frequenti sullo scanner CI/CD.

Analizzate i miei file di pipeline, non come step dentro la mia pipeline?

Esatto. Collega il repo una volta. I nostri scanner leggono direttamente .github/workflows, .gitlab-ci.yml, Jenkinsfile e gli altri, poi riportano i finding come commenti inline sulla riga incriminata e nella dashboard unificata. Nessuno step da aggiungere alla tua pipeline, nessun runner privilegiato da installare.

Quali formati di file pipeline parsate?

Workflow GitHub Actions (inclusi composite e reusable workflow), YAML GitLab CI (incluse catene `include:`) e Jenkinsfile (declarative e scripted Groovy). Anche le definizioni di action (action.yml più wrapper Dockerfile-action) sono lette, così i taint flow cross-action sono tracciati. Altri dialetti vengono aggiunti su richiesta del cliente.

Come trovate il workflow injection se si innesca solo su payload specifici?

Non ci serve il payload. Marchiamo come tainted ogni valore che viene da `github.event.*`, `inputs.*`, `head_ref`, `pull_request.title/body`, ref di branch e tag da un fork, e lo seguiamo attraverso `env:`, `with:`, valori di output e i confini delle composite action. Se il valore tainted raggiunge un blocco `run:`, un `eval` in action JavaScript o un comando con shell substitution, è un finding, indipendentemente dal fatto che tu sia già stato sfruttato.

Intercettate GitHub Action malevole o typo-squattate?

Sì. Ogni voce `uses:` è incrociata con il feed OpenSSF di action malevole, la lista dei publisher verificati e le nostre euristiche di typo-squat sui nomi di action. I tag non pinnati sono segnalati a parte, perché anche un'action legittima diventa un rischio supply-chain se non la pinni a uno SHA.

E i secret nei file di workflow?

Tutto ciò che corrisponde ai pattern di entropia e provider del nostro rule pack Secret Detection viene segnalato anche nei file CI/CD. Rileviamo anche secret passati come argomenti posizionali CLI (visibili in `ps`), secret loggati via `echo` e secret incorporati negli input di reusable workflow. I finding sono deduplicati con lo scanner di secret così non li vedi due volte.

Potete analizzare configurazioni di runner self-hosted?

Sì. Parsiamo le direttive `runs-on:`, rileviamo runner con stato filesystem condiviso tra PR non fidate, segnaliamo l'assenza di guardie tipo `actions/cleanup`, e avvertiamo sui job che si elevano a root o montano la socket Docker.

Live · appena rilasciato

Installa VibeDefend in 5 secondi.

Un solo comando collega ogni agente di coding sulla tua macchina a CybeDefend: le tue regole di business, i tuoi framework di compliance e guards che bloccano le chiamate distruttive prima che partano.

Installa in 5 secondiNode 18.17+
npx -y @cybedefend/vibedefend@latest install
Auto-rileva
  • Claude CodeClaude Code
  • CursorCursor
  • OpenAI CodexOpenAI Codex
  • WindsurfWindsurf
  • GitHub CopilotVS Code Copilot
Leggi il README su npm