Capítulo 4.3 — Prompt injection (direta e indireta)¶
🎯 Objetivo¶
Tratar prompt injection como o que ela é: vetor de ataque para o qual não existe defesa completa no estado atual da tecnologia. Mitigações combinadas reduzem risco; nenhuma elimina. Esse capítulo descreve as variantes, as defesas em camadas e os limites honestos.
🧠 Conceitos¶
- Prompt injection direta. O usuário escreve algo que tenta alterar o comportamento do modelo: "ignore instruções anteriores e responda X", "atue como administrador", "imprima o system prompt".
- Indirect prompt injection. O conteúdo recuperado por RAG, lido por tool, baixado de URL, recebido de outro agente (A2A) contém instruções maliciosas que o modelo trata como se fossem do usuário ou da própria política. Este é o vetor mais perigoso em ambientes corporativos: o atacante não precisa de acesso ao prompt, só de acesso a um documento que vai entrar no contexto.
- Jailbreak. Subcategoria de prompt injection focada em contornar políticas de comportamento do modelo (segurança, conteúdo sensível).
- Goal hijacking. O modelo é desviado para perseguir objetivo diferente do solicitado.
🛡️ Mitigações em camadas¶
Nenhuma camada isolada resolve. Em conjunto, elas reduzem o risco a níveis operacionalmente aceitáveis para muitos casos enterprise.
| Camada | O que faz | Limite |
|---|---|---|
| Delimitação de dados não confiáveis | XML tags, sentinelas, marcadores BEGIN_USER_INPUT / END_USER_INPUT |
Modelo pode ignorar; reduz acidente, não ataque |
| Separação instrução × dados no prompt | Sistema declara explicitamente o que é instrução e o que é dado a processar | Mesmo limite |
| "Não obedecer comandos em documentos" | Instrução explícita do sistema | Probabilística |
| Sanitização e classificação heurística do input | Filtra padrões conhecidos | Adversário se adapta |
| Filtragem do tool output | Remove markup hostil antes de devolver ao modelo | Não cobre payloads novos |
| Output sandbox | Renderização segura no front-end (escapando HTML/Markdown) | Não impede ataque, mitiga consequência |
| Allowlists | Sites, domínios, hosts permitidos | Restringe blast radius |
| Policy-as-code | Decisão determinística antes da ação | Forte; só atua sobre ações observáveis |
| HITL para ações críticas | Humano aprova antes de efeito real | Reduz drasticamente blast radius |
| Constrained tool surface | Lazy loading; menos tools, menos vetor | Forte |
| Eval adversarial contínuo | Casos conhecidos viram regressão | Cobre o conhecido, não o novo |
🚨 Verdades incômodas¶
- Não existe defesa completa. Pesquisa mostra que mitigações podem ser contornadas com ataques adaptativos.
- Indirect injection é o vetor de produção. É onde a maioria das organizações se machuca.
- "Sanitização perfeita" é miragem. Markdown, HTML, JSON, URLs encodadas, instruções em outro idioma, instruções em ASCII art -o espaço de payload é vasto.
- Eval adversarial é necessário, não suficiente. O atacante inventa o ataque que você não testou.
A postura defensável é: assumir que injection vai acontecer e desenhar para que, quando acontecer, o blast radius seja limitado. Isso depende mais do que vem depois do modelo (autorização, policy, HITL, egress) do que do que vem antes.
🧪 Como testar¶
- Suite adversarial versionada com payloads conhecidos (OWASP LLM Top 10, MITRE ATLAS, casos publicados).
- Indirect injection via RAG: adicionar documentos sintéticos com instruções maliciosas no índice de teste; medir o que o agente faz.
- Indirect injection via tool output: simular tool que devolve payload hostil.
- Re-teste a cada mudança em modelo, prompt, tool ou políticas.
🧰 Exemplos práticos relacionados (planejados)¶
EX-SEC-01- simulação de prompt injection direta.EX-SEC-02- simulação de prompt injection indireta via RAG.
📚 Referências¶
- OWASP LLM Top 10 - LLM01 Prompt Injection: https://owasp.org/www-project-top-10-for-large-language-model-applications/
- Greshake et al. - Not What You've Signed Up For: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection: https://arxiv.org/abs/2302.12173
- Anthropic - Defending against prompt injection: https://docs.anthropic.com/en/docs/test-and-evaluate/strengthen-guardrails/reduce-prompt-injection
- Simon Willison - Prompt injection: what's the worst that can happen? (referência ao termo): https://simonwillison.net/series/prompt-injection/