Un fallo de seguridad en cuatro agentes de codificación con IA ampliamente usados permite que quien controle el repositorio de un plugin intercambie el complemento que el agente instala por una versión maliciosa, incluso cuando el agente ha fijado ese plugin a una versión revisada concreta. La empresa de seguridad Air Security reveló el hallazgo el jueves.
Anthropic ya ha corregido la vulnerabilidad en Claude Code 2.1.179 y OpenAI en Codex 0.146.0. GitHub Copilot no tiene parche disponible y Google ha decidido no corregir Gemini CLI, que está en proceso de retirada.
Cómo funciona el ataque
Los agentes instalan complementos llamados plugins desde mercados en línea. Para proteger a los usuarios, cada mercado bloquea cada plugin a una única versión revisada mediante su hash de commit, una cadena larga que identifica una instantánea exacta del código. Air descubrió que los agentes obtienen esa instantánea pero nunca verifican que el código final coincida realmente con ella.
Una rama es una línea de código con nombre dentro de un repositorio. En un host de código que permita crear una rama cuyo nombre imite el hash de commit, el dueño del repositorio del plugin puede apuntar ese nombre a un código diferente. El agente entonces instala el código distinto mientras sigue informando que está en la versión bloqueada.
Dado que un plugin se ejecuta con el mismo acceso que la persona que usa el agente, el código sustituido puede acceder a los archivos de esa persona, a sus credenciales guardadas y a los sistemas a los que puede conectarse, según Air.
Alcance limitado en GitHub
El truco no funciona en todos los entornos. Según la documentación de GitHub, esta plataforma no permite nombres de rama o etiqueta que parezcan hashes de commit, por lo que un plugin instalado desde un repositorio de GitHub no está expuesto a este método. Air señala que el truco sí funciona en hosts que permiten tales nombres, como Bitbucket o un servidor git corporativo, que estos agentes también soportan.
The Hacker News verificó el 18 de septiembre los mercados que acompañan a los agentes y encontró que todos los plugins del catálogo comunitario de Anthropic, así como los de los catálogos predeterminados de Claude Code y Copilot, apuntan a un repositorio de GitHub.
El caso particular de Gemini CLI
Gemini CLI es atacado de forma diferente. En lugar de una rama con forma de hash, Air indica que su instalador puede ser engañado por un repositorio cuya rama principal se llame FETCH_HEAD, y la regla de GitHub contra nombres con forma de hash no bloquea claramente ese nombre. Por tanto, no está establecido que instalar un plugin de Gemini CLI desde GitHub evite la vulnerabilidad, y Gemini CLI es el agente que Air afirma que no será corregido.
El papel de la actualización automática
Lo que haría que el ataque no requiriera acción de la víctima es la actualización automática en segundo plano, que permite a un agente refrescar los plugins instalados por sí solo, de modo que un plugin en el que alguien ya confía puede ser reemplazado sin aviso. Air dice que esto está activado por defecto en Claude Code y Codex.
Sin embargo, la actualización automática está activada por defecto solo para los mercados integrados de los propios agentes, alojados en GitHub, y está desactivada u opcional para los externos, según la documentación de Anthropic y GitHub. Por tanto, un lector que instale plugins únicamente desde los mercados predeterminados basados en GitHub no está expuesto a la versión del ataque por nombre de rama, según Air y GitHub.
Divulgación y respuestas de los proveedores
Air afirma que construyó un ataque de prueba funcional contra los cuatro agentes en mayo y que informó a los proveedores en junio. Hasta el 18 de septiembre no se había asignado ningún identificador CVE y ninguno de los cuatro proveedores había publicado un aviso de seguridad sobre la falla, según verificaciones de The Hacker News, y no hay indicios de que se haya usado en un ataque real.
The Hacker News reprodujo el comportamiento subyacente de Git en una prueba local, y la propia corrección pública de OpenAI describe el mismo error: Git "puede interpretar un SHA de commit solicitado como un nombre de rama", escribió la compañía, lo que puede hacer que una fuente de plugin "materialice un commit diferente al que fijó". Ese cambio se envió en Codex 0.146.0.
Como cada agente verifica el bloqueo en la máquina del propio usuario, no en el mercado, ningún mercado puede solucionar esto por los usuarios: la corrección debe implementarse en el propio agente. La situación de cada agente es la siguiente:
- Anthropic: parcheado en Claude Code 2.1.179, aunque sus notas de versión no mencionan la corrección; la confirmación proviene de Air.
- OpenAI: parcheado en Codex 0.146.0.
- GitHub Copilot: sin parche; Air dice que informó a Microsoft en junio y que no se ha enviado ninguna corrección. Copilot puede instalar plugins desde hosts distintos de GitHub, donde Air sitúa el riesgo.
- Google: no corregirá Gemini CLI, que dejó de ofrecerse al consumidor en junio y ha sido reemplazado por Antigravity, un agente más nuevo que, según Air, no es alcanzado por este ataque. Google ha dicho que el acceso empresarial a Gemini CLI continuará con actualizaciones, pero no está claro si una corrección para esta falla está entre ellas.
Las fuentes no aclaran si actualizar un agente afectado elimina un plugin que ya fue sustituido o solo detiene futuros intercambios.
Antecedentes de los investigadores
Los mismos investigadores ya han probado complementos para agentes anteriormente. En junio, The Hacker News cubrió una prueba de Air en la que una habilidad falsa superó los escáneres de seguridad y llegó a unos 26.000 agentes al cambiar un enlace externo después de que la revisión lo hubiera autorizado. Plugin4Shell traslada esa idea de un enlace sustituido a un plugin sustituido que se esconde detrás de un bloqueo de versión.




















Deja una respuesta