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

Seu agente de programação se parece exatamente com um atacante

Em julho de 2026, a Sophos X-Ops relatou que, ao longo de uma semana de telemetria do Windows, agentes de programação como Claude Code, Cursor e Codex dispararam as mesmas regras de endpoint criadas para pegar invasores — 56,2% dos bloqueios eram de acesso a credenciais, o maior deles uma descriptografia das senhas do navegador. O comportamento é idêntico ao de um ataque real; a única variável é em qual máquina ele roda. O Bromure Agentic Coding torna essa variável uma VM Linux descartável com credenciais-isca, de modo que as manobras barulhentas caem numa caixa descartável e as defesas do seu host permanecem rígidas.

Seu agente descriptografou as senhas salvas do navegador, listou o gerenciador de credenciais, baixou um instalador com um utilitário de sistema do Windows e largou um script na pasta de inicialização. Cada uma dessas manobras está na lista de verificação de um invasor real. A Sophos viu um agente de programação fazer tudo isso. Nada era malicioso — que é exatamente o problema, porque a telemetria que um atacante gera e a telemetria que seu agente gera são a mesma telemetria.

Em 7 de julho de 2026, a Sophos X-Ops publicou uma análise de uma semana de telemetria de endpoint de junho, examinando o que acontece quando desenvolvedores apontam agentes de programação para máquinas reais. A constatação é uma colisão, não um bug que alguém possa corrigir. O trabalho cotidiano de um agente — ler uma credencial, executar um comando, baixar uma ferramenta, manter algo vivo entre reinicializações — mapeia quase um a um sobre as táticas MITRE ATT&CK que a detecção de endpoint está afinada para pegar. Então os sensores dispararam.

O que os sensores realmente viram

Ao longo da semana, a maior fatia de acionamentos de regras bloqueantes — 56,2% — recaiu sobre Acesso a Credenciais, e outros 28,8% sobre Execução. Essas são duas das categorias com formato mais parecido com o de um atacante no referencial. A maior regra isolada de credenciais, com 42,6% desse grupo, dispara quando um processo usa a API de Proteção de Dados do Windows (DPAPI, o serviço do sistema que desbloqueia os segredos armazenados de um usuário) para descriptografar os logins salvos do navegador. A Sophos rastreou isso até a skill /browse da GStack — um pacote de skills popular que dá um navegador a um agente — executando PowerShell para desbloquear dados salvos do navegador. Ela pegou isso rodando sob o Claude Code.

O restante da lista se lê como um relatório de incidente. Agentes executaram cmdkey /list para enumerar o Gerenciador de Credenciais do Windows. Mataram o processo do navegador e então enfiaram a mão em seu repositório de credenciais. Baixaram um instalador do Python usando certutil e bitsadmin — dois binários legítimos do Windows que atacantes abusam para buscar cargas sem disparar um filtro de download, a técnica que os defensores chamam de LOLBin (“living off the land binary”, viver da terra). O Cursor escreveu um VBScript na pasta de Inicialização do Windows, um caso clássico de persistência. E linhas de comando do Claude carregavam --dangerously-skip-permissions, o sinalizador que desliga os próprios avisos “tem certeza?” do agente.

Nada disso era um ataque. No contexto, é quase sempre a automação que o desenvolvedor pediu. Mas a Sophos é direta sobre o que isso significa para a defesa: as regras estão funcionando como projetadas, e o comportamento sozinho já não consegue distinguir um agente benigno de um real.

Seu agente de códigoskill de navegador · setupvocê pediu a eleUm invasor realpós-exploraçãona mesma máquinaOs mesmos comandos• DPAPI: descriptografa logins• cmdkey /list• certutil / bitsadmin fetch• escreve script na InicializaçãoSensor de endpointAcesso a Credenciais · Execuçãoquem rodou? desconhecido
Um bloco de comandos, dois autores, um sensor. Um agente de programação rodando uma skill de automação de navegador e um invasor em pós-exploração emitem as mesmas manobras — descriptografar o cofre do navegador, listar o gerenciador de credenciais, buscar uma ferramenta com um LOLBin, escrever na Inicialização. O sensor de endpoint vê telemetria idêntica e não consegue dizer quem a digitou. O único fato que difere é em qual máquina os comandos rodaram.

