Poisoned Pipeline Execution
La vulnerabilidad de CI/CD más peligrosa no cambia ni una sola línea de código de la aplicación. Cambia la pipeline - y ejecuta código arbitrario en el build con sus permisos y sus secrets.
Qué es el PPE
Poisoned Pipeline Execution (OWASP CICD-SEC-4) abusa del acceso de escritura al sistema de control de versiones para que la pipeline de CI ejecute comandos maliciosos - con acceso a los secrets, los artefactos y la red interna del runner de build.
- D-PPE (Direct): el atacante modifica la configuración de CI directamente (el archivo del workflow).
- I-PPE (Indirect): modifica archivos referenciados por el CI - scripts de build, tests, configuraciones de lint.
Megalodon: PPE a escala industrial
El 18 de mayo de 2026, la campaña Megalodon inyectó, en una única ventana de 6 horas, archivos de workflow maliciosos en más de 5.561 repos de GitHub - un d-PPE de manual que explotaba repos con protección de ramas débil o inexistente. Lo decisivo: el atacante nunca tocó el código de aplicación, solo las definiciones de pipeline - prácticamente invisible para los revisores de código.
El ataque a npm de TanStack (11 de mayo de 2026) mostró debilidades relacionadas: pull_request_target inseguro, cache poisoning y robo de tokens en workflows de GitHub Actions.
El recorrido
Así se desarrolla un ataque PPE - y dónde lo corta PoisonZero cuando un agente en el runner tiene rutas protegidas:
Falta protección de ramas
Las PRs de forks o las reglas débiles permiten el acceso de escritura a los archivos de pipeline.
Archivo de pipeline envenenado
Solo se cambia la configuración del workflow/CI - el código de la app permanece intacto.
El runner ejecuta
Con los permisos y los secrets del job.
PoisonZero evalúa las escrituras a las rutas protegidas de agente/config en el runner.
peligroso → revertExfil de secrets → backdoor
↳ Backdoor en el artefacto firmado
↳ Movimiento lateral hacia otros repos
Por qué las revisiones lo pasan por alto
Los revisores de código miran la lógica de negocio. Un archivo de pipeline modificado se cuela - y luego se ejecuta con plenos permisos. Es justamente esta capa "invisible" la que hace tan eficaz al PPE.
Cómo te protege PoisonZero aquí
Cada vez con más frecuencia, hay agentes de IA corriendo en la pipeline (véase Agentes de IA en la pipeline de CI/CD). PoisonZero protege su memoria y su config en el runner: comprueba cada cambio en esas rutas protegidas antes de que surta efecto - una edición inofensiva pasa, una peligrosa se revierte fail-closed con un rastro de auditoría completo, una que no está clara se retiene para revisión. Relacionado: Gusanos de la cadena de suministro.
Si ese agente mantiene memoria persistente, la propia memoria entra en juego - OWASP ASI06 (Memory & Context Poisoning) en el OWASP Top 10 for Agentic Applications, la contraparte del lado del agente de CICD-SEC-4. Véase memory poisoning.
Protege a los agentes en la pipeline.
PoisonZero evalúa las escrituras a rutas protegidas - también en los runners de CI.
Sign me up