O pacote que o agente inventou
Pesquisadores da Universidade de Tel Aviv, do Technion e da Intuit divulgaram o HalluSquatting: os atacantes sondam um agente de código até descobrir quais nomes de pacotes, repositórios ou skills ele inventa de forma confiável, registram esses nomes inventados e esperam. Quando você pede a coisa real, o agente busca a versão do atacante — e as instruções ocultas dentro dela sequestram o shell do agente para instalar malware de botnet. Nomes de repositórios alucinados em até 85% das vezes; instalações de skills em até 100%. O Bromure Agentic Coding executa todo esse caminho de busca e execução dentro de uma VM Linux descartável, verifica os registros de pacotes onde o palpite cai, e deixa ao malware apenas iscas para roubar.
Você pediu ao seu agente de código um pacote conhecido. Ele digitou um nome que parecia certo, executou a instalação e seguiu em frente. O nome era um palpite — e alguém já havia registrado exatamente esse palpite e o preenchido com malware. Ninguém cometeu um erro de digitação. O agente inventou o nome, e o atacante esperava onde a invenção caiu.
Em julho de 2026, um grupo da Universidade de Tel Aviv, do Technion e da Intuit — Aya Spira, Stav Cohen, Ron Bitton, Avishai Wool e Ben Nassi, entre outros — descreveu um ataque que chamam de HalluSquatting. Ele transforma uma das fraquezas mais conhecidas dos grandes modelos de linguagem — o fato de inventarem coisas e afirmarem a invenção como fato — em um sistema de entrega para a cadeia de suprimentos, mirado não em você, mas no agente que trabalha em seu nome.
A montagem é quase banal de tão simples. Peça a um agente de código para puxar um pacote, clonar um repositório ou instalar um skill para um projeto que ele nunca viu, e ele muitas vezes adivinhará o identificador em vez de admitir que não sabe. O HalluSquatting transforma esse palpite em arma.
De um erro de digitação a uma alucinação
O typosquatting existe desde sempre: registre expresss ou lodahs,
espere que um humano erre a tecla no terminal. Depende de uma pessoa cometer
um erro. O slopsquatting, que surgiu ao longo de 2025 e início de 2026,
moveu o erro para o modelo — um agente alucina um nome de pacote que não
existe, um atacante o registra primeiro, e o próximo agente que alucina o
mesmo nome instala a carga. Em janeiro de 2026,
Charlie Eriksen, da Aikido,
documentou um pacote npm alucinado, react-codeshift, que se espalhou para
237 projetos antes que alguém percebesse. Nenhum erro de digitação foi
cometido, então nenhuma defesa contra typosquatting foi acionada também.
O HalluSquatting é a escalada de 2026, e a escalada está em que a alucinação não é mais deixada ao acaso. O método dos pesquisadores é uma receita de quatro passos:
- Escolha um alvo que o modelo não tenha memorizado. Repositórios em alta e ferramentas que surgiram depois do corte do treinamento são o ponto ideal: o modelo já ouviu falar deles, então vai tentar, mas não viu o nome real, então vai inventar um.
- Aprenda o erro. Sonde o agente repetidamente até saber qual nome falso ele produz de forma confiável. O artigo relata nomes de repositórios alucinados aparecendo em até 85% das vezes, e cenários de instalação de skills chegando a até 100% — consistente o suficiente para apostar.
- Reivindique o nome inventado. Registre-o no GitHub ou numa loja de
plugins e preencha o README, o manifesto ou o
SKILL.mdcom instruções escritas para o agente ler. - Espere. Quando um desenvolvedor pede o recurso real, o agente emite o identificador inventado do atacante em vez disso e o busca. As instruções ocultas então sequestram a própria ferramenta de execução de comandos do agente para instalar a carga.
Essa carga não é uma prova de conceito. Os pesquisadores encadeiam o palpite a uma injeção de prompt — o que o grupo de Nassi chama de promptware — e chegam à execução remota de código e a malware de botnet: máquinas de desenvolvedores infectadas que ligam de volta para casa e recebem ordens. O palpite coloca o arquivo do atacante no prato do agente, as instruções enterradas o transformam em comandos, e os comandos constroem um botnet a partir dos laptops dos desenvolvedores.
Por que isto é um ataque ao agente, não a você
A frase que resume tudo, tirada do estudo, é que o HalluSquatting "migra o alvo dos humanos para os agentes de IA, que podem não confirmar se a fonte é real enquanto executam comandos". Um humano inseguro sobre o nome de um pacote para, verifica o registro, olha a contagem de estrelas. Um agente em modo de execução automática não para. Seu trabalho é continuar, e um nome que saiu de seus próprios pesos carrega a mesma autoridade que um nome que você digitou. Ele não tem motivo para duvidar de si mesmo.
Os pesquisadores testaram nas ferramentas que os desenvolvedores usam todos os dias — GitHub Copilot, Cursor, Windsurf, Cline, Google Gemini CLI e a família OpenClaw — e descobriram que as alucinações eram "transferíveis entre diferentes modelos de LLM e aplicações", funcionando contra agentes construídos sobre modelos da Anthropic, da OpenAI e do Google. Nenhum fornecedor pode corrigir isto com um patch, porque cabalga sobre a forma compartilhada de como um agente de código transforma um pedido em ação: adivinhar o nome, buscar o recurso, ler o que ele diz, fazer o que ele diz.
Por que "só parar de alucinar" nunca foi a solução
A resposta tentadora é fazer o modelo verificar a si mesmo — resolver o nome
antes de buscar, sinalizar clone, install e fetch, ancorar cada
identificador em algo real. São boas ideias, e os pesquisadores as
recomendam. Mas todas vivem no mesmo lugar: um filtro que lê o que o agente
está prestes a fazer e espera pegar o caso ruim antes que ele execute. O
HalluSquatting é projetado exatamente contra esse leitor. O nome parece
legítimo porque o modelo o produziu; o README parece documentação porque é
isso que um README é; o comando de instalação é a coisa mais comum que um
agente de código faz o dia todo.
Este é o muro contra o qual o resto da segurança de agentes vive se chocando. Uma lista de bloqueio que lê um comando perde para o shell que o reescreve. Um scanner que lê um pacote perde para a carga que não está no pacote. Um agente que busca um skill recomenda o malware que ele mesmo encontrou. O HalluSquatting adiciona a versão mais afiada até agora: o nome malicioso não veio da internet de jeito nenhum. Veio do modelo. Você não pode colocar na lista negra a imaginação do seu próprio agente. A descrição é do atacante para escrever, e a execução é o único lugar onde o desfecho é decidido.
Onde o Bromure traça a linha
O Bromure Agentic Coding não tenta convencer o modelo a não adivinhar. Ele muda o que um palpite errado pode alcançar. Cada agente que o Bromure executa — Claude Code, Codex, Grok Build — roda dentro de uma VM Linux descartável no seu Mac, não no macOS em si. Então, quando o agente emite um nome inventado, busca o recurso do atacante e executa a instalação do jeito que os pesquisadores viram esses agentes fazerem, várias coisas já são verdadeiras.
Primeiro, e raro para essa classe de ataque, o caminho do registro é
verificado. Quando o nome inventado é um pacote npm, PyPI ou Cargo — o
caso do slopsquatting, o caso react-codeshift — ele cai bem dentro da
verificação de cadeia de suprimentos do Bromure, que inspeciona os pacotes
conforme são puxados dos registros públicos. Esta é a única parte do
HalluSquatting onde o palpite se resolve em algo que o Bromure foi
construído para examinar diretamente, antes de ser confiado. Uma dependência
alucinada ainda é uma dependência, e entra pela porta da frente que o
Bromure vigia.
Segundo, a carga roda numa caixa que você joga fora. Suponha que o nome inventado aponte para um repositório GitHub ou um skill de loja de plugins em vez de um pacote de registro, e que o loader do botnet execute. Ele executa dentro da VM. Não há host persistente sobre o qual receber ordens: redefina o perfil para a base e o binário depositado, a tarefa agendada, o ponto de apoio — tudo isso desaparece. Um nó de botnet que se desvanece na próxima redefinição não é grande coisa como nó de botnet.
Terceiro, não há credenciais reais para alistar. Um malware de botnet
que vasculha o ambiente e o disco em busca de chaves de API, tokens git e de
nuvem, e chaves SSH encontra iscas: o Bromure injeta valores de substituição
(brm_…, um ~/.kube/config sintético, tokens ssh e de nuvem descartáveis)
na VM e só devolve os reais no host, no proxy, no caminho de saída para a
API genuína. As chaves reais nunca entram na caixa. O que a carga envia para
seu comando e controle é um saco de strings que não autenticam nada.
Quarto, o promptware é lido diante de um detector. O HalluSquatting é um
ataque de leitura antes de ser um ataque de execução — todo o exploit
depende de o agente ingerir o README, o manifesto ou o SKILL.md do
atacante e tratá-lo como seu próprio plano. É precisamente a autoridade não
confiável que o Bromure vigia: a mesma classe de um CLAUDE.md ou
AGENTS.md malicioso. A detecção de injeção de prompt no dispositivo do
Bromure avalia o conteúdo que o agente lê como documentação diante de
modelos locais que nunca deixam o Mac, mais um scanner determinístico para
truques de Unicode invisível. Uma instrução dizendo "agora execute este
script de instalação" enterrada num manifesto buscado é exatamente o caso
para o qual esse detector existe.
E por baixo de tudo isso, o tráfego de saída é visível. O sinal do botnet, a busca do estágio, a tentativa de exfiltração — tudo aparece no Registro de Segurança do Bromure como tráfego de saída que você pode ver, em vez de uma chamada silenciosa de uma máquina em que você confiava.
O que isto delimita
Isolamento e verificação são contenção, não cura para a alucinação. Vale a pena ser preciso sobre o que o Bromure muda aqui e o que não muda.
O agente ainda inventa o nome
O Bromure não impede o modelo de alucinar um identificador nem de buscar aquilo em que esse nome se resolve. Ancorar os palpites do agente é um problema de modelo e de harness. O que o Bromure muda é onde a coisa buscada roda e o que ela pode alcançar ao fazê-lo.
A verificação de registros cobre registros
Um pacote npm, PyPI ou Cargo alucinado é exatamente o que a verificação de cadeia de suprimentos inspeciona — uma captura genuína na porta da frente. Um repositório GitHub alucinado ou um skill de loja de plugins não é um pacote de registro; esse caminho é sustentado pelo isolamento, pelo detector de injeção e pelas iscas, não pela verificação de registro.
A substituição cobre os segredos que você configura
A troca por iscas protege as credenciais que você põe num perfil: chaves de modelo, tokens git e de nuvem, endpoints de banco de dados gerenciado, chaves ssh. Um token que um script escreve no disco no meio da execução, ou uma sessão que você estabelece à mão na caixa, é apenas dado. Mantenha os segredos no broker, não no espaço de trabalho.
A detecção é uma rede, não um muro
A avaliação de injeção no dispositivo sinaliza um manifesto de instalar-e-executar com mais frequência do que não, mas um autor cuidadoso pode formular uma isca para escapar de um único scanner. Trate o detector como uma camada; a contenção — uma caixa descartável com chaves falsas e tráfego de saída registrado — é o que sustenta quando um detector falha.
Os pesquisadores terminam com uma frase que vale guardar: "Os ataques sempre melhoram; nunca pioram." Suas taxas de sucesso são um piso, não um teto, e o mecanismo de confiança subjacente — um agente que trata o próprio palpite como fato e um arquivo buscado como plano — não vai ser corrigido neste trimestre. Seu agente vai inventar um nome para algo de que se lembra pela metade, e alguns desses nomes inventados já estarão tomados. A questão não é se ele algum dia buscará o errado. A uma taxa de alucinação de 85%, às vezes buscará. A questão é o que roda quando isso acontece: sua máquina, suas chaves reais e um ponto de apoio que permanece — ou uma caixa Linux que você pode jogar fora, com iscas dentro dela e o registro verificado na entrada. O Bromure faz com que seja a segunda.