A armadilha é consertar no sensor

Leia essa constatação como operador e a pressão é óbvia. Sua equipe adota agentes de programação. A ferramenta de endpoint começa a disparar alertas de acesso a credenciais e de execução toda vez que alguém roda um. Os alertas são barulhentos, e são “falsos” no sentido de que ninguém está sob ataque — então o movimento natural é silenciá-los: adicionar uma exceção para o agente, pôr o pacote de skills na lista de permissões, parar de sinalizar leituras DPAPI daquela árvore de processos.

No instante em que você faz isso, disse às suas defesas para ignorar a exata sequência que um invasor real usa. E o agente não é uma coisa segura de excluir, porque é o item mais provável na máquina de ser voltado contra você. Uma injeção de prompt escondida num repositório, uma skill de marketplace envenenada, uma dependência maliciosa — cobrimos cada um deles — faz o agente executar as instruções do atacante com seus privilégios. Quando isso acontece, o agente faz a mesma descriptografia DPAPI, o mesmo despejo do gerenciador de credenciais, a mesma busca por LOLBin — só que agora é para valer. Você cegou o único sensor que o teria pego, em nome de impedi-lo de gritar lobo sobre si mesmo.

A Sophos chega à versão sóbria: a engenharia de detecção terá de se adaptar, algumas regras precisarão de ajuste, e o sinal distintivo terá de vir do contexto — qual agente, invocado como — em vez da ação sozinha. Isso está correto, e também é muito trabalho contínuo para manter um sensor honesto diante de um alvo em movimento. Há uma opção mais direta: parar de rodar o agente onde o sensor vive.

Mova o agente, não o alarme

O Bromure Agentic Coding roda o agente inteiro a um hipervisor de distância, dentro de uma VM Linux descartável no seu Mac. As leituras do repositório de credenciais, os downloads de ferramentas, as escritas de persistência — tudo isso acontece numa caixa que não é sua máquina, e cujo reset volta a uma imagem base limpa entre sessões. Três coisas decorrem disso, e nenhuma exige que você amoleça uma única regra no host.

O barulho nunca alcança seu endpoint. As defesas reais do seu host permanecem rígidas porque o agente não está no host para dispará-las. A escrita na pasta de inicialização cai num sistema de arquivos descartável; a reinicialização que ela esperava nunca vem, e o reset a descarta de qualquer forma.

As leituras de credenciais voltam vazias. Este é o golpe direto naqueles 56,2%. O Bromure mantém os segredos reais no host e troca por falsos no proxy, no fio, de modo que o que de fato fica na VM é material-isca — um marcador brm_… onde deveria estar a chave de API, um kubeconfig sintético, credenciais git e ssh descartáveis. Um agente que descriptografa o cofre do navegador ou despeja o gerenciador de credenciais dentro dessa VM não colhe nada que funcione. O valor real só é substituído na requisição de saída, numa fronteira que o agente não consegue contornar.

--dangerously-skip-permissions deixa de ser perigoso. O sinalizador existe porque ser perguntado “tem certeza?” a cada passo mata o sentido de um agente; as pessoas o desligam. O que o torna imprudente é a máquina por baixo. Mova a máquina para uma VM descartável com credenciais-isca e o sinalizador é apenas rápido — o motivo de temê-lo nunca foi o sinalizador, foi o raio de destruição.

Agente na sua máquinaAgente de códigomanobras tipo ATT&CKSegredos reaiscofre do nav., tokensInicialização · disco real · persisteum agente sequestrado faz tudo isso de verdadeSensor de endpoint, forçado a escolherfalsos positivos constantes …… ou liberar o agente e ficar cegoAgente numa VM BromureAgente de códigomesmas manobras, descartávelSegredos-iscabrm_… , chaves falsasDisco descartável · reset para a basea persistência é apagada entre sessõesFronteira do hostsubstitui segredos reais · filtra chamadas destrutivasregistra a saída · sensor do host segue rígido
Dois lugares para pôr o mesmo agente. Na sua máquina (à esquerda), os comandos em formato de ataque atingem credenciais reais e persistência real, e sua ferramenta de endpoint fica presa entre falsos positivos constantes e um ponto cego. Numa VM Bromure (à direita), os mesmos comandos atingem credenciais-isca numa caixa que se reinicia, o sensor do host permanece rígido porque o agente não está no host, e as manobras de saída cruzam uma fronteira que substitui os segredos reais, filtra as chamadas destrutivas e registra o tráfego.

