Camada Zero · 42 · Segurança de Agentes & Prompt Injection
O agente lê conteúdo externo (um doc, uma página, um tool result) e não distingue de forma confiável dado de instrução. Quem escreve no que ele lê pode mandar nele. Liga o payload e a defesa aqui embaixo e veja a chave vazar ou ser bloqueada.
O modelo recebe tudo como um fluxo único de tokens (aula 37): seu system prompt, a tarefa e o conteúdo recuperado moram no mesmo lugar. Não existe uma fronteira dura entre "minhas instruções" e "texto que veio de fora". Por isso uma frase plantada num doc pode virar comando. Num chatbot o estrago é texto ruim; num agente com tools (aula 40) é dado vazado ou ação executada.
Defesa em profundidade
Untrusted input
Trate todo conteúdo externo como dado, nunca como instrução.
Least privilege
O agente só recebe as tools que a tarefa exige. Nada perigoso por padrão.
Aprovação humana
Ação com efeito colateral (enviar, apagar, pagar) pede confirmação.
Sandbox
Isole a execução (aula 15). Sem rede e sem segredos ao alcance.
Mitigação (conceitual, em Go)
// Conteúdo externo entra marcado como dado, não instrução
out := agent.Run(ctx, Prompt{
System: trustedSystemPrompt,
Task: userTask,
Sources: []Source{{Content: doc, Trust: Untrusted}},
})
// Tools de menor privilégio: nada perigoso por padrão
tools := []Tool{readDoc} // sem httpGet, sem acesso a segredo// Ação com efeito colateral exige aprovação humanaif action.SideEffect && !human.Approve(action) {
return ErrBlocked
}
🧠 Desafio — Segurança de Agentes
Roda o agente com e sem guard-rails antes de responder. As duas últimas são de reflexão: escreve a sua e só então revela o modelo.
🔧 Prática — ache o bug
Esse agente pode ser sequestrado por um documento malicioso. Clica na linha da vulnerabilidade.