
GhostApproval: Seis assistentes de codificação com IA pediram permissão e indicaram o arquivo errado
- OrcaNOVOOrcaCyber: MiniMax M3.1 Flash Abliterated / Uncensored2026-10-29101 tok/s
- OrcaNOVOOrcaCyber: GLM 5.3 Flash Abliterated / Uncensored2026-10-27$0.80 / $1.60 por 1M de tokens · 103 tok/s
- OrcaNOVOOrcaCyber: Qwen3.8 Flash Next Abliterated / Uncensored2026-10-26$0.80 / $1.60 por 1M de tokens · 291 tok/s
- OrcaNOVOOrcaCyber: MiMo V2.6 Flash Abliterated / Uncensored2026-10-26$0.80 / $1.60 por 1M de tokens · 94 tok/s
- MoonshotNOVOMoonshotAI: Kimi K3.1 Pro2026-10-2446Inteligência
- OrcaNOVOOrcaCyber: DeepSeek V4.1 Flash Abliterated / Uncensored2026-10-23$0.80 / $1.60 por 1M de tokens · 107 tok/s
- minimaxNOVOMiniMax: M3.1 Flash2026-10-1929Inteligência
- OrcaNOVOOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 por 1M de tokens · 71 tok/s
- deepseekNOVODeepSeek: DeepSeek V4.1 Flash 10172026-10-1733Inteligência
- DeepSeekNOVODeepSeek: DeepSeek V4.1 Flash2026-10-1740Inteligência
- OrcaOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 por 1M de tokens · 96 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2955Inteligência
- anthropicAnthropic: Claude Sonnet 5.52026-09-2854Inteligência
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 por 1M de tokens · 170 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2228Inteligência
- OpenAIOpenAI: GPT-6 Sol2026-09-2248Inteligência
- AnthropicAnthropic: Claude Opus 5.52026-09-2258Inteligência
- xiaomiXiaomi: MiMo-V2.6-Flash2026-09-2127Inteligência
- xiaomiXiaomi: MiMo-V2.6-Pro2026-09-2130Inteligência
- xAIGrok 4.72026-09-2134Inteligência
Em 8 de julho de 2026, a empresa de segurança Wiz publicou o GhostApproval, um achado de pesquisa no qual um link simbólico plantado em um repositório fez seis assistentes de programação com IA escreverem fora do seu workspace — em ~/.ssh/authorized_keys, que concede acesso SSH persistente sem senha, ou em ~/.zshrc, que é executado na próxima inicialização do shell — enquanto a caixa de diálogo de confirmação nomeava apenas o arquivo inofensivo que o link fingia ser. A Wiz testou Amazon Q Developer, Claude Code da Anthropic, Augment, Cursor, Google Antigravity e Windsurf, e relatou o padrão em todos os seis. Não foi relatada nenhuma exploração em ambiente real: o trabalho é uma demonstração de prova de conceito, e a entrada do arquivo não registra nenhum dano real. Três fornecedores lançaram correções, dois reconheceram o relatório e depois pararam de responder, e um contestou que o comportamento fosse sequer uma vulnerabilidade. O Orca AI Incident Archive contém o registro completo deste achado, ao lado das outras entradas arquivadas sob sua tag de tipo SANDBOX.
A primitiva em si é coisa antiga. O seguimento de links simbólicos, catalogado como CWE-61, é uma primitiva de ataque há décadas — a Wiz lista usos anteriores em condições de corrida, gerenciadores de pacotes e escapes de contêiner — e cada um deles dependia de uma ferramenta gravar em um caminho controlado pelo usuário sem resolvê-lo primeiro. O que tornou esta descoberta digna de um nome é a segunda camada: em vários produtos, o próprio raciocínio do assistente identificou o destino perigoso, e o prompt mostrado ao humano o ocultava. A Wiz registra isso como CWE-451, representação enganosa de informações críticas na interface do usuário. A fronteira de segurança estava presente. A informação de que uma pessoa precisava para exercê-la não estava.
Como o truque funciona e no que ele vai dar
O repositório malicioso da Wiz é deliberadamente entediante. Ele contém um symlink chamado project_settings.json que aponta para o arquivo de chaves autorizadas SSH do desenvolvedor, além de um README que instrui o agente a atualizar essa "config" durante a configuração do workspace. Quando o desenvolvedor pede ao assistente para seguir o README, o agente segue o link e grava a chave pública do atacante. Se a máquina executa um serviço SSH que o atacante consiga alcançar, a partir de então isso é login sem senha. Uma segunda variante aponta o mesmo chamariz para ~/.zshrc, de modo que o payload é executado na próxima vez que um terminal for aberto e nenhum acesso SSH é necessário.
A descrição de Wiz sobre a falha técnica é curta: o sandbox, onde ele existe, não valida o caminho canônico, de modo que uma escrita destinada ao interior do projeto acaba onde quer que o link aponte. A prova de conceito da empresa reproduziu isso em "6 dos principais assistentes de codificação com IA", nas palavras dela, e publicou capturas de tela para cada um. A população afetada é qualquer pessoa que abra, em uma dessas ferramentas, um repositório que não seja de sua autoria — o que, no fluxo de trabalho normal de um desenvolvedor, inclui projetos derivados (forks), dependências de terceiros e qualquer revisão de código do branch de um colaborador externo.
A caixa de diálogo que indicou o arquivo errado
A evidência mais clara veio do Claude Code. No teste da Wiz, o raciocínio do agente afirmou, na citação da empresa: “Percebo que project_settings.json é, na verdade, um arquivo de configuração do zsh.” O pedido de permissão que o usuário viu perguntava: “Fazer esta edição em project_settings.json?” O agente sabia para onde ia a gravação; a pessoa que a autorizava, não. A Wiz chama o consentimento resultante de “substancialmente vazio” e a verificação humana no processo de “mera formalidade”.
Três produtos tornaram a lacuna pior do que um rótulo ruim. O Windsurf gravou o arquivo em disco antes de os botões Aceitar e Rejeitar aparecerem, então o diálogo era uma oferta de desfazer, e não uma barreira de autorização — quando o usuário conseguia recusar, segundo a Wiz, a chave já estava instalada. O Amazon Q Developer apresentou a mesma sequência, oferecendo apenas um botão Desfazer depois da gravação. O Augment não perguntou absolutamente nada: a Wiz demonstrou uma leitura por link simbólico que revelou, na transcrição do chat, um arquivo-isca de credenciais da AWS de fora do projeto, e uma gravação por link simbólico para ~/.ssh/authorized_keys sem nenhum diálogo de qualquer tipo. No outro extremo, o Cursor e o Google Antigravity exibiram o caminho não resolvido e pediram um clique que autorizava o caminho resolvido.
O primeiro teste da Wiz foi realizado em 10 de fevereiro de 2026, e os relatórios foram enviados entre 12 de fevereiro e 5 de março. Sua linha do tempo de divulgação registra as confirmações: Anthropic em 15 de fevereiro, Augment em 24 de fevereiro, Google em 26 de fevereiro, Cursor em 2 de março, AWS em 6 de março e Cognition, proprietária da Windsurf, em 23 de junho. A divulgação pública ocorreu cerca de cinco meses após o primeiro relatório.

