Deja de confiar en el agente: Vincula las aprobaciones a llamadas de herramientas exactas
La mayoría de los sistemas agénticos protegen acciones peligrosas, como la escritura de archivos o las transferencias de dinero, con una simple aprobación.
Por lo general, esta aprobación es un flag booleano en el estado del sistema.
Ejemplo: approved: true.
Esto es un error. Un booleano falla de tres maneras que los atacantes explotan:
- Flip: Un atacante cambia el estado de
falseatruemediante inyección de prompts o fallos en el código. - Replay: Usted aprueba un comando seguro como "read file". El sistema ve "true" y permite un segundo comando peligroso como "delete database".
- Argument Drift: Usted aprueba "send $10". Un atacante cambia el monto a $10,000 antes de la ejecución. El flag sigue diciendo "true".
El problema es que está modelando la aprobación como una propiedad de toda la sesión. Debe ser una evidencia para una llamada específica.
Cómo solucionarlo:
Cuando un humano aprueba una llamada, cree una etiqueta segura. Esta etiqueta debe bloquear estas cuatro cosas:
- El ID único de la llamada a la herramienta.
- Un hash de los argumentos exactos.
- La identidad del usuario.
- Un tiempo de expiración.
Verifique esta etiqueta en el momento exacto de la ejecución. Utilice una clave secreta que solo el sistema conozca.
Siga estas reglas para la implementación:
- Use Canonicalization (Canonicalización): Tanto el aprobador como el ejecutor deben generar el hash de los mismos bytes exactos. Utilice RFC 8785 para asegurar que los números y las claves coincidan.
- Fail Closed (Fallo cerrado): Si falta una etiqueta, ha expirado o es incorrecta, devuelva un error específico de "no aprobado". No lo trate como un resultado de herramienta estándar.
- Deny by Default (Denegación por defecto): Solo permita las herramientas que requieran aprobación explícita. Deniegue todo lo demás.
- Handle Replays (Gestión de réplicas): Si utiliza motores como Temporal, asegúrese de que su clave secreta sea determinista. Si la clave cambia tras un reinicio del sistema, todas las aprobaciones existentes fallarán.
La autorización no debe ser una pieza de estado flotante. Debe ser un sobre vinculado que demuestre: "Esta persona específica aprobó estos argumentos específicos para esta herramienta específica hasta este momento específico".
Deje de usar booleanos. No son una simplificación. Son un error.
Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi