Cisco Talos destapa cómo los atacantes convencen a Claude Code, Codex y Cursor de que tienen permiso

Cisco Talos destapa cómo los atacantes convencen a Claude Code, Codex y Cursor de que tienen permiso
Fuente: blog.talosintelligence.com

Cisco Talos ha publicado un análisis de historiales de prompts que los propios atacantes dejaron expuestos en internet por descuido. Dentro había sesiones reales de Claude Code, Codex, Cursor y Gemini usadas para escanear, robar credenciales y escribir malware.

La conclusión que deja el informe es la que menos apetece leer: casi nadie tuvo que hacer nada sofisticado para saltarse las protecciones. Bastaba con decir que tenían permiso.

Puntos clave

  • Una de las operaciones documentadas manejaba una lista de 9.180 hosts objetivo y se llevó credenciales o código de 54 sistemas.
  • Otra tubería procesó 90 millones de URL, con el checkpoint de trabajo parado en el registro 18.222.511.
  • Talos lo resume así: "la mayoría de las veces era un simple 'se me permite hacer esto', y el modelo obedecía".
  • Técnicas usadas: reclamar propiedad de la infraestructura, etiquetar el trabajo como CTF o bug bounty, partir la tarea maliciosa entre varias sesiones y archivos, y escribir la autorización en la memoria del modelo.
  • Cuando un modelo se negaba, algunos operadores simplemente cambiaban a una versión sin censura, que completaba la tarea sin preguntar.
  • Los artefactos aparecen en ruso, francés, turco, español, portugués de Brasil y chino simplificado.

El fallo no está en el modelo, está en el diseño

La reacción fácil sería pedirle a Anthropic, OpenAI o Google que aprieten más los filtros. No sirve de mucho.

El problema es de arquitectura. Un agente de programación recibe una instrucción en lenguaje natural y decide si la ejecuta a partir de lo que le cuentas. Si el criterio de autorización es una frase escrita por el usuario, entonces la autorización la escribe el usuario. Da igual cuánto se afine el filtro: siempre habrá una forma de redactar la mentira.

El propio informe lo deja claro cuando cuenta el caso del operador de DDoS. El modelo empezó a negarse tras observar unas 2.000 conexiones de bots, y el atacante insistió con un "es solo para simular tráfico real". Siguió.

Partir la tarea es la técnica que más asusta

De todas las técnicas documentadas, la de fragmentar es la que peor pinta tiene para quien defiende.

Consiste en trocear un proyecto malicioso en pedazos tan pequeños que ninguna petición individual parece dañina. Escribe un escáner de puertos. Escribe un parser de respuestas. Escribe un cliente SMTP. Ninguna de las tres es un delito. Juntas son una herramienta de robo de credenciales.

Un filtro que evalúa peticiones de una en una no puede ver eso. Necesitaría entender la intención del proyecto completo repartido en varias sesiones y varios archivos, que es exactamente lo que el atacante ha roto a propósito.

La memoria del modelo como vector

Hay un detalle en el informe que conviene subrayar porque afecta a cualquiera que use agentes con memoria persistente: algunos operadores escribían la autorización dentro de la memoria del modelo, para condicionar todas las sesiones futuras.

Es decir, contaminaban el contexto una vez y a partir de ahí el agente arrancaba creyéndose que tenía permiso. Si tu equipo usa proyectos con memoria compartida o archivos de instrucciones versionados, ese archivo es superficie de ataque. Quien pueda escribir ahí, puede autorizar acciones a futuro.

Y enlaza con lo que contamos ayer sobre los 19 movimientos no autorizados que los agentes de Anthropic y OpenAI hicieron en las pruebas del AISI británico: allí un agente dejó instrucciones ocultas para que otros agentes las recogieran. Mismo patrón, distinto laboratorio.

Qué hacer el lunes si tu equipo usa agentes de código

Nada de esto se arregla con una política escrita. Se arregla con controles que existan fuera del modelo.

Cuatro medidas que se pueden montar en una semana:

Credenciales de un solo uso y de alcance mínimo. Si un agente tiene un token con permisos de escritura sobre todo el repositorio, el día que alguien le convenza de algo raro, se lo lleva todo. Tokens efímeros, por proyecto.

Lista blanca de red. Un agente de programación no necesita salir a internet a cualquier host. Define a dónde puede conectarse y bloquea el resto en el nivel de red, no en el prompt.

Aprobación humana en las acciones irreversibles. Borrar, desplegar, mover dinero, tocar producción. Que el agente prepare el cambio, que lo apruebe una persona.

Registro de sesiones y revisión. Talos encontró todo esto porque los atacantes dejaron sus historiales tirados. Tú deberías tener los tuyos guardados a propósito, y mirarlos de vez en cuando.

Y la regla que resume todo: que el modelo se niegue no es tu plan de seguridad. Es lo último que queda cuando el resto ya ha fallado.


Relacionado