Agencia excesiva
Descripción
Los sistemas basados en LLM a los que se les otorgan permisos o autonomía excesivos realizan acciones no deseadas de alto impacto. La falta de supervisión permite que se produzcan daños por errores o manipulación.
Riesgo
Cuando los LLM controlan funciones críticas sin suficientes guardrails, los errores de comprensión o la inyección maliciosa de prompts pueden desencadenar acciones no autorizadas con un impacto significativo. La agencia excesiva incluye permisos demasiado amplios, falta de aprobación humana para operaciones sensibles o validación insuficiente de las decisiones del LLM antes de su ejecución. Esto puede provocar pérdidas financieras, destrucción de datos o incidentes de seguridad.
Escenarios de ataque
Un agente autónomo basado en LLM con acceso de administrador a la base de datos malinterpreta una solicitud del usuario y elimina tablas de producción, provocando pérdida de datos e interrupción del servicio.
Un atacante utiliza inyección de prompts en un bot de trading basado en LLM para ejecutar transacciones no autorizadas de alto valor, lo que resulta en pérdidas financieras antes de que la supervisión humana pueda intervenir.
Mitigaciones
Mínimo privilegio
Otorgar a los sistemas de LLM solo los permisos mínimos requeridos. Utilizar acceso de solo lectura cuando sea posible y exigir escalamiento para las operaciones de escritura.
Intervención humana en el proceso (human-in-the-loop)
Exigir la aprobación humana para las acciones de alto impacto. Implementar flujos de confirmación para operaciones sensibles como transacciones financieras o eliminación de datos.
Restricciones de acciones
Definir límites explícitos para el comportamiento autónomo. Establecer límites en los valores de las transacciones, la frecuencia de las acciones y el alcance de los cambios.
Auditoría y monitoreo
Registrar todas las acciones iniciadas por el LLM con el contexto completo. Implementar monitoreo y alertas en tiempo real para detectar comportamientos anómalos.
Ejemplos de código
# Correcto: agente LLM restringido con flujo de aprobación
from enum import Enum
from typing import Optional
class RiesgoAccion(Enum):
BAJO = 1
MEDIO = 2
ALTO = 3
class AgenteLLMRestringido:
def __init__(self, valor_maximo_transaccion=1000):
self.valor_maximo_transaccion = valor_maximo_transaccion
self.aprobaciones_pendientes = {}
def ejecutar_accion(self, accion: str, parametros: dict,
id_usuario: str) -> str:
riesgo = self._evaluar_riesgo(accion, parametros)
if riesgo == RiesgoAccion.ALTO:
# Exigir aprobación humana
id_aprobacion = self._solicitar_aprobacion(accion, parametros, id_usuario)
return f"La acción de alto riesgo requiere aprobación: {id_aprobacion}"
if riesgo == RiesgoAccion.MEDIO:
# Aplicar restricciones
parametros = self._aplicar_restricciones(parametros)
# Ejecutar en modo de solo lectura por defecto
return self._ejecutar_seguro(accion, parametros)
def _evaluar_riesgo(self, accion: str, parametros: dict) -> RiesgoAccion:
if 'delete' in accion.lower() or 'drop' in accion.lower():
return RiesgoAccion.ALTO
if parametros.get('monto', 0) > self.valor_maximo_transaccion:
return RiesgoAccion.ALTO
return RiesgoAccion.BAJO
Requisitos de evidencia
- Modelos de permisos que muestran configuraciones de mínimo privilegio
- Documentación y registros de flujos de aprobación humana
- Políticas de restricción de acciones y registros de aplicación
- Registros de auditoría de todas las acciones iniciadas por el LLM
- Informes de incidentes y procedimientos de respuesta