Un complemento verificado puede volverse malicioso incluso después de ser instalado.

Un error en el mecanismo de actualización de extensiones resultó ser común para Claude Code, OpenAI Codex, GitHub Copilot y Gemini CLI. Los especialistas de AIR Security descubrieron Plugin4Shell, una vulnerabilidad de la cadena de suministro que permite reemplazar silenciosamente un complemento verificado por uno malicioso y obtener ejecución remota de código (RCE) en el equipo del desarrollador sin un solo clic. AIR estima que el alcance potencial del problema es de millones de instalaciones de agentes de IA.
La base de la protección de ese tipo de extensiones es el SHA pinning. El catálogo verifica el código y fija el complemento a un commit concreto de Git, por lo que cambios posteriores en el repositorio no deberían afectar a la versión ya aprobada. Plugin4Shell rompe precisamente esa garantía. El agente de IA solicita el commit necesario, pero después del checkout no comprueba qué código quedó realmente en el directorio de trabajo. Para las herramientas modernas de desarrollo de agentes, este error es especialmente peligroso, ya que las extensiones obtienen acceso a archivos, al terminal, a servicios internos y a otros recursos del usuario.
En Claude Code, Codex y GitHub Copilot un atacante puede crear una rama cuyo nombre coincide exactamente con el SHA de 40 caracteres fijado. Git permite esos nombres y, en caso de ambigüedad, prefiere la referencia a la rama frente al objeto commit. Como resultado, el comando checkout toma la cadena por nombre de rama y descarga la versión ya maliciosa. La sustitución es especialmente peligrosa en el contexto de la proliferación de complementos infectados y de habilidades para agentes de IA.
El clic cero aparece gracias a las actualizaciones automáticas. Claude Code y Codex, por defecto, pueden actualizar los complementos instalados en segundo plano. El atacante no necesita convencer a la víctima de instalar un nuevo módulo ni confirmar la ejecución de un comando. Basta con controlar el repositorio de una extensión ya instalada o publicar previamente un complemento aparentemente seguro, esperar su difusión y luego reemplazar el código. Problemas similares de confianza entre agentes de IA y herramientas conectables ya se manifestaron al analizar los flujos tóxicos en el ecosistema MCP.
En Gemini CLI el mecanismo es algo distinto. El cliente obtiene el commit fijado mediante git fetch y luego ejecuta git checkout FETCH_HEAD. AIR mostró que una rama con el nombre FETCH_HEAD puede interceptar la resolución de nombre y volver a forzar que el agente use código ajeno. En los tres productos restantes hace falta un hosting que permita ramas con nombres en forma de SHA completo. GitHub prohíbe tales ramas, pero Bitbucket y algunos servidores Git autoalojados las admiten.
Anthropic cerró Plugin4Shell en Claude Code 2.1.179, y OpenAI corrigió Codex en la versión 0.146.0. A fecha del 17 de septiembre AIR no había recibido confirmación de la corrección para GitHub Copilot. Los investigadores también afirman que no habrá una corrección separada de Plugin4Shell para Gemini CLI y recomiendan pasar a Antigravity. La redacción requiere matices: Google mantuvo la compatibilidad de Gemini CLI para clientes corporativos y usuarios con claves de API de pago, aunque las tarifas de consumo se migraron a Antigravity CLI desde junio.
El análisis técnico de Plugin4Shell de AIR se publicó el 17 de septiembre tras la divulgación coordinada a los fabricantes. La empresa recomienda actualizar Claude Code y Codex a las versiones corregidas. El control del catálogo de extensiones no basta, porque el error aparece directamente en el lado del agente al resolver la referencia Git. Una solución sólida debería, tras el checkout, comparar el HEAD real con el SHA fijado y cancelar la instalación si no coinciden.
Una dependencia de seguridad similar del asistente de IA respecto al comportamiento de Git apareció hace poco en GitSpawn. Allí, una configuración especialmente preparada de un proyecto ajeno obligaba a Claude Code y a otros agentes a ejecutar comandos antes de la primera petición del usuario.
Otro ejemplo fue la operación SymJack. Una acción aparentemente inocua que el usuario aceptaba permitir al asistente de IA podía, mediante particularidades del sistema de archivos, modificar la configuración del agente y acceder a las claves SSH. Ambos casos muestran un problema: los mecanismos de servicio de confianza pasan a formar parte de la superficie de ataque junto con el propio modelo de lenguaje.
El riesgo no se limita a repositorios infectados. Demostraciones previas de ataques a Claude Code, GitHub Copilot y otras herramientas mostraron que a veces una sola línea en una página web o en un documento basta para que el asistente de IA reciba una instrucción maliciosa. Plugin4Shell traslada esa misma idea al nivel de la cadena de suministro, donde el código peligroso puede llegar a través de una extensión que el usuario ya instaló y considera verificada.