Radar · 27 de agosto de 2026
O agente continua obedecendo. Só que a instrução não é mais sua
A CVE-2026-65105 está na forma como o NVIDIA NemoClaw sobe o Ollama na máquina do desenvolvedor. Uma linha de configuração desliga a defesa que existia justamente contra esse ataque, e o resto do caminho é técnica de navegador com vinte anos de idade.
O que aconteceu: pesquisadores da Oasis Security, com publicação da Cyera, descreveram em 25 de agosto uma falha no NVIDIA NemoClaw, a ferramenta que instala e roda o agente OpenClaw dentro de um sandbox OpenShell. Para que o contêiner alcance o servidor de inferência local, o NemoClaw sobe o Ollama com OLLAMA_HOST=0.0.0.0:11434. Esse bind fora do loopback faz o Ollama pular inteiramente a validação de cabeçalho Host. Combinado com DNS rebinding, qualquer página web ganha acesso completo e sem autenticação à API do modelo. A NVIDIA foi notificada pelo PSIRT antes da publicação e já corrigiu na versão mais recente.
A parte incômoda dessa história não é o DNS rebinding. É a mensagem que o instalador imprime na tela.
Quando o NemoClaw termina de configurar o ambiente, ele informa ao usuário: Using Ollama on localhost:11434. A API realmente responde em localhost. O socket, porém, está aberto em 0.0.0.0, ou seja, em todas as interfaces da máquina. Quem lê a mensagem entende "só na minha máquina". O que está no ar é "em toda a rede em que essa máquina estiver".
Não é um detalhe de redação. É a diferença entre um serviço sem autenticação exposto ao próprio computador e o mesmo serviço exposto ao Wi-Fi do coworking, ao segmento de rede do escritório e a qualquer dispositivo comprometido no meio do caminho.
Por que o bind em 0.0.0.0 desliga a defesa
A API do Ollama na porta 11434 nunca teve autenticação, por projeto. Ela se defende de páginas web com duas camadas. A primeira é o middleware de CORS, que confere o cabeçalho Origin. A segunda é a validação do cabeçalho Host, que rejeita requisições cujo Host não seja um nome local reconhecido.
A segunda camada existe especificamente para barrar DNS rebinding. E é ela que some. O código verifica se o endereço de bind é loopback; se não for, pula a checagem inteira. Sobra o CORS, e o CORS não resolve o problema: no ataque de rebinding, Origin e Host são o mesmo domínio do atacante. Mesma origem, requisição liberada.
O restante é mecânica conhecida. O atacante registra um domínio, faz a vítima abri-lo na porta 11434, e então troca a resolução DNS para 127.0.0.1. O navegador continua tratando aquele nome como a mesma origem, mas as requisições agora chegam ao Ollama local.
O payload que ninguém vê
Com a API aberta, o caminho óbvio seria injetar um system prompt no modelo. Não funciona contra um agente, porque o OpenClaw manda o próprio system prompt na chamada e ele sobrescreve o do modelo.
Os pesquisadores foram um nível abaixo. O endpoint /api/create também aceita o campo template, um template Go que define como a lista de mensagens vira texto bruto antes de chegar ao modelo. O template é aplicado a todas as mensagens, inclusive ao system prompt que o cliente acabou de enviar. E o cliente não tem como ler nem controlar o template.
Na prática o atacante busca o template original via /api/show, insere a própria instrução no ponto em que as mensagens de sistema são renderizadas e devolve o conjunto. Toda a lógica original continua ali: renderização de ferramentas, tokens especiais, formatação por papel. O agente manda "você é um assistente prestativo" e o modelo recebe "você é um assistente prestativo" seguido do que o atacante escreveu.
O envenenamento persiste entre conversas, sobrevive ao system prompt do cliente e não altera nada que apareça na interface. Nome do modelo, tamanho, família, quantização e metadados seguem idênticos.
O que a API expõe
| Endpoint | O que o atacante consegue |
|---|---|
POST /api/create | Reescrever o template do modelo. É o vetor de persistência. |
POST /api/show | Ler o template original, o system prompt e a licença do modelo. |
GET /api/tags | Inventariar todos os modelos instalados, com tamanho e quantização. |
POST /api/me | Obter o hostname da máquina, a chave pública e o usuário, se houver sessão. |
POST /api/generate | Rodar inferência arbitrária na GPU da vítima. |
POST /api/push | Publicar modelos no ollama.com sob a conta da vítima. |
DELETE /api/delete | Apagar os modelos locais. |
Leitura LATAMSEC
Um agente comprometido pode sugerir código com falha que passa em revisão superficial, deixar de sinalizar problema de segurança, recomendar pacote controlado pelo atacante e mandar trecho de conversa para fora. Nada disso exige tocar na máquina depois da primeira visita.
E aqui está a conclusão que vale além desta CVE: o sandbox delimitou o dano ao endpoint, não ao agente. O OpenShell isola sistema de arquivos, rede e processos com competência. Só que um agente útil dentro de uma empresa recebe acesso a repositório, pipeline de CI, API interna, serviço de nuvem, ferramenta de mensageria e servidor MCP. O raio de alcance de um comprometimento não é o limite do contêiner. É a soma das credenciais que o agente carrega.
Vale registrar o contexto: esta é a terceira publicação da mesma equipe em agosto sobre runtime local de IA, depois de dez falhas em motores de modelo aberto e de uma análise sobre sandbox mal desenhado em sete produtos. A camada que roda o modelo na máquina do desenvolvedor virou superfície de ataque com pesquisa dedicada, e o inventário corporativo em geral não sabe que ela existe.
Três verificações que cabem em uma manhã. Primeira: existe algum ollama serve em execução na frota de desenvolvimento e em qual endereço ele está ligado? Um ss -ltnp | grep 11434 responde. Segunda: as máquinas que rodam agente com inferência local estão na mesma rede que impressora, dispositivo de visitante ou VLAN compartilhada? Terceira, e a mais difícil: se o modelo local de alguém tiver sido envenenado em julho, existe alguma forma de perceber isso hoje? Sem hash do template registrado em algum lugar, a resposta honesta costuma ser não.
Atualizar o NemoClaw resolve o bind. Não devolve confiança nos modelos que já estavam na máquina. Para esses, o caminho é comparar o template com o da origem ou simplesmente baixar de novo.
Outros sinais do dia
A CVE-2026-60004, de nota 9,8, entrou no catálogo de exploradas em 25 de agosto. O ataque relatado deixa carga de mineração. Correção na versão 1.27.1.
Os pacotes não carregam malware. Funcionam como redirecionador para páginas falsas de CAPTCHA no estilo ClickFix, o que reduz a chance de detecção por varredura de dependência.
A Check Point Research descreveu como o driver de remediação em boot do Microsoft Defender permite operações arbitrárias de arquivo e registro, do Windows 7 ao 11 25H2.
A ReliaQuest confirmou que um funcionário aprovou um push de MFA em uma página falsa de Okta em 22 de agosto. A empresa diz que o acesso foi somente leitura, em uma identidade, sem persistência.
Fontes e aprofundamento
- Cyera Research · Drive-By Agent Hijacking: One Website Visit, Persistent Model Poisoning, por Elad Luz e Ofek Itach (25/08/2026), com a pesquisa original da Oasis Security.
- NVIDIA · Product Security Incident Response Team (canal usado na divulgação coordenada da CVE-2026-65105).
- Ollama · documentação do runtime e da API na porta 11434 (comportamento de CORS e validação de Host).
- GBHackers · NVIDIA NemoClaw Vulnerability Lets Attackers Hijack AI Agents via DNS Rebinding (26/08/2026).
- Hackread · NVIDIA NemoClaw Flaw Lets Malicious Websites Hijack OpenClaw AI Agents (26/08/2026).