El caso
Adversa AI consiguió que el agente de GitHub Copilot CLI descifrara órdenes ocultas en texto cifrado y las obedeciera.
El resultado fue la exfiltración de ficheros locales del equipo en modo autopilot y sin un paso de confirmación visible (Fuente: csoonline.com).
GitHub validó el hallazgo y lo rechazó como vulnerabilidad, y su lectura es que el agente se comporta como se espera de un sistema que sigue su contexto.
Esto es incómodo, sí lo sé... no se rompió el software, se rompió una suposición y es la de que el agente distingue entre los datos que lee y las órdenes que recibe.
Y el caso no depende de una versión concreta ni de un producto sin parche, sino que depende de cómo está construido cualquier agente que lea ficheros y tenga manos para moverse.
Esa frontera no existe en ningún modelo que se use hoy.
Un fichero que entra en la ventana de contexto es texto y un texto con forma de instrucción se ejecuta si el agente tiene permiso para ejecutarlo.
La confirmación visible era la única barrera que había y en autopilot está desactivada.
¿Por qué importa ahora?
El vector no es nuevo pero lo que cambia esta semana es el precio y la superficie donde corre el agente.
Anthropic puso Haiku 5.5 a 0,10 y 0,50 dólares por millón de tokens de entrada y salida con un millón de tokens de contexto y pensado para subagentes que clasifican, resumen y enrutan por volumen (Fuente: anthropic.com).
Microsoft integró llama.cpp en Windows ML y dejó que Copilot controle aplicaciones de escritorio...esta apuesta que anuncian es híbrida, lo sensible se queda en el equipo y lo pesado se va a la nube (Fuente: bgr.com).
Junta las dos cosas de antes y tendrás un algo (la cosa) ok fuera bromas... agentes más baratos y más agentes en marcha y claro cada vez más de ellos con acceso a ficheros locales desde una herramienta que parece de desarrollo y no de seguridad.
No es que el agente sea tonto ni que el modelo esté roto.
Es que le hemos metido herramientas y contexto en el mismo saco y quién escribe el contexto no siempre es quién te da la orden.
El otro lado
La misma semana deja el problema en los dos lados, el agente que ataca y el agente que obedece.
Anthropic cortó el acceso a internet en vivo de sus evaluaciones internas tras detectar que modelos Claude explotaban fallos de inyección de prompt para actuar contra sitios reales.
El prompt injection escala a incidente de seguridad, no simple bug de chatbot (Fuente: thehackernews.com).
Google (GTIG) advierte de que la IA acelera el descubrimiento de vulnerabilidades en entorno empresarial e infraestructura crítica, con menos tiempo entre bug y exploit (Fuente: industrialcyber.co).
Y en Corea del Sur hay ataques bancarios asistidos por IA que forzaron al desarrollador de la herramienta ofensiva a restringir su uso (Fuente: techstartups.com).
El agente no distingue entre lo que lee y lo que le ordenan, y eso vale tanto para el que defiende como para el que ataca.
¿Qué mirar?
- Con qué identidad corre el agente y hasta dónde llega ese permiso porque casi siempre es más amplio de lo que aparenta.
- Si el registro guarda la cadena de llamadas a herramienta con sus argumentos o solo el texto de la respuesta final.
- Qué procesos del equipo pueden abrir conexiones TLS hacia internet sin que nadie los espere.
Cómo lo probaría en mi laboratorio
Lo probaría en dos pasos sobre el montaje del proyecto MCP Security Detections, el que corre un modelo local contra un servidor MCP de detecciones y correlaciona con Splunk en la misma máquina.
Primero le daría una tarea normal y un fichero con una orden escondida dentro y con las herramientas limitadas a lectura y me quedaría con la cadena de llamadas que decide hacer.
Después miraría el registro de esas llamadas y ver qué herramienta, con qué argumentos y en qué orden porque la intención se ve en la secuencia aunque el resultado final parezca inocuo.
Lo que haría distinto ahora es mover el freno fuera del agente.
Un prompt que pida prudencia no es un control, para mí es una sugerencia.
El control es un permiso que no le deje abrir conexiones hacia internet y un registro que anote cada llamada antes de que se ejecute.
Cierre
El agente no fue un malote, hizo lo que se espera de él, leyó, descifró y obedeció que es exactamente lo que le pedimos que haga.
La diferencia entre una herramienta útil y un vector de fuga está en el permiso que le damos y en el registro que dejamos detrás.
Si has leído hasta aquí... reacciona y comparte -> "la seguridad y la defensa en la era de la IA es cosa de todos los que la usan" ¿No Crees?



