← Voltar para todas as publicações
Publicado em · por Renaud Deraison

O log do agente estava na nuvem deles

A Warp revelou que atacantes roubaram traces de agente e telemetria de cerca de 1% dos seus usuários ao invadir um fornecedor da infraestrutura da Warp, e o CEO da empresa diz que os invasores usaram um enxame de agentes de IA para isso. Um trace de agente registra o que o agente leu, executou e viu, então pode conter código, saída de comandos e segredos. No Bromure Agentic Coding, o trace do agente é gravado e criptografado no seu Mac, todo segredo que o agente manipula é um substituto, e você escolhe quais hosts recebem qualquer coisa.

Um trace de agente é o registro de tudo o que o agente leu, executou e viu. Os traces da Warp ficavam com um fornecedor, e em 23 de outubro alguém entrou nesse fornecedor.

Na sexta-feira, 23 de outubro, a Warp tomou conhecimento do que seu fundador e CEO, Zach Lloyd, chamou de uma exploração ativa e bem delimitada de um fornecedor da infraestrutura da Warp. A Warp cresceu de um terminal para o que chama de ambiente de desenvolvimento agêntico, e os dados levados foram traces de agente e telemetria de usuários. Lloyd estima o limite superior em cerca de 1% dos usuários da Warp. O site da empresa afirma ter pelo menos 800 mil usuários, então 1% é da ordem de 8 mil desenvolvedores. O BleepingComputer noticiou o comunicado ontem.

A Warp diz que detectou a operação em poucas horas e a conteve. A empresa contratou a CrowdStrike, informou as autoridades e notificou os usuários afetados. Segundo o Risky Business, Lloyd diz que os invasores usaram um enxame de agentes de IA para invadir o fornecedor. A Warp não nomeou o fornecedor, não descreveu a vulnerabilidade nem disse se os traces roubados incluíam código-fonte, prompts ou credenciais. O conselho aos usuários: acompanhar a atividade da conta e tratar mensagens não solicitadas com mais cuidado que o normal.

É o segundo vazamento de agente de código neste mês que começa nos servidores de um fornecedor. Em 16 de outubro, atacantes chegaram às chaves de API de provedores que cerca de 1,4% dos usuários do OpenCode Console tinham salvado, e alguns encontraram cobranças de até US$ 1.700 que não tinham feito. Falamos disso em As chaves estavam no console deles.

O que um trace de agente guarda

Um agente de código trabalha em loop. Ele lê um arquivo, executa um comando, lê a saída e decide o que fazer em seguida, e um trace registra cada passo. Isso inclui o prompt que você digitou, os arquivos que o agente abriu, os diffs que ele escreveu, os comandos de shell que executou e o que esses comandos imprimiram.

É por essa última parte que os segredos entram. Um agente que depura um deploy com falha executa env, abre o .env, imprime um arquivo de configuração e cola um stack trace com uma string de conexão. Em A transcrição guardou o token, a Trellix mostrou agentes de código copiando segredos do chaveiro para linhas de comando, para o histórico do shell e para as próprias transcrições, como efeito colateral de um trabalho comum. Dados de clientes entram do mesmo jeito: o agente abre um CSV ou consulta uma tabela para conferir uma correção, e as linhas vão parar no trace.

Um trace também guarda seu código em pedaços, os nomes de hosts internos e uma linha do tempo do que você estava fazendo. Para um atacante, alguns milhares deles são uma lista de desenvolvedores para phishing, cada um com uma história convincente sobre o projeto em que estava trabalhando naquela semana. É esse risco que está por trás do conselho da Warp sobre mensagens não solicitadas.

Por onde passa um trace de agente guardado na nuvem1 · O agente trabalhano notebook do dev:lê arquivos, executacomandos, lê a saída2 · Trace ao fornecedorlogs de decisão do agentee telemetria, guardados nanuvem do fornecedor3 · O terceiroum terceiro na infra daWarp; sem nome, falhanão divulgada4 · Invadido em 23/10por um enxame de IA,diz o CEO; traces de ~1%dos usuários levadosO que um trace de agente pode conterprompts · arquivos-fonte abertos pelo agente · diffs · comandos de shell e saída · variáveis de ambiente impressas ao depurarlinhas de clientes de uma consulta ou CSV · nomes de hosts internos · linha do tempo do trabalho de cada dev
O caminho de um trace de agente quando a ferramenta o guarda na nuvem. O agente trabalha no notebook, o trace vai para o fornecedor da ferramenta, e o fornecedor o armazena ou processa com um terceiro. Os atacantes da Warp entraram por esse terceiro.

