Início/Blog/Prompt injection e autorização
Segurança de IA

Por que prompt injection é um problema de autorização

Prompt injection influencia o que um modelo quer fazer. O incidente acontece quando o sistema ao redor permite que esse modelo influenciado use a autoridade de outra pessoa para ler dados, chamar tools ou alterar estado.

A parte perigosa é a autoridade emprestada

O NIST define prompt injection como um ataque que explora a combinação de input não confiável com um prompt criado por uma parte de maior confiança. Seu trabalho sobre sequestro de agentes mostra a consequência operacional: instruções maliciosas dentro de dados podem fazer um agente executar ações indesejadas. Uma apresentação de segurança do NIST de 2026 vai além e descreve prompt injection indireta como geralmente ligada a um problema de confused deputy.

O deputy é o agente. Ele consegue ler a caixa de entrada do usuário, consultar dados internos, chamar uma tool MCP ou aprovar um workflow porque o sistema lhe entregou credenciais. O invasor não precisa dessas credenciais diretamente. Basta influenciar o deputy que já as possui.

Caminho de ataque versus caminho de least privilege
Autoridade ampla: confused deputy bem-sucedido
  1. Usuário pede ao agente que resuma um documento externo.
  2. Documento contém instruções ocultas para exportar segredos.
  3. Agente trata dados não confiáveis como novo comando.
  4. Tool aceita a credencial ampla do agente.
  5. Segredos saem do sistema sob uma identidade legítima.
Autoridade limitada: injeção contida
  1. Usuário concede capacidade read-only específica da tarefa.
  2. Documento ainda pode influenciar o modelo.
  3. Agente propõe exportação fora da intenção original.
  4. Política verifica escopo, recurso, destino e risco.
  5. Ação é negada ou exige aprovação explícita.

Defesas de prompt reduzem probabilidade; autorização limita impacto

Classificadores, prompts estruturados, sanitização de conteúdo, treinamento do modelo e red teaming são importantes. O Google descreve uma defesa em camadas que também inclui confirmação para operações arriscadas. A Anthropic alerta explicitamente que nenhum agente de navegador é imune a prompt injection. Isso significa que o design backend deve assumir que uma instrução maliciosa ocasionalmente alcançará o loop de planejamento.

Autorização é a fronteira determinística depois dessa falha probabilística. Cada ação proposta precisa ser verificada contra o principal original, tarefa atual, recursos permitidos, destino, classe de dados, nível de efeito colateral, orçamento e expiração. O modelo pode sugerir uma ação; ele não pode conceder permissão a si mesmo.

PrincipalAutoridade de quem está sendo usada, e a responsabilidade pode ser atribuída?
IntençãoEsta ação ainda corresponde à tarefa aprovada pelo usuário?
CapacidadeA tool, recurso, operação e destino exatos são permitidos?
RiscoA ação exige aprovação adicional, dry-run ou negação?

Autorize a ação, não a conversa

Um usuário aprovar “ajude com meu email” não significa aprovar toda ação futura que um email instruir o agente a executar. Autorização não pode ser inferida por proximidade conversacional. Ela precisa ser avaliada novamente na fronteira da ação, com credenciais limitadas àquela ação e curtas o bastante para expirar junto com a tarefa.

O design mais útil separa leitura de dados de execução de ações. Um componente de baixo privilégio inspeciona documentos não confiáveis. Um executor privilegiado recebe uma proposta estruturada e verifica política sem herdar as instruções do documento. Ações de alto risco exigem um canal independente de aprovação que mostre alvo, efeito colateral e dados liberados.

CamadaControleO que previne ou contém
Fronteira de inputClassificadores, sanitização, rótulos de proveniência e separação entre instrução e dado.Reduz a chance de conteúdo hostil influenciar o modelo.
Identidade do agenteIdentidade dedicada, principal responsável e credenciais curtas por tarefa.Evita ações anônimas ou permanentemente privilegiadas.
Tool gatewayAutorização por ação, validação de argumentos e allowlists de destinos.Bloqueia ações fora da intenção da tarefa mesmo após comprometimento do modelo.
Fronteira de dadosControles de acesso por linha, tenant, campo e finalidade.Limita o que um agente sequestrado consegue ler ou divulgar.
Fronteira de aprovaçãoConfirmação adicional para ações destrutivas, externas ou financeiras.Impede uso silencioso de privilégios e torna efeitos colaterais visíveis.
Fronteira de evidênciasRegistra principal, proveniência do input, decisão, tool call, resultado e política.Torna incidentes de confused deputy detectáveis e reconstruíveis.

O que eu construiria

Eu construiria um broker de autorização na frente de cada tool de agente. O broker trocaria a sessão ampla do usuário por um capability token estreito, ligado a uma tarefa, uma tool, recursos permitidos, destinos aprovados, classe máxima de efeito colateral e expiração curta. Cada tool call seria verificada de forma independente.

O produto visual de segurança mostraria dois traces para cada ação: o trace de influência, explicando qual input do usuário, documento recuperado, memória ou output de tool moldou a proposta; e o trace de autoridade, explicando qual identidade, escopo, política e aprovação permitiu ou negou a execução.

O princípio de design

Talvez não seja possível garantir que um agente nunca acredite em uma instrução hostil. É possível garantir que acreditar nela não seja suficiente para obter autoridade. Prompt injection se torna administrável quando influência do modelo e permissão backend são tratadas como sistemas separados.