Imagen ilustrativa generada con IA
Git convertido en una trampa: siete agentes de IA pueden ejecutar código desde repositorios
Siete agentes IA ejecutan código arbitrario por core.fsmonitor de Git al analizar repositorios maliciosos. Conoce productos afectados y parches.
Texto generado por inteligencia artificial, publicado sin revisión humana. Transparencia IA
Ocho vulnerabilidades en herramientas de desarrollo asistido
El 2 de septiembre de 2026 salió a la luz una clase de vulnerabilidades que afecta a siete agentes de IA para el desarrollo de software desde la línea de comandos. En determinadas condiciones, un repositorio preparado por un atacante puede inducir a estas herramientas a ejecutar comandos arbitrarios en el host.
Se identificaron ocho fallos en total en goose, Codex, Claude Code, Hermes Agent, Qwen Code, Grok Build y Cursor. El problema no depende de prompts maliciosos, jailbreaks del modelo ni permisos concedidos a las herramientas de IA. La ejecución se produce cuando el agente invoca automáticamente Git para reconstruir el contexto del proyecto.
El comando del atacante se ejecuta con los privilegios del usuario local, fuera del sandbox del agente y sin solicitar confirmación. Por tanto, puede leer, modificar o eliminar archivos, utilizar las credenciales de la cuenta y acceder a los secretos presentes en las variables de entorno, incluidas las posibles claves de API.
En algunos productos, el payload se ejecuta antes de que el usuario marque el workspace como confiable. En otros, se activa antes de la autenticación, al pulsar la primera tecla o incluso antes de que el agente contacte con el modelo de lenguaje.
No se han observado ataques que hayan explotado estas vulnerabilidades. Además, ninguno de los CVE analizados figura en el catálogo Known Exploited Vulnerabilities de CISA, por lo que no existe una fecha límite federal de actualización asociada.
El comando oculto dentro de .git/config
El principal vector de ataque es core.fsmonitor, una opción legítima de Git diseñada para acelerar la detección de archivos modificados. Su valor puede indicar un comando externo que Git ejecuta durante determinadas operaciones sobre el índice.
Un repositorio malicioso puede contener una configuración similar:
[core]
fsmonitor = <comando>
La línea se encuentra en el archivo local .git/config. Cuando un agente ejecuta en segundo plano operaciones como git status o git diff, Git lee la configuración y puede iniciar el comando especificado por el atacante.
El modelo de IA no interviene en la cadena. El fallo surge de la interacción entre una función muy flexible de Git y la automatización introducida por los asistentes de programación.
Sin embargo, el repositorio debe llegar a la víctima con el directorio .git intacto. Entre los posibles canales se incluyen archivos comprimidos, carpetas sincronizadas, unidades compartidas, memorias USB, volúmenes montados, repositorios anidados y checkouts generados por pipelines de CI.
Un git clone normal no conserva la configuración local maliciosa de la forma necesaria para este ataque. Por tanto, el mayor riesgo afecta a los proyectos recibidos como directorios completos o extraídos de archivos comprimidos, no a los repositorios clonados mediante el flujo habitual de Git.
Las barreras de confianza del agente llegan demasiado tarde. En Claude Code y Hermes Agent, el comando puede ejecutarse antes de aceptar el workspace; en Qwen Code, puede iniciarse antes de la autenticación. Grok Build puede activarlo al pulsar la primera tecla, mientras que goose puede ejecutarlo antes de contactar con el modelo.
Versiones vulnerables y actualizaciones disponibles
El estado de las correcciones varía considerablemente entre los siete productos.
| Producto | Versiones afectadas o verificadas | Corrección y estado |
|---|---|---|
| goose | Todas las versiones anteriores a la 1.44.0; prueba en la 1.41.0 |
Corregida en la 1.44.0 |
| Codex CLI | De la 0.102.0 a la 0.130.0 |
Corregida en la 0.131.0 |
| Codex Desktop macOS | De la 260202.0859 a la 26.513.31313 |
Corregida en la 26.519.22136 |
| Codex Desktop Windows | De la 26.304.38 a la 26.513.40821 |
Corregida en la 26.519.21041 |
| Codex Microsoft Store | De la 26.304.38.0 a la 26.513.4821.0 |
Corregida en la 26.519.2081.0 |
| Claude Code, ruta FSMonitor | 2.1.193, verificada como vulnerable |
Corregida en la 2.1.196 |
Claude Code, ultrareview |
Confirmada en la 2.1.252 |
Estado de las versiones posteriores desconocido |
| Hermes Agent | 0.18.2 y 0.21.0 |
No había corrección disponible en las pruebas reportadas |
| Qwen Code | 0.19.6 y 0.22.3 |
No había corrección disponible |
| Grok Build | 0.2.93 y 1.0.13 |
No había corrección disponible |
| Cursor CLI | Versiones exactas no comunicadas | Corrección disponible, versión no indicada |
En goose, identificado como CVE-2026-72718, el comando goose review utiliza el binario de Git instalado en el sistema. Las funciones encargadas de recopilar el contexto ejecutan git diff --name-only HEAD y git diff HEAD sin neutralizar core.fsmonitor.
La vulnerabilidad está clasificada como High, con una puntuación CVSS v4 de 7,0/10 y categoría CWE-94. El aviso GHSA-r5pp-p5r8-466r, publicado el 24 de julio, atribuye el descubrimiento a Francisco Rosales, de Manifold Security.
OpenAI publicó tres CVE para Codex, procedentes de tres grupos de investigación independientes. En el caso de CVE-2026-19592, el proceso auxiliar se ejecuta fuera del sandbox y sin aprobación. El fallo tiene una puntuación CVSS 3.1 de 7,3. Aunque la versión actual de Codex CLI verificada era la 0.152.1, las instalaciones bloqueadas por debajo de la 0.131.0 siguen expuestas.
Claude Code tiene dos rutas distintas
Claude Code requiere una evaluación independiente porque se identificaron dos mecanismos de ataque.
El primero aprovecha core.fsmonitor: podía reproducirse en la versión 2.1.193 y se corrigió en la 2.1.196. El informe se presentó el 26 de junio y el parche llegó el 29 de junio, pero el caso se cerró como duplicado de otro informe recibido ese mismo día.
La segunda ruta pasa por claude ultrareview y utiliza otra clave de configuración de Git, que no se ha divulgado. El ataque funcionaba en la 2.1.252; la comparación más reciente se realizó con la 2.1.258, sin determinar si una versión posterior había eliminado el problema.
Anthropic ya había abordado comportamientos previos a la confianza. La versión 2.0.34 modificó el inicio para impedir un git status antes de aprobar el workspace, pero un comportamiento relacionado reapareció en la 2.1.193.
También CVE-2026-55607, con una puntuación CVSS de 8,8, está relacionada con la ejecución de Git FSMonitor durante operaciones sobre worktrees. No se ha publicado un aviso específico que cubra las dos nuevas rutas descritas para Claude Code.
Cómo comprobar un repositorio antes de abrirlo
La primera medida consiste en tratar como no confiables las carpetas de proyecto recibidas con .git ya presente. Antes de iniciar un agente de IA, se puede comprobar el valor local de FSMonitor:
git config --get core.fsmonitor
La configuración global puede comprobarse con:
git config --global --list | grep fsmonitor
También es necesario inspeccionar manualmente .git/config y buscar, como mínimo:
core.fsmonitor;core.hooksPath;attr.tree;- filtros
clean; - filtros
process.
La presencia de estas opciones no demuestra automáticamente que exista un ataque. Sin embargo, es necesario analizar su valor, especialmente si invoca scripts, intérpretes, binarios o rutas externas al repositorio.
Si FSMonitor no es necesario, puede desactivarse globalmente:
git config --global core.fsmonitor false
Por su parte, los desarrolladores de agentes deberían neutralizar explícitamente las configuraciones controlables por el repositorio durante cada invocación automatizada de Git. Para FSMonitor, una llamada defensiva podría adoptar esta forma:
git -c core.fsmonitor=false status
Sin embargo, limitarse a esta opción no es suficiente. Los hooks, atributos y filtros de Git también pueden modificar el comportamiento de los procesos automatizados y deben incluirse en el modelo de seguridad.
Parches inmediatos, pero algunos productos siguen expuestos
Los usuarios de goose deben instalar al menos la 1.44.0. Codex CLI debe actualizarse como mínimo a la 0.131.0, mientras que las aplicaciones de escritorio deben alcanzar las compilaciones corregidas específicas para macOS, Windows o Microsoft Store.
En Claude Code, la 2.1.196 cierra la ruta core.fsmonitor, pero no permite considerar resuelto también el vector ultrareview. Hermes Agent, Qwen Code y Grok Build seguían siendo vulnerables en las versiones más recientes sometidas a pruebas. En el caso de Cursor, hay una corrección disponible, pero no se conocen las compilaciones afectadas.
La técnica no es nueva: problemas similares se corrigieron en Visual Studio Code antes de la 1.63.1 con CVE-2021-43891, y en los IDE de JetBrains antes de la 2021.3.1 con CVE-2022-24346. Ambos tienen una puntuación CVSS de 7,8.
En los últimos 90 días, CISA también ha incluido en KEV vulnerabilidades relacionadas con Anthropic, Microsoft y JetBrains: CVE-2019-1068 el 26 de agosto de 2026; CVE-2026-33824 y CVE-2026-55040 el 18 de agosto de 2026; CVE-2026-68820 el 11 de agosto de 2026; CVE-2026-63077 el 5 de agosto de 2026; y CVE-2026-50522 el 22 de julio de 2026. En cambio, los fallos de los agentes de IA relacionados con Git descritos aquí no figuran en el catálogo.
La ausencia en KEV y la falta de compromisos documentados no eliminan el riesgo técnico. Basta con abrir la carpeta equivocada con un agente vulnerable: el código puede ejecutarse antes de que cualquier control de IA o diálogo de confianza tenga la oportunidad de intervenir.
Fuentes
Este artículo es una reelaboración original basada en las siguientes fuentes.
CVE tratadas en este artículo
- CVE-2026-50522CRITICAL9.8Deserialization of untrusted data in Microsoft Office SharePoint allows an unauthorized attacker to execute code over a network.
- CVE-2026-63077CRITICAL9.8In JetBrains TeamCity before 2026.1.3, 2025.11.7 unauthenticated remote code execution was possible via the agent polling protocol
- CVE-2026-33824CRITICAL9.8Double free in Windows IKE Extension allows an unauthorized attacker to execute code over a network.
- CVE-2026-55040CRITICAL9.1Weak authentication in Microsoft Office SharePoint allows an unauthorized attacker to bypass a security feature over a network.
- CVE-2019-1068HIGH8.8A remote code execution vulnerability exists in Microsoft SQL Server when it incorrectly handles processing of internal functions, aka 'Microsoft SQL Server Remote Code Execution Vulnerability'.
- CVE-2026-55607HIGH8.8Claude Code is an agentic coding tool. From 2.1.38 until 2.1.163, Claude Code's worktree handling allowed creation of worktrees named ".git" and navigation to worktrees outside the sandbox context, enabling git directory confusion attacks. By exploiting symlink manipulation and git fsmonitor execut
- CVE-2021-43891HIGH7.8Visual Studio Code Remote Code Execution Vulnerability
- CVE-2022-24346HIGH7.8In JetBrains IntelliJ IDEA before 2021.3.1, local code execution via RLO (Right-to-Left Override) characters was possible.
- CVE-2026-19592HIGH7.3OpenAI Codex CLI for Windows, macOS, and Linux and Codex Desktop for Windows and macOS automatically collected Git repository metadata without disabling the repository-local core.fsmonitor setting. If a user opens or uses an attacker-prepared repository whose preserved .git/config sets core.fsmonito
- CVE-2026-68820HIGH7.0Use after free in Windows Ancillary Function Driver for WinSock allows an authorized attacker to elevate privileges locally.
- CVE-2026-72718goose is general-purpose AI agent that runs on your machine. Prior to 1.44.0, the `goose review` command runs the system `git` executable to gather the diff for review without stripping attacker-controlled Git configuration. A malicious repository whose `.git/config` sets [`core] fsmonitor = <comman
