Plugin4Shell: el fallo que permite intercambiar plugins maliciosos en cuatro agentes de IA y que GitHub Copilot aún no ha parcheado

La cadena de suministro del software sigue encontrando nuevas grietas, y esta vez el eslabón más débil está en las herramientas que millones de desarrolladores utilizan a diario para escribir código.

La firma de seguridad Air Security ha revelado una vulnerabilidad bautizada como Plugin4Shell, que permite a un atacante intercambiar el código de un plugin instalado por un agente de IA por una versión maliciosa, incluso cuando ese plugin está fijado a una versión específica revisada.

El fallo afecta a cuatro de los agentes de codificación más utilizados del mercado: Claude Code de Anthropic, Codex de OpenAI, GitHub Copilot y Gemini CLI de Google. Y aunque algunos ya han recibido parches, la respuesta de los fabricantes ha sido desigual.

La noticia, publicada por Air Security el jueves, coincide con el creciente interés por los plugins como mecanismo para extender las capacidades de los agentes de IA.

Los plugins permiten a estas herramientas acceder a servicios externos, ejecutar comandos, consultar bases de datos o interactuar con APIs, convirtiéndose en una pieza fundamental de la productividad de los desarrolladores. Pero esa misma potencia los convierte en un vector de ataque atractivo.

¿Cómo funciona el engaño? Nombres de rama que imitan hashes de commit

El fallo explota una discrepancia entre lo que los agentes de IA verifican y lo que ejecutan. Cuando un agente instala un plugin desde un marketplace, el marketplace lo fija a una versión revisada mediante su commit hash, una cadena larga que identifica una instantánea exacta del código. Es un mecanismo de seguridad estándar en el desarrollo de software: si el código no coincide con el hash, no se instala.

Air Security descubrió que los agentes de IA afectados descargan la instantánea asociada a ese hash, pero nunca comprueban que el código que finalmente obtienen coincida realmente con él.

Y ahí está la trampa. En un repositorio de código alojado en una plataforma que permite crear ramas con nombres que parecen hashes de commit, el propietario del plugin puede crear una rama llamada, por ejemplo, a1b2c3d4e5f6... —idéntica al hash de la versión revisada— y apuntarla a código diferente.

El agente instala ese código malicioso, pero sigue reportando que está ejecutando la versión fijada. La víctima no ve nada sospechoso.

El impacto es profundo. Un plugin se ejecuta con los mismos permisos que la persona que usa el agente. Si el código es malicioso, puede acceder a los archivos del usuario, a las credenciales guardadas y a todos los sistemas a los que esa persona tenga acceso. En un entorno empresarial, eso significa que un solo plugin comprometido puede convertirse en la puerta de entrada a toda la infraestructura.

El detalle que limita el alcance: GitHub no permite nombres de rama que parezcan hashes

No todo son malas noticias. El truco tiene una limitación importante. GitHub, la plataforma de alojamiento de código más utilizada del mundo, no permite nombres de rama o etiqueta que parezcan hashes de commit, según su propia documentación. Esto significa que un plugin instalado desde un repositorio de GitHub no está expuesto a esta variante del ataque.

Aunque el truco funciona en otras plataformas que sí permiten esos nombres, como Bitbucket o servidores Git corporativos autoalojados, que los agentes de IA también soportan. Y hay una excepción preocupante: Gemini CLI, el agente de Google, es atacado de forma diferente.

Su instalador puede ser engañado por un repositorio cuya rama principal se llame FETCH_HEAD, un nombre que la regla de GitHub contra nombres con forma de hash no bloquea claramente.

Por eso no está establecido que instalar un plugin de Gemini CLI desde GitHub evite el fallo, y Gemini CLI es precisamente el agente que Air Security afirma que no será parcheado, ya que Google ha decidido retirarlo.

El estado de los parches: dos arreglados, uno sin solución y otro abandonado

La respuesta de los fabricantes ha sido dispar. Anthropic ha parcheado el fallo en Claude Code 2.1.179, y OpenAI ha hecho lo propio en Codex 0.146.0. Son las dos herramientas que han reaccionado con rapidez y han cerrado la vulnerabilidad. GitHub Copilot, en cambio, no tiene parche, y Google ha confirmado que no arreglará Gemini CLI porque está en proceso de retirada.

Esta disparidad de respuestas refleja una realidad incómoda: la seguridad de los agentes de IA no es uniforme, y los desarrolladores que utilizan múltiples herramientas se enfrentan a un panorama fragmentado donde unos están protegidos y otros no. Para los equipos que dependen de GitHub Copilot, la única defensa es la vigilancia manual y evitar instalar plugins de fuentes no verificadas.

El factor del auto-update: cuando la actualización se convierte en un vector de ataque

Hay un elemento adicional que agrava el riesgo: el auto-update en segundo plano. Esta funcionalidad permite a un agente refrescar los plugins instalados por sí solo, sin preguntar al usuario. Si un atacante consigue comprometer un plugin que el usuario ya confía, puede reemplazarlo por una versión maliciosa sin que se le pida confirmación. Air Security señala que el auto-update está activado por defecto en Claude Code y Codex.

Sin embargo, hay un matiz importante. Según la documentación de Anthropic y GitHub, el auto-update está activado por defecto solo para los marketplaces integrados de los propios agentes, que están alojados en GitHub.

Para los marketplaces externos, está desactivado o es opcional. Esto significa que un usuario que instale plugins únicamente desde los marketplaces predeterminados basados en GitHub no está expuesto a la variante del ataque basada en nombres de rama, según el propio relato de Air Security y de GitHub sobre cómo funciona el fallo.

Es una distinción crucial. El ataque es real y grave, pero su alcance está limitado por las políticas de las plataformas y por las decisiones de configuración de los usuarios. Los desarrolladores que instalan plugins de fuentes externas, especialmente desde Bitbucket o servidores Git autoalojados, son los más vulnerables.

Qué significa esto para el ecosistema de agentes de IA

Plugin4Shell es un recordatorio de que los agentes de IA no son herramientas aisladas. Son plataformas que ejecutan código de terceros con permisos elevados, y como tales, heredan todos los problemas de seguridad de la cadena de suministro de software. La lección es la misma que hemos aprendido con npm, PyPI o los repositorios de paquetes en general: la confianza en el código de otros es un riesgo que debe gestionarse activamente.

La recomendación para los desarrolladores es clara..

Primero, verificar la procedencia de los plugins antes de instalarlos, priorizando los marketplaces oficiales de cada agente.

Segundo, revisar la configuración de auto-update y desactivarlo para marketplaces externos si no es estrictamente necesario.

Tercero, mantener los agentes actualizados, ya que Anthropic y OpenAI han demostrado que parchean los fallos cuando se les reporta. Y cuarto, ser consciente de que GitHub Copilot sigue sin solución, lo que obliga a extremar las precauciones si se utiliza esa herramienta con plugins de terceros.

La seguridad de la cadena de suministro ha dejado de ser un problema exclusivo de los equipos de seguridad. Ahora es una responsabilidad compartida por todos los que escriben, instalan o ejecutan código.

Y en la era de los agentes de IA, esa responsabilidad se extiende a las herramientas que utilizamos para programar. Plugin4Shell es el último recordatorio de que la comodidad tiene un precio, y que la verificación no es opcional.

Vistas: 1

Descubre más desde CIBERED

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Scroll al inicio