A mesma sessão em uma máquina Bromure

O Bromure Agentic Coding roda Claude Code, Codex, Grok, Kimi e omp em VMs Ubuntu no seu Mac. Toda requisição que uma máquina faz, incluindo cada chamada do agente ao seu modelo, passa por um proxy no Mac. É nesse proxy que o Bromure registra o trace, troca as credenciais e aplica suas regras de rede. Pegue a sessão de depuração acima e rode-a ali.

O trace é gravado no seu Mac

O trace de sessão do Bromure responde à pergunta que você faz depois de um incidente: o que o agente fez? Máquinas novas registram AI request details: um registro de metadados para cada requisição, mais os corpos completos de requisição e resposta para os provedores de modelo. O Trace Inspector (⇧⌘I) transforma esses corpos em uma visão de conversa com cada chamada de ferramenta, cada comando de shell que o agente executou e cada arquivo que ele leu ou escreveu. O bromure-cli trace mostra os mesmos dados em um terminal.

Tudo isso fica em ~/Library/Application Support/BromureAC/traces/ no seu Mac. Os corpos capturados são selados com AES-GCM sob uma chave guardada no seu Keychain, com permissões de arquivo 0600. Em uma instalação individual, nenhum registro de trace, corpo ou resumo é enviado para lugar nenhum, e o proxy não tem nenhum endpoint de analytics ligado para usuários individuais. Os classificadores de prompt injection que leem esse mesmo tráfego também rodam no Mac.

Nenhum fornecedor tem uma cópia, nem os fornecedores dele. Um atacante que invade um provedor de logs não encontra lá nenhuma das suas sessões.

Os segredos no trace são substitutos

De volta à sessão de depuração. O agente executa env, abre o .env e imprime a configuração de deploy. Em uma máquina Bromure, toda credencial que você configurou é falsa dentro da VM. ANTHROPIC_API_KEY guarda um valor sk-ant-api03-brm-, GH_TOKEN e ~/.git-credentials guardam um substituto ghp_, ~/.aws/config aponta para um helper que entrega uma chave secreta falsa, e as chaves SSH ficam no host atrás de um socket de agente. Chaves que você importa de um .env existente também viram substitutos. O proxy só coloca o valor real na rede para o host ao qual aquela credencial pertence.

Então tudo o que o agente imprime e cola na conversa é um substituto. Isso vale para toda cópia: os logs do provedor de modelo, os arquivos de histórico da própria CLI do agente, um relatório de falha, um trace. Fora da máquina, os substitutos não autenticam em lugar nenhum. Se um deles for enviado a um host para o qual não foi emitido, o proxy bloqueia a requisição com HTTP 451, pausa a VM e mostra This environment may have been compromised com a credencial, o host ao qual ela pertence e o host para onde foi enviada.

O próprio trace do Bromure vai um passo além. Os cabeçalhos Authorization, Cookie, api-key e semelhantes são reescritos como <redacted> antes de qualquer gravação, e cada troca de credencial é guardada como uma prévia com os primeiros e últimos caracteres, como sk-a…f9q3. O segredo real nunca entra em um registro de trace, criptografado ou não.

Dados de clientes ficam no Mac

Ative PII Protection nas configurações da máquina e o proxy encontra dados pessoais em cada requisição antes que ela saia para o provedor de modelo: nomes, endereços de e-mail, números de telefone, números de cartão e de conta bancária, documentos de identidade e endereços. Ele troca cada valor por um substituto realista, um nome inventado ou um endereço @example.com, e devolve os valores reais na resposta, inclusive nos argumentos das chamadas de ferramenta. A detecção roda no Mac com o modelo Rampart embutido.

O agente trabalha com as linhas reais, e o provedor vê os substitutos. O mesmo cliente recebe o mesmo substituto em todas as rodadas, então o cache de prompt continua funcionando. A Security Timeline conta cada troca, 3 names · 1 phone number → api.anthropic.com, sem registrar um único valor.

Para trabalho que deve ficar no Mac, direcione o agente para um modelo local. Modelos MLX rodam na GPU do Mac, e essas rodadas não vão para nenhum outro lugar.

Você escolhe quem recebe qualquer coisa

