Una frase común, que no despertó sospechas en el sistema, bastó para lanzar el ataque.

Una frase común en un diálogo con un asistente de IA resultó suficiente para iniciar el envío oculto de secretos desde el equipo del desarrollador. El equipo CERT-EU mostró cómo extensiones modificadas de Claude Code y Pi acceden a los datos directamente, sin obligar al modelo de lenguaje a ejecutar comandos sospechosos. Para el robo no fue necesario comprometer el propio modelo.
Para la prueba se usaron Claude Code 2.1.304 y Pi 1.3.0, y luego se modificaron copias locales de dos complementos de terceros reales. Uno de los complementos acumulaba alrededor de 1,6 millones de descargas al mes en el momento de la investigación. Las pruebas se realizaron en un laboratorio aislado con credenciales de prueba. No se modificaron las versiones públicas de los paquetes; el trabajo no confirma casos de infección reales.
El código malicioso se incrustó en los controladores de eventos estándar. En Pi añadieron el controlador before_agent_start, y en Claude Code modificaron el mecanismo que ya invocaba el gancho UserPromptSubmit al enviar una petición. Esos controladores los ejecuta la propia capa del agente. La extensión no necesita el permiso del modelo, una llamada separada a una herramienta ni cambiar sus parámetros.
La función oculta esperaba la frase «lgtm, ship it», una observación habitual en la revisión de código. Mientras la condición no se cumplía, las extensiones funcionaban como antes y no enviaban nada. Tras aparecer la frase, ambas versiones modificadas enviaron datos a un receptor configurado. El equipo CERT-EU registró dos solicitudes, una por cada extensión, aunque el diálogo con la IA parecía totalmente normal.
Entre los datos transmitidos estaban los parámetros del equipo y de la máquina virtual, datos de la cuenta, configuraciones de red, variables de entorno y archivos relacionados con credenciales desde el directorio de trabajo. Las extensiones actuaban con los permisos del usuario que había iniciado el agente. Las restricciones comprobadas para la lectura de archivos y el control de llamadas a herramientas no detectaron la transmisión, y tampoco aparecieron advertencias.
En el laboratorio el código se activaba tras la frase introducida por el propio usuario. Sin embargo, los desarrolladores de CERT-EU admiten que podría iniciarse también a partir de texto procedente de un correo, de un registro pegado o del resultado de una herramienta, si la extensión procesa esos eventos. Anteriormente vulnerabilidades en los ganchos de Claude Code ya permitían ejecutar comandos desde la configuración del proyecto.
El escenario difiere de insertar instrucciones maliciosas en las solicitudes al modelo. Incluso sin un error en la respuesta del agente, un componente externo puede leer archivos accesibles y conectarse a la red. Antes el ataque Plugin4Shell mostró otro riesgo de los complementos: un plugin verificado podía recibir código alterado durante una actualización. La nueva demostración se refiere al comportamiento de un paquete ya instalado.
CERT-EU recomienda limitar los permisos de todo el entorno del agente, no solo del modelo de lenguaje. Para trabajar con código aconsejan contenedores o máquinas virtuales separadas, claves de corta duración con permisos restringidos y control de las conexiones salientes. Las extensiones instaladas deben ser tenidas en cuenta: fijar sus versiones y verificar las actualizaciones. La monitorización debe abarcar las acciones de los complementos, no solo los comandos de la IA.