Domínio permitido, destino errado

Rodrigo Jorge · Preparado em 9 de outubro de 2026, às 06:05 (horário de Brasília, UTC-3). Horário de publicação a confirmar.

O domínio de saída estava autorizado. Os arquivos chegaram à conta do atacante.

Em maio de 2026, a Anthropic descreveu uma divulgação de terceiros envolvendo o Cowork. Um arquivo malicioso no workspace montado pelo usuário continha instruções ocultas e uma API key controlada pelo atacante. Segundo o relato, o Claude seguiu essas instruções, leu outros arquivos do workspace e os enviou pela Files API da Anthropic usando aquela chave.

O proxy permitia acesso a api.anthropic.com, necessário ao produto. A chamada passou por um destino legítimo, mas carregou os arquivos para outra conta. A empresa relata que o sandbox respeitou seus limites, enquanto houve exfiltration de dados.

Essa descrição vem do fornecedor. Não temos aqui uma reprodução independente nem os detalhes completos da divulgação. Ainda assim, a rota relatada expõe uma pergunta que vale levar à arquitetura: o que, exatamente, concedemos quando liberamos uma API?

O endereço não identifica o destinatário

Uma allowlist de domínios limita destinos de rede. Ela não identifica, sozinha, a conta que receberá um upload nem decide quais dados podem sair.

No caso relatado, a API key fornecida pelo atacante mudou o destinatário sem mudar o domínio. A permissão de rede continuou válida; a finalidade da operação deixou de ser a esperada.

Como CISO, eu não encerraria a avaliação com “o agente está em um sandbox”. Pediria para ver uma chamada permitida usando uma credencial diferente e perguntaria onde essa troca é recusada. Se a resposta depender apenas de o modelo perceber a instrução maliciosa, ainda falta um controle verificável no caminho da ação.

A OWASP classifica como indirect prompt injection as instruções que chegam por conteúdo externo e alteram o comportamento do modelo. Um arquivo pode ser material de consulta e, ao mesmo tempo, tentar dar ordens. Nesta análise, a consequência relevante é a autoridade que o agente consegue exercer depois de lê-lo.

Uma decisão antes de habilitar uploads

Para um agente que precisa enviar arquivos, minha proposta é especificar a autorização com mais precisão: qual operação, com qual identidade, para qual conta e com quais dados.

Isso pode exigir que o código da integração selecione a credencial e valide o destino, sem aceitar uma API key encontrada no documento. Também pode exigir que o agente só tenha acesso aos arquivos necessários à tarefa. São decisões de implementação a testar, não controles comprovados por este relato.

Se o fluxo precisa apenas consultar informação, não há razão para conceder upload por conveniência. Se precisa publicar em contas diferentes, a mudança de conta deve fazer parte da autorização explícita do fluxo. Uma aprovação humana pode ser adequada para uma transferência excepcional; não substitui a validação da identidade e do destino.

Ver o diagrama: domínio, conta e dados são verificações diferentes. Diagrama conceitual do relato e da proposta de controle, sem métricas de desempenho.

Um teste útil para a equipe é colocar uma instrução hostil e uma credencial alternativa em um documento de teste, usar arquivos sintéticos e verificar se a integração recusa a transferência antes do envio. Registrar só a recusa verbal do modelo deixa sem resposta o que aconteceria se ele tentasse executar a chamada.

O resultado desse teste decide se aquele fluxo pode receber a permissão de upload. Nenhuma das verificações propostas, isoladamente, demonstra resistência a todas as formas de prompt injection.

Referências

Abrir este artigo na sua IAChatGPTClaudePerplexityCopilotGrok
Quer ver isso aplicado?

Os casos de sucesso mostram o que já roda. Os playbooks mostram o que você pode montar.