← Volver a todas las publicaciones
Publicado el · por Renaud Deraison

El registro del agente estaba en su nube

Warp reveló que unos atacantes robaron trazas de agente y telemetría de aproximadamente el 1 % de sus usuarios tras entrar en un proveedor de la infraestructura de Warp, y su CEO afirma que los intrusos usaron un enjambre de agentes de IA para hacerlo. Una traza de agente registra lo que el agente leyó, ejecutó y vio, así que puede contener código, salida de comandos y secretos. En Bromure Agentic Coding, la traza del agente se escribe y se cifra en tu Mac, cada secreto que maneja el agente es un sustituto, y tú eliges qué hosts reciben algo.

Una traza de agente es el registro de todo lo que el agente leyó, ejecutó y vio. Las trazas de Warp estaban en un proveedor, y el 23 de octubre alguien entró en ese proveedor.

El viernes 23 de octubre, Warp detectó lo que su fundador y CEO, Zach Lloyd, llamó una explotación activa y muy acotada de un proveedor de la infraestructura de Warp. Warp pasó de ser una terminal a lo que llama un entorno de desarrollo agéntico, y los datos sustraídos fueron trazas de agente y telemetría de usuarios. Lloyd sitúa el límite superior en aproximadamente el 1 % de los usuarios de Warp. El sitio de la empresa afirma tener al menos 800.000 usuarios, así que el 1 % ronda los 8.000 desarrolladores. BleepingComputer informó del anuncio ayer.

Warp dice que detectó la operación en cuestión de horas y la contuvo. Ha contratado a CrowdStrike, ha informado a las fuerzas del orden y ha avisado a los usuarios afectados. Según Risky Business, Lloyd dice que los intrusos usaron un enjambre de agentes de IA para vulnerar al proveedor. Warp no ha nombrado al proveedor, ni descrito la vulnerabilidad, ni dicho si las trazas robadas incluían código fuente, prompts o credenciales. Su consejo a los usuarios: vigilar la actividad de la cuenta y tratar los mensajes no solicitados con más cautela de lo habitual.

Es la segunda brecha de un agente de código este mes que empieza en los servidores de un proveedor. El 16 de octubre, unos atacantes llegaron a las claves de API de proveedores que cerca del 1,4 % de los usuarios de OpenCode Console tenían guardadas, y algunos encontraron cargos de hasta 1.700 $ que no habían generado. Lo contamos en Las claves estaban en su consola.

Qué contiene una traza de agente

Un agente de código trabaja en bucle. Lee un archivo, ejecuta un comando, lee la salida y decide qué hacer a continuación, y una traza registra cada paso. Eso incluye el prompt que escribiste, los archivos que abrió el agente, los diffs que escribió, los comandos de shell que ejecutó y lo que esos comandos imprimieron.

Esa última parte es por donde se cuelan los secretos. Un agente que depura un despliegue fallido ejecuta env, abre .env, imprime un archivo de configuración y pega un stack trace con una cadena de conexión dentro. En La transcripción se quedó con el token, Trellix mostró agentes de código que copiaban secretos del llavero a líneas de comandos, al historial del shell y a sus propias transcripciones como efecto secundario de un trabajo normal. Los datos de clientes entran de la misma forma: el agente abre un CSV o consulta una tabla para comprobar un arreglo, y las filas acaban en la traza.

Una traza también contiene tu código a trozos, los nombres de hosts internos y una cronología de en qué trabajaste. Para un atacante, unos pocos miles de trazas son una lista de desarrolladores a los que hacer phishing, cada uno con una historia convincente sobre el proyecto en el que estaba esa semana. Ese riesgo está detrás del consejo de Warp sobre los mensajes no solicitados.

Adónde viaja una traza de agente guardada en la nube1 · El agente trabajaen el portátil del dev:lee archivos, ejecutacomandos, lee su salida2 · Traza al proveedorregistros de decisiones ytelemetría, guardados en lanube del proveedor3 · El proveedor externoun tercero en la infra deWarp; sin nombre, fallosin revelar4 · Vulnerado el 23 oct.por un enjambre de IA,según el CEO; trazas del~1 % de usuarios robadasLo que puede contener una traza de agenteprompts · archivos fuente abiertos por el agente · diffs · comandos de shell y su salida · variables de entorno al depurarfilas de clientes de una consulta o CSV · nombres de hosts internos · cronología del trabajo de cada desarrollador
El recorrido de una traza de agente cuando la herramienta la guarda en la nube. El agente trabaja en el portátil, la traza va al proveedor de la herramienta, y este la almacena o la procesa con un tercero. Los atacantes de Warp entraron por ese tercero.