Seis fornecedores, três respostas
Wiz classifica as descobertas segundo sua própria escala de gravidade, de Alta na AWS a Crítica na Augment, Cursor, Google Antigravity e Windsurf. Três fornecedores trataram o relatório como uma vulnerabilidade e lançaram uma correção. O arquivo atribui à entrada gravidade alta e nota A em confiança, e os avisos principais concordam com a Wiz quanto ao mecanismo.
• Amazon Web Services.De severidade alta, rastreado como CVE-2026-12958 e corrigido no Language Servers for AWS 1.69.0. O próprio boletim da AWS 2026-047-AWS, publicado em 23 de junho de 2026, confirma "um problema de ausência de validação de symlink" antes da versão 1.69.0 e lista as versões mínimas dos plug-ins que trazem a correção: Amazon Q Developer for Visual Studio Code 2.20, for JetBrains 4.3, for Eclipse 2.7.4, e AWS Toolkit with Amazon Q for Visual Studio 1.94.0.0. Ele afirma que não há soluções alternativas, que o servidor de linguagem é atualizado automaticamente, a menos que uma configuração de rede o impeça, e agradece à Wiz pela divulgação coordenada. O registro do CNA atribui ao problema a pontuação 8,5 no CVSS 4.0 e 7,8 no CVSS 3.1.
• Cursor.Crítico, rastreado como CVE-2026-50549 e corrigido no Cursor 3.0. O registro foi publicado pelo GitHub como CNA em 25 de junho de 2026 com pontuação 9,3 no CVSS 4.0. Sua descrição enquadra o atacante de forma ligeiramente diferente da narrativa do repositório da Wiz: um agente malicioso cria um symlink dentro do workspace e força a falha da canonicalização do caminho, seja porque o alvo não existe, seja porque a permissão de leitura foi removida do caminho, após o que a escrita recorre ao caminho original sem aprovação e pode sobrescrever o auxiliar do sandbox para execução sem sandbox.
• Google. A Wiz classifica o Antigravity como Critical e registra a correção como versão 1.19.6, implantada em 22 de maio de 2026. A coluna de gravidade indica "Pending" e, conforme o relato da Wiz, o Google estava avaliando se emitiria um CVE; nenhum identificador CVE para o Antigravity aparece no registro público.
• Augment. Classificada como Crítica pela avaliação da Wiz, testada na versão 0.754.3, reconhecida em 24 de fevereiro de 2026 e sem correção no momento da publicação. A nota de pesquisa da Cloud Security Alliance sobre a descoberta registra o contra-argumento da Augment de que um agente opera com as credenciais do próprio usuário.
• Windsurf.Crítica de acordo com a classificação da Wiz, testada na build V1.9566, reconhecida pela Cognition em 23 de junho de 2026 e não corrigida no momento da publicação.
• Anthropic. Contestado. Sem CVE, e a versão testada do Claude Code, 2.1.42, aparece na tabela da Wiz com o status "Rejeitado".

