
Notícia
Um arquivo na pasta Downloads faz o seu agente de IA instalar malware
Introdução
A Forever Security — empresa que monitora riscos introduzidos por agentes de IA e software autônomo — interceptou um agente de programação tentando instalar um pacote malicioso do npm na máquina de um cliente real, no meio de uma sessão. O software de monitoramento barrou antes que qualquer código rodasse.
Só que a origem da ordem não fazia sentido. Não veio de uma dependência do projeto. Não veio de um repositório de código. Veio de um arquivo de texto chamado AGENTS.md deixado na pasta ~/Downloads do cliente — que por acaso também era o diretório de trabalho do agente.
E ninguém sabia como aquele arquivo tinha ido parar lá.
A investigação que se seguiu, conduzida pelos pesquisadores Gal Weizman e Omer Samet, documentou um vetor que não depende de falha de software, não exige nenhum clique e não tem correção possível do lado de quem fabrica os agentes. O relatório tem um subtítulo que resume o problema inteiro: "Markdown é o novo executável".
Se você usa OpenAI Codex (agente de programação que executa tarefas no seu projeto), Claude Code (o equivalente da Anthropic) ou qualquer agente de código no dia a dia, esta matéria vale até o fim — inclusive porque a defesa é simples e leva menos de um minuto.
O que aconteceu numa máquina real
O alerta foi comum: um agente tentando instalar function-color, um pacote npm malicioso conhecido, de uma campanha que rodou cerca de dois anos sem ser notada até ser capturada e documentada publicamente pela Checkmarx. O npm já removeu o pacote.
Bloquear um pacote conhecidamente malicioso é rotina. O que chamou a atenção foi de onde vinha a instrução: um AGENTS.md na pasta ~/Downloads da máquina.
O AGENTS.md é um arquivo de texto simples que os desenvolvedores deixam na pasta de um projeto para orientar o agente — quais ferramentas usar, como rodar os testes, quais convenções seguir. Não é um executável. Não faz nada sozinho.
Ele apenas é lido. E obedecido.
As duas condições que se juntaram
O vetor existe porque duas coisas se encaixaram, e nenhuma das duas é um defeito:
Como a ordem chega até o agente
A primeira condição é que o AGENTS.md existe para ser obedecido — esse é literalmente o propósito do arquivo. Ele fica numa pasta de projeto que você controla. Na primeira vez que você trabalha ali, você vê o arquivo e o avalia. Depois disso, você confia nele. Você abre o Codex ou o Claude naquela pasta e o agente segue o arquivo. Isso é o comportamento projetado, não um erro.
A segunda condição é que uma página web consegue salvar um arquivo na sua máquina sozinha. Sem clique. Sem aprovação. Escolhendo o nome e o conteúdo. Isso deixou de ser perigoso quando os sistemas operacionais fecharam a porta da execução automática: hoje, um executável vindo da internet não roda até você autorizar. Então um arquivo baixado, por si só, deixou de ser ameaça.
Agora junte as duas.
A Forever resume a junção numa frase: "~/Downloads é especial. É a única pasta em que a web consegue escrever sozinha." Uma página pode baixar silenciosamente um arquivo chamado AGENTS.md para os seus Downloads. Nas mãos de um agente, esse arquivo se comporta como um executável — as instruções dele são executadas. Mas não é um executável, então nenhuma das proteções que barram executáveis se aplica a ele. Ele fica lá, como qualquer download inocente, até um agente lê-lo.
Você confia nas pastas em que trabalha, e espera que elas continuem como você deixou — porque nada na web deveria conseguir mexer numa pasta da sua máquina. Só que Downloads é a exceção. A web escreve ali. E agora a web pode plantar instruções numa pasta em que você confia, que o seu próprio agente vai cumprir.
Para fechar o círculo, o ataque ainda precisa que você abra o agente naquela pasta — e isso é comum, porque as pessoas usam o agente justamente para organizar os Downloads ou para agir sobre um arquivo recém-baixado. E pode piorar: hoje boa parte da navegação é feita pelo próprio agente. Você entrega uma tarefa e sai de perto enquanto ele abre um navegador e visita sites sozinho. Um desses sites deixa o arquivo, e ninguém vê chegar.
Os navegadores que escrevem ali sem perguntar
| Navegador | Salva em ~/Downloads sozinho? |
|---|---|
| Google Chrome | Sim, sem perguntar onde salvar |
| Microsoft Edge | Sim, sem perguntar onde salvar |
| Mozilla Firefox | Sim, sem perguntar onde salvar |
| Brave | Pede confirmação do download |
Os três primeiros exibem notificação de download — mas quem está olhando a tela quando quem navega é o agente?
O teste no Codex: o arquivo real do atacante
A Forever não construiu uma versão própria do ataque para o teste do Codex. Pegou o arquivo real do atacante — exatamente o AGENTS.md que estava na máquina do cliente — e o rodou como estava, dentro de uma máquina virtual isolada, para que nada escapasse.
O funcionamento é este. Você visita uma página controlada pelos pesquisadores. No momento em que você sai dela, um arquivo é baixado na sua pasta ~/Downloads. Você abre o Codex nessa pasta e pede qualquer coisa — qualquer tarefa serve. Antes de começar o que você pediu, o agente adiciona um servidor de "ferramentas de projeto" à própria configuração e instala um pacote do npm. Com o arquivo real do atacante, esse pacote é o malware.
O Codex executou o malware em mais de 90% das tentativas. No teste controlado, o payload era inofensivo (abria a calculadora), para medir a taxa sem causar dano real.
Dois detalhes que amplificam o problema:
Primeiro: o Codex só segue um AGENTS.md numa pasta em que confia — mas a pasta Downloads passa a se qualificar assim que o usuário já trabalhou ali. Não é preciso nada especial para ela deixar de ser "estranha".
Segundo, e pior: o arquivo de configuração que o agente altera (~/.codex/config.toml) vale para toda sessão do Codex naquela máquina. Ou seja, a alteração feita uma vez passa a carregar o servidor do atacante em qualquer pasta dali em diante — não apenas nos Downloads. O problema deixa de ser local.
O teste no Claude Code: o token vai embora
Para verificar se o problema era de um produto ou de uma categoria, os pesquisadores criaram o CLAUDE.md equivalente, usando o arquivo do atacante como inspiração. O objetivo: fazer o Claude Code escrever um ANTHROPIC_BASE_URL num arquivo de configuração do projeto, apontando o tráfego de API do agente para um servidor controlado pelos pesquisadores.
O que essa alteração entrega ao atacante é mais grave do que parece:
- Vaza o token de sessão do usuário — o que, por si só, já é tomada de conta.
- Permite que o servidor responda fingindo ser o próprio modelo, devolvendo comandos que o agente executa.
O número aqui é bem diferente do Codex. A escrita na configuração exigia aprovação humana, e o Claude frequentemente recusa uma alteração que parece errada. A moldura de "documento de engenharia interno" longo convenceu o usuário a aprovar em cerca de metade das vezes. E o encadeamento completo permitiu rodar código dentro da mesma sessão em cerca de um quinto dos testes.
Atenção ao que é fato e ao que é construção: o arquivo real encontrado em campo mirava o Codex. A variante para o Claude Code foi construída pelos pesquisadores, inspirada no original — não é um ataque que tenha sido observado acontecendo contra uma vítima.
Codex e Claude Code lado a lado
| Codex | Claude Code | |
|---|---|---|
| Arquivo de instruções | AGENTS.md | CLAUDE.md |
| O atacante altera | ~/.codex/config.toml | .claude/settings.json do projeto |
| Ganho principal | Execução de código (instalação de pacote) | Roubo do token de sessão |
| Alteração se propaga? | Sim, para toda sessão na máquina | Não, fica no projeto |
| Taxa de sucesso | Mais de 90% | ~50% na aprovação; ~20% com execução na mesma sessão |
| Origem do teste | Arquivo real de um ataque em campo | Construído pelos pesquisadores |
Os números vêm de testes controlados da própria Forever, não de ataques reais em campo. Eles medem a viabilidade da técnica, não a sua frequência.
Por que isso não tem correção
Esta é a parte desconfortável, e a Forever é explícita: "Não há nada aqui para a OpenAI ou para a Anthropic corrigirem."
Um agente que segue o AGENTS.md da própria pasta está fazendo exatamente o que foi construído para fazer. A comparação da empresa é precisa: é como um navegador que renderiza uma página de phishing — o navegador funcionou como projetado, e o ataque está na página. O problema não é o agente. O problema são as circunstâncias: uma pasta em que a web consegue escrever, tratada como se o usuário a tivesse preenchido.
Por isso o vetor continua aberto. Não vai sair um patch que resolva, e esperar por ele é a estratégia errada.
O padrão maior que a Forever aponta vale mais do que o caso específico: defesas construídas em torno de um humano quebram quando um agente toma o lugar do humano. Toda a cadeia de confiança que faz sentido para uma pessoa ("eu deixei esse arquivo aqui, então é seguro", "eu baixei isso, então eu sei o que é") não sobrevive quando quem lê e obedece é um programa que não distingue origem.
Os números que mostram que isso não é exótico
É tentador tratar o caso como exceção — um desenvolvedor descuidado, uma pasta incomum. A telemetria da própria Forever derruba essa leitura:
| O que foi medido | Resultado |
|---|---|
| Clientes que rodam agente de programação dentro da pasta Downloads | Cerca de metade |
| Sessões de agente que abrem um navegador real | Cerca de um quarto |
| Sessões do Claude Code iniciadas em ~/Downloads | Mais de 1.300 |
| Clientes que rodam agentes (Claude Code, Codex, Cursor CLI) de ~/Downloads | Centenas |
São exatamente as duas condições que o ataque precisa: o agente começa onde a web consegue escrever, e em muitos casos é o próprio agente que navega — então não tem ninguém olhando a tela quando o arquivo chega.
Como se proteger
Nunca inicie um agente de programação na pasta ~/Downloads. Este é o passo que resolve o caso, e vale para qualquer agente — Codex, Claude Code, Cursor, o que vier. Escolha uma pasta de projeto de verdade como diretório de trabalho. A pasta Downloads é a única em que a web escreve sozinha, então ela não é um lugar confiável para o agente começar.
Leia arquivos de instruções que você não escreveu. Um AGENTS.md ou CLAUDE.md perdido nos Downloads ou num repositório que você acabou de clonar é o ataque inteiro. São arquivos de texto: abra e leia antes de deixar qualquer agente perto deles. Se não faz sentido, apague.
Confira a configuração dos seus próprios agentes. Procure em ~/.codex/config.toml um bloco de servidor ou uma URL-base que você não adicionou; e num arquivo .claude/settings.json de projeto um ANTHROPIC_BASE_URL ou qualquer outro endpoint de API que você não definiu. Esses são os dois pontos exatos que o ataque altera.
Mantenha os prompts de aprovação e o sandbox ligados. E desconfie de qualquer instrução — vinda de arquivo, de página ou de outro agente — que peça para desligar essas proteções. A exigência de aprovação humana foi justamente o que reduziu a taxa de sucesso no Claude Code pela metade.
Se encontrar um arquivo plantado, presuma que o token vazou e troque-o. Token roubado não é um pedido isolado: é uma sessão viva. Trocar a senha não encerra a sessão que o atacante abriu — revogue os acessos ativos do serviço.
Teste código não confiável em ambiente isolado antes de rodar na máquina principal. É a mesma prática que os pesquisadores usaram para rodar o arquivo real do atacante com segurança.
Conclusão
Vale separar o que é fato do que é extrapolação, porque este é o tipo de história que costuma ser vendida maior do que é.
O fato: um AGENTS.md malicioso foi encontrado de verdade na pasta Downloads de um cliente real, tentando fazer o Codex instalar um pacote npm malicioso. O software de monitoramento da Forever barrou antes da execução. Os pesquisadores reproduziram a cadeia completa com o arquivo original do atacante — o Codex executou o malware em mais de 90% das tentativas — e construíram uma variante para o Claude Code que vaza o token de sessão, funcionando com menos frequência.
A extrapolação que precisa ser evitada: os números vêm de testes controlados, não de uma campanha em massa. E a variante do Claude Code foi construída, não observada. Não há, até agora, evidência de milhares de desenvolvedores comprometidos por essa via.
O que sobra, e é o que importa: o vetor não depende de uma falha que alguém possa corrigir. Um agente que obedece ao arquivo de instruções da própria pasta está fazendo o que foi projetado para fazer — e a pasta Downloads é a única em que a web escreve sozinha. Juntando as duas coisas, fica um caminho que existe hoje, em máquinas comuns, e que nenhum patch vai fechar.
A boa notícia é que a defesa também não depende de patch. Não abra o agente na pasta Downloads. Leia os arquivos de instrução que você não escreveu. Confira a configuração dos seus agentes de vez em quando. São três hábitos, e eles resolvem este caso inteiro — enquanto você espera, do outro lado, que a próxima geração dessas ferramentas aprenda a separar o que é instrução do usuário do que simplesmente apareceu numa pasta em que ela confia.
Perguntas frequentes
O que é um arquivo AGENTS.md?
É um arquivo de texto simples que os desenvolvedores colocam na pasta de um projeto para dar instruções ao agente de programação — quais ferramentas usar, como rodar os testes, quais convenções de código seguir. Não é um executável e não faz nada sozinho, mas foi feito para ser lido e obedecido pelo agente. O Claude Code usa o equivalente chamado CLAUDE.md.
Como o arquivo malicioso chega até a pasta Downloads?
Uma página web consegue salvar um arquivo na pasta Downloads sem clique e sem pedir permissão, escolhendo inclusive o nome e o conteúdo. A pasta Downloads é a única pasta local em que a web consegue escrever sozinha. Os pesquisadores publicaram uma página de demonstração que planta um arquivo AGENTS.md inofensivo ali, e o BleepingComputer verificou o funcionamento.
Preciso clicar em algo para ser atacado?
Não para o arquivo chegar até você: a página escreve o arquivo sozinha. Mas o ataque só se completa se você abrir um agente de programação tendo a pasta Downloads como diretório de trabalho. Sem esse segundo passo, o arquivo fica inerte, como qualquer download que você nunca abre.
Meu antivírus não pega isso?
Provavelmente não, e a razão é estrutural. O arquivo é texto puro, não contém código executável e não faz nada ao ser baixado. Ele só passa a ser perigoso quando um agente o interpreta como instrução. É a mesma lógica de uma página de phishing: o navegador está funcionando corretamente o tempo todo.
Existe algum patch ou atualização que resolva?
Não, e essa é a conclusão central da pesquisa. Nas palavras da própria Forever Security, não há nada para a OpenAI ou para a Anthropic corrigirem, porque um agente que segue o arquivo de instruções da própria pasta está fazendo exatamente o que foi construído para fazer. A defesa é de comportamento, não de software.
O teste foi feito com o Codex e o Claude Code. Outros agentes correm risco?
Sim. Os pesquisadores testaram os dois mais populares, mas afirmam que o problema é uma propriedade de como agentes funcionam, não um bug de um produto. Qualquer agente que carregue automaticamente arquivos de instrução do diretório de trabalho está sujeito à mesma lógica.
Qual foi a taxa de sucesso em cada agente?
Contra o Codex, com o arquivo real do atacante rodando em uma máquina virtual isolada, o malware foi executado em mais de 90% das tentativas. Contra o Claude Code, a escrita na configuração exigia aprovação humana e a moldura de documento de engenharia convenceu em cerca de metade das vezes; o encadeamento completo permitiu rodar código na mesma sessão em cerca de um quinto dos testes.
Se eu achar um AGENTS.md que não escrevi, o que faço?
Não deixe nenhum agente perto dele, leia o conteúdo e apague o arquivo. Se você já abriu um agente naquela pasta, verifique a configuração do agente em busca de servidores ou URLs que você não adicionou e trate o token de sessão como vazado, revogando os acessos ativos.
Isso vale para quem só usa o agente para tarefas simples?
Vale, e é até mais provável. O ataque não precisa de uma tarefa complexa: basta abrir o agente na pasta e pedir qualquer coisa. Justamente os usos casuais — abrir o agente nos Downloads para organizar arquivos ou mexer num documento recém-baixado — são os cenários de maior risco.
Fontes e leituras adicionais
- The Hacker News — Malicious File in Downloads Folder Tries to Trick AI Coding Agent Into Installing Malware — 26/10/2026
- BleepingComputer — AI coding agents hijacked using AGENTS.md file in Downloads folder — 27/10/2026
- Help Net Security — AI coding agents fall for malicious instructions planted in the Downloads folder — 26/10/2026
- Forever Security — Hijacking AI agents via the Downloads folder (“Markdown is the new executable”) — 2026
- Checkmarx — Malfex npm malware campaign: three payloads and an adversary that signs their work — 2026
- OpenAI — Codex (página oficial) — 2026
- Anthropic — Claude Code (página oficial) — 2026