La misma sesión en una máquina Bromure

Bromure Agentic Coding ejecuta Claude Code, Codex, Grok, Kimi y omp en VM Ubuntu en tu Mac. Cada petición que hace una máquina, incluida cada llamada del agente a su modelo, pasa por un proxy en el Mac. Ese proxy es donde Bromure registra la traza, intercambia credenciales y aplica tus reglas de red. Toma la sesión de depuración de arriba y ejecútala allí.

La traza se escribe en tu Mac

La traza de sesión de Bromure responde a la pregunta que te haces tras un incidente: ¿qué hizo el agente? Las máquinas nuevas registran AI request details: un registro de metadatos por cada petición, más los cuerpos completos de peticiones y respuestas para los proveedores de modelos. El Trace Inspector (⇧⌘I) analiza esos cuerpos y los convierte en una vista de conversación con cada llamada a herramienta, cada comando de shell que ejecutó el agente y cada archivo que leyó o escribió. bromure-cli trace te da los mismos datos en una terminal.

Todo vive en ~/Library/Application Support/BromureAC/traces/ en tu Mac. Los cuerpos capturados se sellan con AES-GCM bajo una clave guardada en tu llavero, con permisos de archivo 0600. En una instalación individual, ningún registro de traza, cuerpo ni resumen se sube a ninguna parte, y el proxy no tiene ningún endpoint de analítica conectado para usuarios individuales. Los clasificadores de inyección de prompts que leen ese mismo tráfico también se ejecutan en el Mac.

Ningún proveedor tiene una copia, ni tampoco sus proveedores. Un atacante que entra en un servicio de logs no encuentra allí ninguna de tus sesiones.

Los secretos de la traza son sustitutos

Volvamos a la sesión de depuración. El agente ejecuta env, abre .env e imprime la configuración de despliegue. En una máquina Bromure, cada credencial que configuraste es falsa dentro de la VM. ANTHROPIC_API_KEY contiene un valor sk-ant-api03-brm-, GH_TOKEN y ~/.git-credentials contienen un sustituto ghp_, ~/.aws/config apunta a un helper que entrega una clave secreta falsa, y las claves SSH se quedan en el host detrás de un socket de agente. Las claves que importas desde un .env existente también se convierten en sustitutos. El proxy pone el valor real en la red solo para el host al que pertenece esa credencial.

Así que todo lo que el agente imprime y pega en su conversación es un sustituto. Vale para cada copia: los logs del proveedor de modelos, los archivos de historial de la propia CLI del agente, un informe de fallo, una traza. Fuera de la máquina, los sustitutos no autentican en ningún sitio. Si uno de ellos se dirige a un host para el que no fue emitido, el proxy bloquea la petición con un HTTP 451, pausa la VM y muestra This environment may have been compromised con la credencial, el host al que pertenece y el host al que se envió.

La traza de Bromure va un paso más allá. Las cabeceras Authorization, Cookie, api-key y similares se reescriben como <redacted> antes de escribir nada, y cada intercambio de credencial se guarda como una vista previa con los primeros y últimos caracteres, como sk-a…f9q3. El secreto real nunca entra en un registro de traza, cifrado o no.

Los datos de clientes se quedan en el Mac

Activa PII Protection en los ajustes de la máquina y el proxy detecta los datos personales de cada petición antes de que salga hacia el proveedor de modelos: nombres, direcciones de correo, números de teléfono, números de tarjeta y de cuenta bancaria, documentos de identidad y direcciones postales. Sustituye cada valor por un sustituto realista, un nombre inventado o una dirección @example.com, y vuelve a poner los valores reales en la respuesta, también en los argumentos de las llamadas a herramientas. La detección se ejecuta en el Mac con el modelo Rampart integrado.

El agente trabaja con las filas reales, y el proveedor ve los sustitutos. El mismo cliente recibe el mismo sustituto en cada turno, así que la caché de prompts sigue funcionando. La Security Timeline cuenta cada intercambio, 3 names · 1 phone number → api.anthropic.com, sin registrar ni un solo valor.

Para el trabajo que deba quedarse en el Mac, dirige el agente a un modelo local. Los modelos MLX se ejecutan en la GPU del Mac, y esos turnos no van a ningún otro sitio.

Tú eliges quién recibe algo

