Vos pipelines sont du code. Alors on les lit.
Analyse statique de vos fichiers de workflow. Injections, actions non épinglées, tokens aux droits excessifs, dérive OIDC.
Six dialectes CI alimentent un seul parseur : GitHub Actions, GitLab CI, Bitbucket, Azure DevOps, Jenkins, CircleCI.Le commit a3f9c2e touche release.yml. Deux runs sortent du build : #4821 et #4822.Au point de contrôle, release.yml est lu comme le lirait un attaquant : déclencheur, permissions, chaque uses: et run:.#4821 est bloqué : pull_request_target avec contents: write et une action non épinglée n'atteignent jamais le job de déploiement.#4822 part en prod-eu : SHA épinglé, token en lecture seule, le titre de la PR tenu à l'écart du shell.
Six failles de pipeline,
lues dans le fichier.
Nous analysons vos workflows sous forme d'AST et de graphe de flux de données, puis nous appliquons nos propres jeux de règles.
Par défaut, le GITHUB_TOKEN a les droits write sur presque tout. Nous détectons les permissions: non définies et les droits trop larges que vous n'utilisez pas, et recommandons le strict minimum pour chaque job.
PR non fiables qui écrivent dans des caches lus par des branches protégées. Runners auto-hébergés réutilisés sans isolation.
@v3, @main, @latest : chaque référence flottante est un futur incident de supply chain.
Identité fédérée AWS, Azure et GCP depuis GitHub, GitLab et CircleCI.
Dès que vous interpolez ${{ github.event.* }}, un nom de branche, un titre de PR ou le corps d'une issue dans un bloc run:, vous ouvrez votre propre pipeline à l'injection shell.
echo $SECRET, secrets passés en argument positionnel, secrets journalisés dans des artefacts, secrets intégrés en dur dans des couches de conteneur.
Survolez une ligne signalée pour afficher son correctif.Touchez une note pour afficher son correctif.
Repérez l'erreur de config
avant que le runner ne tourne.
La plupart des incidents de pipeline sont déjà visibles dans le YAML. Nous le lisons comme un attaquant.
.github/workflows/release.yml:12sourcemessage: ${{ github.event.pull_request.title }}.github/workflows/notify.yml:4hopmessage: { type: string }.github/workflows/notify.yml:10sinkrun: echo "${{ inputs.message }}"
notify.yml:10pull_request.title reaches run: through inputs.message.
Vos fichiers de workflow reçoivent la même attention que votre code applicatif : analyse de l'AST, propagation de taint, analyse de la source au sink.
Connectez le dépôt,
le reste est automatique.
Connectez GitHub ou GitLab. Vos fichiers de pipeline sont lus à chaque push, ou à la demande.
.github/workflows/ci.ymlon: pushjobs: test: runs-on: ubuntu-24.04 steps: - run: npm test
Rien à ajouter : ce fichier reste tel quel.
.gitlab-ci.ymlRien à ajouter : ce fichier reste tel quel.
bitbucket-pipelines.ymlRien à ajouter : ce fichier reste tel quel.
azure-pipelines.ymlRien à ajouter : ce fichier reste tel quel.
JenkinsfileRien à ajouter : ce fichier reste tel quel.
.circleci/config.ymlRien à ajouter : ce fichier reste tel quel.
Le fonctionnement,
en détail.
La documentation détaille l'installation, la configuration et chaque option.
Lire la documentationen anglaisCode Scanning / CI/CD Integrations
GitHub Action Setup for Local Code Scanning
La GitHub Action officielle et un workflow prêt à copier-coller, ainsi que des guides pour sept autres plateformes de CI.
Questions fréquentes sur le scanner CI/CD.
Vous scannez mes fichiers de pipeline sans ajouter d'étape dans le pipeline ?
Exactement. Connectez le dépôt une seule fois. Nos scanners lisent directement .github/workflows, .gitlab-ci.yml, Jenkinsfile et les autres fichiers, puis signalent les alertes en commentaire sur la ligne fautive et dans le dashboard unifié. Aucune étape à ajouter à votre pipeline, aucun runner privilégié à installer.
Quels formats de fichiers de pipeline savez-vous analyser ?
Workflows GitHub Actions (y compris les workflows composites et réutilisables), GitLab CI YAML (y compris les chaînes `include:`) et Jenkinsfile (Groovy déclaratif et scripté). Les définitions d'actions (action.yml et les wrappers d'actions Dockerfile) sont lues elles aussi, pour suivre les flux de taint d'une action à l'autre. D'autres dialectes s'ajoutent à la demande de nos clients.
Comment détectez-vous une injection de workflow qui ne se déclenche qu'avec certains payloads ?
Nous n'avons pas besoin du payload. Nous considérons comme contaminée chaque valeur issue de `github.event.*`, `inputs.*`, `head_ref`, `pull_request.title/body`, des refs de branche et de tag venant d'un fork, puis nous la suivons à travers `env:`, `with:`, les valeurs de sortie et les frontières des composite actions. Si la valeur contaminée atteint un bloc `run:`, un `eval` dans une action JavaScript ou une commande avec substitution shell, c'est une alerte, que vous ayez déjà été exploité ou non.
Détectez-vous les GitHub Actions malveillantes ou victimes de typosquatting ?
Oui. Chaque entrée `uses:` est croisée avec le flux OpenSSF des actions malveillantes, la liste des éditeurs vérifiés et nos propres heuristiques de typosquatting sur les noms d'actions. Les tags non épinglés sont signalés à part, car même une action légitime devient un risque de supply chain si elle n'est pas épinglée sur un SHA.
Et les secrets dans les fichiers de workflow ?
Tout ce qui correspond aux motifs d'entropie et de fournisseurs du jeu de règles Secret Detection est aussi signalé dans les fichiers CI/CD. Nous détectons également les secrets passés en argument positionnel de CLI (visibles dans `ps`), les secrets écrits dans les logs via `echo` et les secrets figés dans les inputs de workflows réutilisables. Les alertes sont dédupliquées avec celles du scanner de secrets : vous ne les voyez pas deux fois.
Pouvez-vous scanner la configuration des runners auto-hébergés ?
Oui. Nous analysons les directives `runs-on:`, détectons les runners dont le système de fichiers est partagé entre des PR non fiables, signalons les contrôles de type `actions/cleanup` manquants et alertons sur les jobs qui passent en root ou montent le socket Docker.
Installez VibeDefend en 5 secondes.
Une commande relie chaque agent de code de votre machine à CybeDefend : vos règles métier, vos référentiels de conformité et des garde-fous qui bloquent les appels destructeurs avant leur exécution.
npx -y @cybedefend/vibedefend@latest installClaude Code
CursorOpenAI Codex
WindsurfVS Code Copilot