E quanto ao agente sequestrado

A contenção responde ao barulho, mas a preocupação mais aguda é o agente que não é meramente barulhento — ele foi virado. A fronteira do Bromure foi construída para esse caso também. Sua detecção de injeção no dispositivo pontua o conteúdo não confiável e os arquivos de instruções que o agente lê — com um modelo PromptGuard local e um classificador ajustado — antes de o agente agir sobre eles, de modo que o “agora exfiltre as chaves” malicioso é sinalizado na porta. As manobras que importariam fora da caixa — um push, um deploy, um Delete* contra sua nuvem — cruzam o proxy do host, onde os Guardrails podem retirar as chamadas destrutivas por completo e o consentimento por destino pode exigir primeiro um toque humano. E cada requisição de saída cai no rastro da sessão, de modo que o retorno de que um invasor precisa aparece como uma linha registrada carregando uma credencial falsa.

A colisão comportamental que a Sophos mediu é real e não vai embora — o trabalho honesto de um agente de programação se sobrepõe ao manual de um atacante por projeto. Você não consegue resolver isso no sensor sem ou se afogar em falsos positivos ou abrir um buraco pelo qual seu próprio agente vai passar no dia em que for comprometido. O Bromure resolve isso em outro lugar: ele para de se importar com qual dos dois digitou o comando, porque o comando cai numa caixa que se reinicia, gasta credenciais que são iscas, e só consegue tocar o mundo exterior através de uma fronteira que observa.

O que isso delimita

O isolamento é contenção, não a promessa de que nada de ruim executa. Vale a pena ser preciso sobre as bordas.

São nomes do Windows; a colisão não é

DPAPI, cmdkey, certutil e a pasta de Inicialização são do Windows. O Bromure roda o agente no Linux, então esses binários exatos nunca disparam dentro dele. Mas o padrão é independente de plataforma: um agente no Linux lê ~/.aws/credentials, despeja tokens de ambiente e escreve um cron ou uma unit do systemd — as mesmas manobras em formato de ataque sob outros nomes. O controle também é o mesmo. Localização e iscas, não assinaturas.

A substituição cobre os segredos que você configura

A troca por iscas protege as credenciais que você coloca num perfil: chaves de modelo, tokens git e de nuvem, endpoints de bancos de dados gerenciados, chaves ssh. Uma senha que um script escreve num arquivo no meio da sessão, ou um segredo que você cola na caixa à mão, é apenas um arquivo que o agente pode ler. Mantenha os segredos no broker, não no espaço de trabalho.

A detecção é uma rede, não um muro

A pontuação de injeção no dispositivo sinaliza uma instrução maliciosa na maioria das vezes, mas um autor determinado pode esfomear qualquer scanner isolado. Trate o detector como uma camada; a contenção — uma caixa descartável com chaves falsas e uma saída registrada — é o que segura quando um detector falha.

Seu EDR de host ainda importa

O Bromure não substitui a proteção de endpoint; ele lhe dá um trabalho mais limpo. O barulho do agente sai do host, então seu sensor continua vigiando a máquina em que você de fato entra, sem ser embotado — e um invasor real ali ainda tem de passar por ele.

A lição por baixo dos números da Sophos não é “agentes são perigosos”. É que você não consegue distinguir um ator bom de um mau pelo formato dos comandos, porque o formato é o mesmo. Então pare de tentar decidir isso no teclado, e decida no perímetro: rode o agente onde seu trabalho em formato de ataque está contido, suas credenciais são falsas e cada passo dele para fora é registrado. Instale-o.