Por anos aprendemos a desconfiar de anexos.
Depois dos pacotes npm.
Mais tarde das imagens Docker.
Agora surgiu uma nova categoria de risco:
os repositórios que você abre com um agente de codificação.
Esta semana, pesquisadores da Wiz Research publicaram GhostApproval, uma vulnerabilidade que afeta vários dos agentes de codificação mais populares do mercado.
Entre eles:
-
Cursor
-
Amazon Q Developer
-
Google Antigravity
-
Windsurf
-
Augment
-
Claude Code (com uma avaliação diferente por parte da Anthropic)
O interessante não é apenas o bug.
É o que revela sobre a próxima geração de problemas de segurança para agentes.
O que aconteceu?
GhostApproval não explora uma vulnerabilidade do modelo.
Também não quebra o sandbox mediante injeção de prompt.
O ataque reutiliza uma técnica conhecida há décadas no Unix:
os links simbólicos (symlinks).
Um symlink parece um arquivo normal.
Mas na verdade aponta para outro arquivo completamente diferente.
Por exemplo:
project_settings.json
│
▼
~/.ssh/authorized_keys
O usuário acredita que o agente está modificando um arquivo do projeto.
Na verdade está escrevendo sobre um arquivo sensível do sistema.
Como funciona o ataque?
Imagine um repositório aparentemente legítimo.
Contém um arquivo chamado:
project_settings.json
Mas esse arquivo é realmente um symlink para:
~/.ssh/authorized_keys
O README diz algo completamente razoável:
“Execute a configuração do projeto.”
ou
“Peça ao seu agente que configure o workspace.”
O agente segue as instruções.
Encontra o arquivo.
Solicita aprovação.
Mas o diálogo mostra apenas:
Editar project_settings.json
Não mostra o destino real do symlink.
Quando o usuário aprova…
…o agente escreve sobre authorized_keys, permitindo que um atacante obtenha acesso persistente à máquina por meio de uma chave SSH.
O verdadeiro problema
O mais marcante do relatório da Wiz é que vários agentes detectavam internamente que o arquivo era um symlink.
Mas a interface apresentada ao usuário não mostrava essa informação.
Em outras palavras:
o agente sabia que estava escrevendo em um arquivo sensível…
…mas o desenvolvedor não.
Isso torna a aprovação humana em algo quase simbólico.
O usuário aceita uma operação sem realmente saber o que está autorizando.
Quais ferramentas foram afetadas?
Segundo a Wiz, a investigação abrangeu:
-
Amazon Q Developer
-
Cursor
-
Google Antigravity
-
Claude Code
-
Windsurf
-
Augment
A resposta de cada provedor foi diferente.
O que foi corrigido?
Cursor
Cursor classificou o problema como uma vulnerabilidade de alta severidade e publicou a correção na versão 3.0, atribuindo-lhe o identificador CVE-2026-50549.
Amazon Q Developer
AWS resolveu o problema no Language Server 1.69.0, registrado como CVE-2026-12958.
Na maioria dos casos, a atualização chega automaticamente ao reiniciar a IDE.
Google Antigravity
Google modificou a forma como apresenta e resolve os symlinks durante as operações de escrita.
Claude Code
Anthropicadotou uma postura diferente.
A empresa argumentou que o usuário já tinha confiado explicitamente no diretório e aprovado a operação, portanto o cenário ficava fora de seu modelo de ameaças.
No entanto, as versões atuais (2.1.173 ou posteriores) mostram o destino real do symlink durante a aprovação, reduzindo significativamente o risco.
O que isso significa para nós?
Mais do que um bug pontual, GhostApproval coloca em evidência uma mudança importante.
Os agentes de codificação já não apenas leem arquivos.
Também:
-
escrevem código,
-
modificam configurações,
-
executam comandos,
-
criam arquivos,
-
administram projetos completos.
Isso significa que erros clássicos do sistema operacional adquirem uma dimensão completamente nova quando um agente pode agir de forma autônoma.
Como se proteger
A boa notícia é que as recomendações são bem simples.
1. Atualize seu agente
Se utiliza:
-
Cursor
-
Amazon Q Developer
-
Google Antigravity
-
Claude Code
certifique-se de estar executando uma versão que inclua as correções correspondentes.
2. Não execute “setup” automaticamente em repositórios desconhecidos
Especialmente se você acabou de clonar um projeto da Internet.
Antes de pedir ao agente:
“Configure o projeto.”
vale a pena revisar quais arquivos ele contém.
3. Preste atenção às aprovações
Se o agente solicita modificar um arquivo aparentemente inócuo…
…pergunte-se se esse arquivo deveria realmente existir.
4. Utilize sandboxes quando possível
Executar agentes dentro de ambientes isolados reduz muito o impacto deste tipo de ataques.
5. Incorpore ferramentas de governança
Durante as últimas semanas vimos aparecer:
-
SkillSpector
-
CodeGate
-
MCP Gateways
Todos respondem à mesma necessidade:
controlar melhor o que nossos agentes podem fazer.
GhostApproval demonstra por que essa camada de segurança começa a ser indispensável.
O interessante não é GhostApproval
O interessante é que reutiliza um problema que existe há décadas.
Os symlinks não são novos.
O novo é que agora existe um agente disposto a seguir instruções automaticamente sobre eles.
Isso muda completamente o modelo de risco.
Por anos a pergunta era:
“Posso confiar neste repositório?”
Agora também temos que perguntar:
“Posso confiar no que meu agente vai fazer dentro deste repositório?”
São duas perguntas distintas.
E GhostApproval provavelmente é o primeiro grande lembrete de que a segurança dos agentes não depende apenas do modelo.
Depende do runtime.
Da interface.
E, acima de tudo, de como se desenha a relação entre o agente e a pessoa que finalmente aprova suas ações.
Recursos
Investigação da Wiz
https://www.wiz.io/blog/ghostapproval-ai-coding-agent-vulnerability
Mais informações
