O que é prompt injection?
Prompt injection é um ataque em que instruções escondidas em um texto que o modelo de linguagem lê o desviam da sua tarefa real. Em agentes de código, essas instruções podem vir de uma página web, uma issue, um documento ou a saída de uma ferramenta, e podem levar o agente a tomar ações que você nunca pediu.
Injeção direta e indireta
Para agentes de código, o risco real é o tipo indireto, porque os agentes leem conteúdo externo o tempo todo.
- Direta: o usuário manda o modelo ignorar suas regras.
- Indireta: a instrução está enterrada em um conteúdo que o modelo processa, como um README, um comentário no código, uma issue, uma página web ou a resposta de uma ferramenta MCP.
Por que é difícil de resolver
O modelo vê suas instruções e os dados que lê no mesmo fluxo de texto e nem sempre consegue distingui-los. Por isso não existe nenhum método conhecido que impeça totalmente a prompt injection. O Top 10 da OWASP para aplicações de modelos de linguagem de grande porte coloca a prompt injection em primeiro lugar.
O que pode dar errado com agentes
Quanto mais ferramentas e acessos um agente tem, maior o estrago que uma injeção bem-sucedida pode causar.
- Vazar segredos, como arquivos .env ou tokens.
- Instalar um pacote malicioso ou rodar um comando destrutivo.
- Infiltrar no código um backdoor difícil de perceber.
- Usar uma ferramenta MCP para agir em um serviço ao qual o agente tem acesso.
Defesas
Nenhuma medida isolada basta; o objetivo é limitar o estrago mesmo que um ataque passe.
- Menor privilégio: dê ao agente só as ferramentas e os acessos de que o trabalho precisa.
- Exija sempre aprovação para ações destrutivas e para tudo o que se comunica com o exterior.
- Trate repositórios e conteúdos não confiáveis em um ambiente isolado, como um contêiner ou uma VM.
- Instale servidores MCP só de fontes em que você confia.
- Revise as mudanças do agente antes do merge.
Proteções no AgentVera
No AgentVera, o acesso dos agentes aos seus servidores e bancos de dados vem desligado por padrão, e as ações arriscadas chegam até você.
- A aprovação automática só aprova pedidos seguros, como leituras e testes. Comandos com redirecionamentos (>), $() ou crases nunca são aprovados automaticamente, e comandos como git push e rm sempre perguntam a você (Pro e Team).
- O acesso de agentes via SSH vem desligado para todos os servidores por padrão. Quando ligado, os agentes nunca veem os dados de conexão nem a senha, e cada pedido passa pelas suas regras e é registrado (Pro e Team).
- O acesso ao banco de dados também vem desligado por padrão. Quando ligado, começa em modo somente leitura e cada consulta que um agente roda é registrada (Pro e Team).
- Os valores secretos dos servidores MCP ficam guardados no chaveiro do seu sistema operacional.
- Aprovação automáticaAprove os pedidos seguros do Claude Code sem perguntar; os arriscados continuam chegando até você.
- SSH e SFTPServidores salvos, um cofre SSH criptografado, port forwarding, transferência de arquivos em dois painéis e agentes no servidor.
- Gerenciador de banco de dadosTabelas, editor SQL, diagramas ER e acesso para agentes no PostgreSQL, MySQL e SQLite.
Perguntas frequentes
Dá para impedir totalmente a prompt injection?
Não com nenhum método conhecido hoje. Você reduz o risco limitando permissões, exigindo aprovação para ações críticas e isolando o agente.
Meu agente de código pode ser atacado ao ler uma página web?
Sim. Um texto escondido em uma página pode parecer uma instrução para o agente. Por isso, um agente que lê conteúdo da web não deveria conseguir rodar comandos destrutivos sem aprovação.
Servidores MCP são vulneráveis a prompt injection?
Sim, porque descrições e resultados das ferramentas vão para o contexto do modelo. Use servidores em que você confia e tenha cuidado com ferramentas que trazem conteúdo externo.
Qual a diferença entre prompt injection e jailbreak?
Um jailbreak é um usuário tentando contornar as regras de segurança do modelo. A prompt injection geralmente é um terceiro escondendo instruções em um conteúdo que o modelo processa para desviar a aplicação para os próprios fins.