LLM08
OWASP LLM Top 10 APLICACIÓN ASEGURAMIENTO

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