Poisoned Pipeline Execution
La vulnérabilité CI/CD la plus dangereuse ne change pas une seule ligne de code applicatif. Elle change le pipeline - et exécute du code arbitraire dans le build, avec ses privilèges et ses secrets.
Ce qu'est le PPE
Le Poisoned Pipeline Execution (OWASP CICD-SEC-4) abuse de l'accès en écriture au système de gestion de code pour que le pipeline CI exécute des commandes malveillantes - avec accès aux secrets, artefacts et réseau interne du runner de build.
- D-PPE (Direct) : l'attaquant change directement la configuration CI (le fichier de workflow).
- I-PPE (Indirect) : il change des fichiers référencés par la CI - scripts de build, tests, configs de lint.
Megalodon : le PPE à l'échelle industrielle
Le 18 mai 2026, la campagne Megalodon a injecté des fichiers de workflow malveillants dans plus de 5 561 dépôts GitHub en une seule fenêtre de 6 heures, un d-PPE d'école qui exploitait des dépôts à la protection de branche faible ou absente. Point crucial : l'attaquant n'a jamais touché au code applicatif, seulement aux définitions de pipeline, pratiquement invisibles pour les relecteurs de code.
L'attaque npm TanStack (11 mai 2026) a montré des faiblesses connexes : pull_request_target non sécurisé, empoisonnement de cache et vol de token dans les workflows GitHub Actions.
Le déroulé
Voici comment se déroule une attaque PPE - et où PoisonZero la rompt quand un agent dans le runner détient des chemins protégés :
Protection de branche absente
Des PR de fork ou des règles faibles permettent l'accès en écriture aux fichiers de pipeline.
Fichier de pipeline empoisonné
Seule la config workflow/CI est changée - le code applicatif reste intact.
Le runner exécute
Avec les privilèges et les secrets du job.
PoisonZero évalue les écritures dans les chemins protégés d'agent/config du runner.
dangereux → annulationExfil de secrets → backdoor
↳ Backdoor dans l'artefact signé
↳ Mouvement latéral vers d'autres dépôts
Pourquoi les relectures le manquent
Les relecteurs de code regardent la logique métier. Un fichier de pipeline modifié passe entre les mailles - puis s'exécute avec tous les privilèges. C'est justement cette couche « invisible » qui rend le PPE si efficace.
Comment PoisonZero vous protège ici
De plus en plus souvent, des agents IA tournent dans le pipeline (voir Les agents IA dans le pipeline CI/CD). PoisonZero protège leur mémoire et leur config sur le runner : il vérifie chaque changement de ces chemins protégés avant qu'il prenne effet - une écriture inoffensive passe, une écriture dangereuse est annulée fail-closed avec une piste d'audit complète, une écriture incertaine est mise en attente de révision. Voir aussi : Vers de la supply chain.
Quand cet agent conserve une mémoire persistante, la mémoire elle-même est concernée - OWASP ASI06 (Empoisonnement de mémoire et de contexte) dans le Top 10 OWASP pour les applications agentiques, le pendant côté agent de CICD-SEC-4. Voir empoisonnement de mémoire.
Protégez les agents dans le pipeline.
PoisonZero évalue les écritures dans les chemins protégés - sur les runners CI aussi.
Sign me up