CLIs de agentes falam com mais coisas além do modelo. Relatórios de erro, feature flags e telemetria de uso vão, cada um, para um host próprio. No painel Guardrails da máquina, defina Unmatched traffic como Deny e libere os hosts de que o projeto precisa: o provedor de modelo, sua forja, seus registros de pacotes. Qualquer outra conexão é recusada no Mac, e cada recusa vira uma linha na Security Timeline. Você fica com uma lista escrita das empresas que recebem dados daquela máquina, e foi você quem a escreveu.

Equipes supervisionam sem coletar transcrições

As organizações ainda precisam ver o que seus agentes fazem. Um Mac inscrito em um workspace do bromure.io transmite metadados de sessão para os administradores: ferramentas usadas, arquivos tocados, comandos executados, uso de tokens. Prompts brutos nunca são enviados. A conversa completa fica no trace criptografado no Mac do desenvolvedor. Um ponto vermelho no cabeçalho da janela mostra quando uma máquina está transmitindo, e o Private mode mantém local a atividade de um workspace, por exemplo um que usa uma chave de API pessoal.

Agente no notebook, trace na nuvemO agente roda env, abre .envchaves de API e tokens reais na saídaTrace guardado pelo fornecedore processado pelos fornecedores deleUm fornecedor invadidochaves válidas, trechos de código, clientese um pretexto de phishing para cada devBromure: trace no seu MacVM do agente (Ubuntu)env e .env mostram substitutos; chave real nunca na VMProxy do host no MacPII trocada antes do provedor; hosts nãoaprovados recusados; substituto fora: 451, VM pausadaTrace em Application SupportAES-GCM com chave no Keychain; cabeçalhos ocultos,trocas como prévias; nada é enviado
A mesma sessão de depuração com um agente no notebook cujos traces ficam na nuvem, e em uma máquina Bromure. No notebook, o trace leva segredos reais e linhas de clientes para o fornecedor e os fornecedores dele. No Bromure, o trace é criptografado no Mac, os segredos nele são substitutos ou prévias, os dados pessoais que chegam ao provedor são trocados e os hosts não aprovados são recusados.

A semana seguinte

Os usuários afetados da Warp agora precisam descobrir o que seus traces continham e rotacionar tudo o que pode ter estado neles. Em um Mac com Bromure, a primeira parte leva poucos minutos. Abra o Trace Inspector, filtre por workspace e ative Conversations only para ver cada comando que o agente executou e cada arquivo que leu. Leaks only lista qualquer requisição que levou um token real que o Bromure não emitiu, o que mostra se algum segredo bruto chegou a passar pelos substitutos.

A rotação acontece em um só lugar. As chaves reais ficam em um único cofre criptografado no host. Cole o novo valor no painel Credentials da máquina e a próxima inicialização grava o substituto correspondente. Uma chave armazenada como referência do 1Password é resolvida de novo a cada dois minutos, então uma rotação no 1Password chega às máquinas em execução sem reiniciar.

Os traces ficam em casa

O trace de sessão é gravado no seu Mac e selado sob uma chave do Keychain. Instalações individuais não enviam nada.

Segredos são substitutos

Tudo o que o agente imprime é falso. Os traces mantêm os cabeçalhos de autenticação ocultos e as trocas como prévias curtas.

Dados pessoais são trocados

Nomes, e-mails, números de cartão e endereços chegam ao provedor de modelo como substitutos, detectados no Mac.

Você escolhe os hosts

Com Unmatched traffic em Deny, só os hosts que você liberou recebem alguma coisa, e cada recusa é registrada.

Guarde o registro onde o trabalho aconteceu

Vale a pena guardar traces de agente. É com eles que você descobre o que um agente fez às 3 da manhã e responde a um auditor. A questão é quem os guarda. Cada empresa que armazena o log de decisões do seu agente é mais uma empresa cujos fornecedores podem perdê-lo, e os atacantes agora rodam os próprios agentes para encontrar o fornecedor mais fraco.

O Bromure Agentic Coding guarda o registro completo na máquina onde o agente trabalhou, criptografado sob o seu Keychain, e o preenche com substitutos no lugar dos segredos. Quando o próximo fornecedor anunciar um vazamento, você responde se foi afetado a partir do seu próprio Trace Inspector.

Para ver como os agentes espalham segredos pelas próprias transcrições, leia A transcrição guardou o token. Para o vazamento do OpenCode Console no começo deste mês, leia As chaves estavam no console deles.