O que é prompt injection?

Em resumo

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.

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.

Termos relacionados

Todos os termos

Veja essas ideias na prática.

Baixe o AgentVera de graça, adicione a pasta de um projeto e rode Claude Code, Codex e outros agentes lado a lado.