Las CLI de agentes no solo hablan con su modelo. Los informes de errores, los feature flags y la telemetría de uso van cada uno a su propio host. En el panel Guardrails de la máquina, pon Unmatched traffic en Deny y permite los hosts que necesita el proyecto: el proveedor de modelos, tu forja, tus registros de paquetes. Cualquier otra conexión se rechaza en el Mac, y cada rechazo es una fila en la Security Timeline. Acabas con una lista escrita de las empresas que reciben datos de esa máquina, y la escribiste tú.

Los equipos supervisan sin recopilar transcripciones

Las organizaciones siguen necesitando ver lo que hacen sus agentes. Un Mac inscrito en un espacio de trabajo de bromure.io envía metadatos de sesión a los administradores: herramientas usadas, archivos tocados, comandos ejecutados, consumo de tokens. Los prompts en bruto nunca se emiten. La conversación completa se queda en la traza cifrada del Mac del desarrollador. Un punto rojo en la cabecera de la ventana indica cuándo una máquina está enviando datos, y el Private mode mantiene en local la actividad de un espacio de trabajo, por ejemplo uno que usa una clave de API personal.

Agente en portátil, traza en la nubeEl agente ejecuta env, abre .envclaves de API y tokens reales en la salidaTraza guardada por el proveedory procesada por sus propios proveedoresUn proveedor vulneradoclaves válidas, fragmentos de código, clientesy un pretexto de phishing para cada devBromure: la traza en tu MacVM del agente (Ubuntu)env y .env muestran sustitutos; claves reales fueraProxy del host en el MacPII sustituida antes del proveedor; hostsno aprobados fuera; sustituto ajeno: 451, VM en pausaTraza en Application SupportAES-GCM con clave del llavero; cabeceras ocultas,intercambios como vista previa; no se sube nada
La misma sesión de depuración con un agente en el portátil cuyas trazas se guardan en la nube, y en una máquina Bromure. En el portátil, la traza lleva secretos reales y filas de clientes al proveedor y a sus propios proveedores. En Bromure, la traza está cifrada en el Mac, los secretos que contiene son sustitutos o vistas previas, los datos personales que llegan al proveedor se sustituyen y los hosts no aprobados se rechazan.

La semana siguiente

Los usuarios afectados de Warp tienen ahora que averiguar qué contenían sus trazas y rotar todo lo que pudiera haber en ellas. En un Mac con Bromure, la primera parte lleva unos minutos. Abre el Trace Inspector, filtra por espacio de trabajo y activa Conversations only para ver cada comando que ejecutó el agente y cada archivo que leyó. Leaks only lista cualquier petición que llevara un token real que Bromure no emitió, lo que muestra si algún secreto en bruto llegó a pasar por delante de los sustitutos.

La rotación se hace en un solo sitio. Las claves reales viven en una única bóveda cifrada en el host. Pega el nuevo valor en el panel Credentials de la máquina y el siguiente arranque escribe el sustituto correspondiente. Una clave guardada como referencia de 1Password se vuelve a resolver cada dos minutos, así que una rotación en 1Password llega a las máquinas en marcha sin reiniciar.

Las trazas se quedan en casa

La traza de sesión se escribe en tu Mac y se sella con una clave del llavero. Las instalaciones individuales no suben nada.

Los secretos son sustitutos

Todo lo que imprime el agente es falso. Las trazas guardan las cabeceras de autenticación ocultas y los intercambios como vistas previas cortas.

Los datos personales se sustituyen

Nombres, correos, números de tarjeta y direcciones llegan al proveedor de modelos como sustitutos, detectados en el Mac.

Tú eliges los hosts

Con Unmatched traffic en Deny, solo los hosts que permitiste reciben algo, y cada rechazo queda registrado.

Guarda el registro donde se hizo el trabajo

Vale la pena conservar las trazas de agente. Con ellas averiguas qué hizo un agente a las 3 de la madrugada y respondes a un auditor. La cuestión es quién las guarda. Cada empresa que almacena el registro de decisiones de tu agente es una empresa más cuyos proveedores pueden perderlo, y los atacantes ya ejecutan sus propios agentes para encontrar al proveedor débil.

Bromure Agentic Coding guarda el registro completo en la máquina donde trabajó el agente, cifrado con tu llavero, y lo llena de sustitutos en lugar de secretos. Cuando el próximo proveedor anuncie una brecha, responderás a ¿nos afectó? desde tu propio Trace Inspector.

Para ver cómo los agentes esparcen secretos por sus propias transcripciones, lee La transcripción se quedó con el token. Para la brecha de OpenCode Console de principios de este mes, lee Las claves estaban en su consola.