A rejeição da Anthropic, e a correção que antecede o relatório
A resposta da Anthropic à Wiz foi um “não” ponderado. “Isso está fora do nosso modelo de ameaça atual”, escreveu a empresa, segundo a citação da Wiz. “Quando o usuário inicia o Claude Code pela primeira vez em um diretório, ele precisa confirmar que confia no diretório antes de iniciar a sessão. O cenário que você descreve envolve um usuário confirmando explicitamente um prompt de permissão dentro de um diretório que contém um symlink malicioso, o que está fora do modelo de ameaça do Claude Code.” O ticket foi fechado como “Informativo”.
Esse raciocínio tem uma forma coerente: o usuário confiou no diretório e depois aprovou a operação, então ambos os momentos de consentimento foram respeitados. A refutação de Wiz é que o consentimento informado precisa de informações precisas — aprovar project_settings.json enquanto a gravação vai parar em ~/.ssh/authorized_keys é formalmente uma decisão e, substancialmente, uma decisão vazia. Wiz não afirma ter resolvido qual posição está correta, e este artigo também não. A observação prática é que AWS, Google e Cursor adotaram a outra visão e aplicaram patches.
A Wiz também relatou que o Claude Code havia mudado por trás da disputa: as versões atuais, escreveu a empresa, resolvem symlinks e avisam antes de gravar em arquivos sensíveis, e observou que a Anthropic se recusou a dizer se isso estava relacionado ao relatório. Em 7 de julho de 2026, a Anthropic forneceu uma correção, citada pela Wiz: "O aviso de symlink na caixa de diálogo de permissão Editar/Gravar foi lançado na v2.1.32 (5 de fevereiro de 2026), nove dias antes de este relatório ser enviado a nós. Ele foi adicionado como parte do fortalecimento proativo de segurança com base em uma revisão interna. A recusa em comentar foi uma resposta automática do nosso sistema de triagem."
A cronologia das versões confere; o registo público do que mudou, não. O Claude Code 2.1.32 foi publicado no registo npm em 5 de fevereiro de 2026 às 17:03 UTC, ou seja, nove dias antes do relatório de 14 de fevereiro, exatamente como a Anthropic afirma. Mas a entrada pública do changelog dessa versão lista doze alterações, incluindo equipas de agentes, registo de memória e várias correções de interface, e nenhuma delas menciona symlinks ou diálogos de permissão. As primeiras linhas do changelog que descrevem este comportamento específico são muito posteriores: a versão 2.1.280, publicada no npm em 22 de setembro de 2026, regista "Corrigidas as escritas através de um caminho com symlink que eram avaliadas pela sua grafia dentro da árvore: o pedido de confirmação indica onde a escrita é efetuada", e a 2.1.287, de 1 de outubro de 2026, regista que uma escrita por shell através de um symlink incluído no repositório sobre um ficheiro sensível passa agora a indicar onde é efetuada e a aguardar por uma pessoa. A própria observação da Wiz de que a 2.1.173 e posteriores resolvem symlinks também surge depois do relatório, uma vez que a 2.1.173 foi lançada em 11 de junho de 2026.
O que está estabelecido e o que não está
• Estabelecido. O mecanismo: um symlink de isca em um repositório, um agente que o segue, uma escrita que cai fora do workspace e uma superfície de confirmação que nomeia o caminho errado. A Wiz reproduziu isso nos seis produtos e publicou capturas de tela. Existem dois registros de CVE publicados por suas CNAs, e o boletim da AWS confirma de forma independente a falha na versão inferior a 1.69.0 e a correção. A Anthropic não contesta que o comportamento ocorreu; contesta que se trate de uma vulnerabilidade.
• De fonte única. As classificações de severidade para Augment, Windsurf e Google Antigravity são julgamentos da Wiz, não pontuações da CNA, porque nenhuma CVE foi publicada para nenhum dos três. A alegação de que Windsurf e Amazon Q escrevem antes de o diálogo aparecer baseia-se nas capturas de tela e na narração da Wiz; nenhum fornecedor confirmou publicamente essa ordem.
• Em disputa. Se uma ferramenta deve ao seu usuário proteção contra um workspace enganoso, ou se a confiança no diretório mais um clique resolve a questão. A Anthropic diz que a segunda opção; a Wiz diz que o prompt que mostrou tornou o clique sem sentido. O arquivo não sinaliza o registro como disputado: os fatos são acordados e apenas a interpretação é contestada.
• Não estabelecido.Se a Augment e a Windsurf corrigiram a falha desde a publicação. Toda a cobertura analisada para este artigo, incluindo a nota da Cloud Security Alliance de 15 de julho de 2026, ainda descreve ambas como não corrigidas; não foi encontrado nenhum aviso público de correção de nenhum dos fornecedores.
A própria data traz uma pequena complicação. A postagem da Wiz e sua linha do tempo de divulgação indicam ambas 8 de julho de 2026, a Infosecurity Magazine descreve a prova de conceito como publicada em 7 de julho e sua própria reportagem em 9 de julho, e a entrada do arquivo está datada de 9 de julho de 2026 com precisão de dia. A descoberta, a reportagem e o arquivo não discordam quanto à semana; discordam quanto ao dia em até dois dias.
O trabalho anterior sobre uma das seis merece crédito separado. Evan Schuman, da CSO Online, escrevendo em 9 de julho de 2026, observou que a Cato Networks havia relatado uma versão da falha restrita ao Cursor antes do estudo mais amplo da Wiz. O relato da SecurityWeek sobre essa pesquisa, publicado em 3 de julho de 2026, dá-lhe o nome de DuneSlide, atribui CVE-2026-50548 e CVE-2026-50549 ao par, pontua ambos em 9,8 e data de 2 de abril o lançamento do Cursor 3.0 que corrigiu ambos — números que não coincidem com a linha do tempo da Wiz, que situa a publicação da correção do Cursor em 5 de junho, nem com o registro da CNA publicado em 25 de junho com pontuação 9,3. O 9,8 e o 9,3 são duas pontuações para a mesma falha; as datas de abril e junho podem estar descrevendo um lançamento e um aviso de segurança, em vez de discordarem sobre quando a correção foi lançada.
O que mudou depois
Concretamente: os usuários do Amazon Q Developer foram migrados para o language server 1.69.0, automaticamente na maioria das configurações; os usuários do Google Antigravity, para a 1.19.6, a partir de 22 de maio de 2026; os usuários do Cursor, para a 3.0; e os usuários do Claude Code, para uma versão que resolve links, com outras alterações de fidelidade de prompt chegando na 2.1.280 e na 2.1.287 durante setembro e outubro de 2026. Os usuários do Augment e do Windsurf, com base nas evidências disponíveis na data de publicação, receberam apenas uma data para ficar de olho, e nada mais.
As próprias recomendações da Wiz eram estreitas e técnicas: resolver links simbólicos antes de exibir um prompt, alertar explicitamente quando o caminho resolvido ficar fora do workspace e nunca gravar em disco antes de autorização explícita, de modo que o diálogo seja uma barreira, e não um botão de desfazer. A nota da Cloud Security Alliance acrescenta um enquadramento de governança — tratar assistentes de codificação como software privilegiado com acesso ao sistema de arquivos, e não como plugins de editor, e perguntar diretamente aos fornecedores se os caminhos são resolvidos antes que uma confirmação apareça. Katie Norton, da IDC, citada pela CSO Online, situou o risco residual onde a cadeia de suprimentos já atua: colaboradores externos, repositórios forkados e dependências de terceiros, “e não em código de autoria interna”.
O que permanece em aberto é a questão de design, não o bug. Seis produtos construídos de forma independente convergiram para a mesma sequência — mostrar o caminho solicitado, confiar no clique — e a divergência posterior foi sobre responsabilidade, não sobre mecanismo. O registro no arquivo traz um sinalizador de marco, que é o julgamento do arquivo de que o registro descreve uma categoria em vez do erro de um único fornecedor, e é difícil discordar dessa leitura: a mesma prova de conceito curta funcionou seis vezes.

