Pare de confiar no agente: vincule aprovações a chamadas de ferramentas exatas
A maioria dos sistemas agênticos protege ações perigosas, como escrita de arquivos ou transferências de dinheiro, com uma simples aprovação.
Geralmente, essa aprovação é uma flag booleana no estado do sistema.
Exemplo: approved: true.
Isso é um erro. Um booleano falha de três maneiras que os atacantes exploram:
- Flip (Inversão): Um atacante altera o estado de
falseparatruevia prompt injection ou falhas de código. - Replay (Repetição): Você aprova um comando seguro como "read file". O sistema vê "true" e permite um segundo comando perigoso como "delete database".
- Argument Drift (Desvio de Argumentos): Você aprova "send $10". Um atacante altera o valor para $10.000 antes da execução. A flag ainda diz "true".
O problema é que você está modelando a aprovação como uma propriedade de toda a sessão. Ela deve ser uma evidência para uma chamada específica.
Como corrigir:
Quando um humano aprova uma chamada, crie uma tag segura. Esta tag deve travar estas quatro coisas:
- O ID único da chamada da ferramenta.
- Um hash dos argumentos exatos.
- A identidade do usuário.
- Um tempo de expiração.
Verifique esta tag no exato momento da execução. Use uma chave secreta que apenas o sistema conheça.
Siga estas regras para a implementação:
- Use Canonicalização: Tanto o aprovador quanto o executor devem gerar o hash dos mesmos bytes exatos. Use o RFC 8785 para garantir que números e chaves coincidam.
- Fail Closed (Falha Fechada): Se uma tag estiver faltando, expirada ou incorreta, retorne um erro específico de "não aprovado". Não o trate como um resultado de ferramenta padrão.
- Deny by Default (Negar por Padrão): Permita apenas ferramentas que exijam aprovação explícita. Negue todo o resto.
- Trate Replays: Se você usar engines como o Temporal, certifique-se de que sua chave secreta seja determinística. Se a chave mudar após o reinício do sistema, todas as aprovações existentes falharão.
A autorização não deve ser um pedaço flutuante de estado. Ela deve ser um envelope vinculado que prove: "Esta pessoa específica aprovou estes argumentos específicos para esta ferramenta específica até este momento específico."
Pare de usar booleanos. Eles não são uma simplificação. Eles são um bug.
Comunidade de aprendizado opcional: https://t.me/GyaanSetuAi