Introducción
Un repositorio GitHub sin una sola línea de código malicioso. Sin dependencias sospechosas, sin scripts dudosos, nada que active los escáneres de cadena de suministro habituales. Y, sin embargo, tras una cadena de ejecución de tres pasos, un atacante obtiene una shell interactiva con los privilegios del desarrollador —claves API, variables de entorno y archivos de configuración incluidos—. Esta es la demostración que los investigadores de Mozilla 0DIN (Zero Day Investigative Network) acaban de publicar, apuntando a Claude Code, Cursor, GitHub Copilot y Gemini CLI.
Tres niveles de indirección, cero código malicioso
El mecanismo se apoya en una cadena deliberadamente ordinaria. Primera pieza: un paquete Python aparentemente funcional, pero que se niega a ejecutarse hasta que no se lanza un comando de inicialización. Su mensaje de error sugiere explícitamente cuál es ese comando. Segunda pieza: el agente IA interpreta ese mensaje como un problema técnico rutinario y lo ejecuta para desbloquear la situación, sin solicitar validación al usuario. Tercera pieza: ese comando de inicialización invoca un script de shell que consulta un registro DNS TXT perteneciente a un dominio controlado por el atacante. La respuesta DNS contiene el payload real —una reverse shell— que se ejecuta de inmediato.
Resultado: una sesión interactiva con los derechos del desarrollador, y ningún código malicioso ha transitado jamás por el repositorio GitHub.
Lo que sus herramientas de seguridad no detectarán
Aquí reside el desafío central para los equipos de seguridad. Las herramientas de análisis de composición de software (SCA) y los escáneres de secretos operan sobre el código presente en el repositorio en el momento del análisis. El payload, en cambio, solo existe en el momento de la resolución DNS —varios pasos después de la fase de análisis—. Las soluciones SAST o de firma de commits no detectan ninguna anomalía, porque en los archivos fuente no hay nada anómalo que ver.
Esta arquitectura de tres niveles de indirección es precisamente lo que hace que el ataque sea impermeable a las herramientas clásicas de la cadena CI/CD. Los controles habituales de la cadena de suministro de software se detienen en el borde del repositorio; el peligro comienza después.
La automatización como vector de ataque
La formulación de los investigadores de 0DIN es especialmente reveladora: «Claude Code no decidió abrir una shell. Decidió corregir un error». Este desplazamiento semántico está en el núcleo del problema. Los agentes de código modernos están diseñados para ser eficientes —resolver bloqueos sin fricción, minimizar interrupciones—. Es precisamente ese comportamiento el que se convierte en el vector de ataque.
El atacante no busca inyectar código en el repositorio. Fabrica una situación de error creíble y delega la ejecución del payload al automatismo del agente.
Qué implica esto para su postura de seguridad
Para los CISO y los responsables de DevOps, esta demostración exige varios ajustes concretos. En primer lugar, integrar el comportamiento de los agentes IA en el modelo de amenazas: una herramienta capaz de ejecutar comandos de shell es un vector de ejecución potencial, al igual que un pipeline CI/CD. A continuación, endurecer la configuración de los agentes —deshabilitar la ejecución automática de comandos sugeridos por mensajes de error, o exigir confirmación explícita antes de cualquier llamada al sistema—. Finalmente, monitorizar las resoluciones DNS inusuales emitidas desde los equipos de desarrollo: un registro TXT recuperado desde un dominio desconocido durante una sesión de código es una señal débil que no debe ignorarse.
Mozilla 0DIN recomienda que los agentes expongan la totalidad de la cadena de ejecución —scripts incluidos— antes de lanzarlos, en lugar de confiar únicamente en el contenido del repositorio clonado. Gartner, por su parte, ha clasificado la inyección de prompt entre las cuatro amenazas críticas de su hoja de ruta de ciberseguridad 2026-2027. El mensaje es inequívoco: la superficie de ataque de los entornos de desarrollo se ha ampliado, y las posturas defensivas deben adaptarse en consecuencia.

