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.
0Tentativas de injeção
0Bloqueadas
Dado exposto
confiável externo (não confiável) injeção / vazamento guard-rail agindo
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 inputTrate todo conteúdo externo como dado, nunca como instrução.
Least privilegeO agente só recebe as tools que a tarefa exige. Nada perigoso por padrão.
Aprovação humanaAção com efeito colateral (enviar, apagar, pagar) pede confirmação.
SandboxIsole 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 humana
if 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.