En junio de 2026, investigadores de Novee Security revelaron una clase de debilidad en CI/CD denominada Cordyceps. Analizaron aproximadamente 30,000 repositorios de alto impacto en los ecosistemas npm, PyPI, crates.io y Go, identificando 654 casos y confirmando más de 300 como completamente explotables. Las herramientas de compilación afectadas incluían proyectos publicados por Microsoft, Google, Apache, Cloudflare y la Python Software Foundation. El único requisito para un atacante es una cuenta gratuita de GitHub; no se necesita membresía en la organización ni privilegios elevados.
Todos esos pipelines mostraban estado verde. Los escáneres se ejecutaban, las verificaciones pasaban y los paneles reportaban resultados saludables durante todo el tiempo que la exposición existió. Los escáneres nunca fueron diseñados para detectar este peligro.
La vulnerabilidad está en la composición, no en el archivo
Los flujos de trabajo de GitHub Actions suelen activarse con pull_request, que se ejecuta en el contexto no confiable del fork, sin secretos del repositorio y con un token de solo lectura. El problema comienza con pull_request_target y workflow_run, que se ejecutan en el contexto del repositorio base con acceso a secretos y un GITHUB_TOKEN de lectura y escritura. Un atacante puede inducir a ambos a actuar sobre contenido controlado por el atacante proveniente del pull request que los activó. GitHub Security Lab denomina a esto 'pwn request'.
Tres primitivas causan el daño: la inyección de comandos, que interpola datos controlados por el atacante (nombre de rama, título, comentario) directamente en un paso run, ejecutándose sin escapar en un shell; la inyección de código mediante actions/github-script, que evalúa la entrada del atacante como JavaScript en tiempo de ejecución; y la escalada de privilegios entre flujos de trabajo, donde un workflow de bajo privilegio escribe datos no confiables en un artefacto o salida que luego otro workflow de alto privilegio lee y utiliza con el token del mantenedor. Ningún workflow es explotable por sí solo.
La vulnerabilidad existe por cómo se conectan, y por eso los escáneres permanecen verdes: una herramienta SAST o DAST busca patrones en un solo archivo, y cada archivo aquí es YAML válido y bien formado que hace exactamente lo que se le indicó. "Un escáner ve un workflow. Un atacante ve una cadena de cuatro pasos hacia una credencial permanente", explica Warden. No hay una línea única que marcar porque ninguna línea es incorrecta. Esa es la peor versión de una falla de medición: una luz roja envía a alguien a buscar un problema, y una luz verde manda a todos a casa.
Tus escáneres están verdes. Tu pipeline podría no estarlo.
Cordyceps pasó todas las comprobaciones porque ningún archivo de workflow individual estaba mal; la composición era explotable. Descubre cómo cerrar esa brecha gobernando lo que entra en tu compilación desde el origen, no solo lo que pasa el escaneo.
Un solo pull request, acceso de escritura persistente a contenido de seguridad distribuido
En el repositorio Azure Sentinel de Microsoft, Novee demostró que un comentario en un pull request podía ejecutar código anónimo del atacante en el CI de Microsoft y robar una clave de GitHub App sin caducidad, confirmado por el Centro de Respuesta de Seguridad de Microsoft. Sentinel es el SIEM de Microsoft, y su Centro de Contenido distribuye reglas de detección y playbooks automatizados directamente en los espacios de trabajo de los clientes. Una clave robada allí ofrece acceso de escritura persistente al contenido de seguridad del que dependen miles de organizaciones para detectar ataques, debilitado silenciosamente y distribuido como una actualización confiable.
El repositorio de muestra del AI Agent Development Kit de Google es una referencia que miles de desarrolladores copian al construir agentes en Google Cloud. Un solo pull request podía ejecutar código en el CI de Google y escalar a roles/owner en el proyecto asociado de Google Cloud, acceso permanente a nivel de propietario, confirmado por Google. Apache Doris tenía una ruta comparable para el robo de credenciales, confirmado y corregido por el equipo de seguridad de Apache. Tres organizaciones, un problema de composición, ninguna línea de código que un escáner pudiera señalar.
Nadie decidió confiar en ese pull request
La frase que debería detener a un líder de ingeniería es "límite de confianza que nadie auditó". Alguien configuró un workflow para tratar la entrada de un externo como si viniera de un mantenedor. Ningún humano tomó esa decisión a propósito. Este riesgo se acumuló, un commit razonable a la vez, y aumenta con los workflows generados por IA, donde el momento de la decisión puede no ser auditado en absoluto.
He puesto herramientas de IA en trabajo de ingeniería de producción y medido lo que cambiaron, por lo que diré claramente que el apalancamiento es real y no estoy argumentando para ralentizarlo. Pero Novee es explícito: la codificación agentiva es el multiplicador. Las herramientas de IA generan configuraciones de CI/CD rápidamente y reproducen los mismos patrones inseguros, por lo que un error se compone en potencialmente millones de repositorios, emitido con confianza y sin señal de procedencia.
El volumen de decisiones de workflow que una organización absorbe ahora ha superado un proceso de revisión dimensionado para la velocidad de salida humana. Nuestros sistemas de seguridad estándar tampoco están preparados. Cordyceps no es un CVE, por lo que nunca ingresa al modelo de enumeración. Además, NIST reconoció en abril de 2026 que ya no puede enriquecer cada CVE, con envíos aumentados un 263% desde 2020. Los riesgos se multiplican.
Afortunadamente, Novee no encontró evidencia de explotación en la naturaleza, y los proveedores nombrados han endurecido o parcheado. Sin embargo, este es un patrón explotable probado, no una sola brecha específica, y en gran medida no está parcheado por defecto en toda la industria.
Cierra el límite, luego gobierna lo que lo cruza
Las correcciones inmediatas valen la pena ahora: prefiere pull_request sobre pull_request_target para contribuciones no confiables, nunca verifiques el código head del pull request dentro de un workflow privilegiado, pasa los datos del evento a través de una variable de entorno entrecomillada en lugar de incrustarlos, establece permisos predeterminados de solo lectura, fija las acciones de terceros a un SHA de commit en lugar de una etiqueta móvil, y blinda los workflows privilegiados con aprobación manual para colaboradores primerizos.
Haz todo eso y habrás cerrado los problemas de hoy, pero no la clase de problemas. El próximo patrón se construirá a partir de pasos individualmente correctos, y también pasará el escaneo. El desarrollo impulsado por IA está ampliando esta brecha de gobierno en la cadena de suministro de software, y se está acelerando.
El control duradero es gobernar lo que tu compilación puede confiar en el origen, para que los componentes y workflows que ingresan a tu pipeline provengan de un origen gobernado con procedencia verificable, construidos desde la fuente en lugar de confiados por fe. Un upstream secuestrado que publica un paquete envenenado debe encontrarse y fallar una verificación en el punto de ingreso. Un humano es dueño de los límites de confianza. Esa propiedad tiene que operar a la velocidad a la que la IA está generando decisiones ahora, porque la revisión manual al final del pipeline no puede alcanzarla.
Cordyceps no derrotó las herramientas de seguridad de nadie. Pasó junto a ellas, porque cada pieza individual funcionó exactamente como fue diseñada. Esa es la trampa de medición en su forma más pura: el número se mantuvo verde mientras lo que se suponía que garantizaba dejó de ser cierto, si es que alguna vez lo fue. Esos pipelines no estuvieron expuestos porque los escáneres fallaron. Estuvieron expuestos porque pasar el escaneo no significaba que estuvieran gobernados. Durante un tiempo, nadie fue a buscar.
Un pipeline verde no es uno gobernado. Descubre qué está realmente corriendo en el tuyo. Patrocinado y escrito por ActiveState.