Saltar al contenido
Volver al Blog

ai-security · 5 min de lectura

OWASP LLM Top 10 v1.0: lo que cierra y lo que deja abierto

OWASP publica el 16 de agosto la versión 1.0 de su Top 10 para aplicaciones LLM. Es el primer marco "de la industria" del campo. Funciona como vocabulario común; tiene huecos que conviene nombrar antes de adoptarlo como checklist.

· Manuel López Pérez · ai-security

OWASP publica el 16 de agosto la versión 1.0 de su Top 10 para aplicaciones LLM. Es el primer marco "de la industria" del campo. Funciona como vocabulario común; tiene huecos que conviene nombrar antes de adoptarlo como checklist.

El 16 de agosto, OWASP publica la versión 1.0 de su Top 10 for Large Language Model Applications. Lidera el proyecto Steve Wilson (Contrast Security). Detrás, una lista larga de contribuidores de proveedores, investigadores académicos y consultorías. La versión 0.5 había salido el 1 de agosto y recibido feedback abierto durante dos semanas. La 1.0 es el primer marco de industria que cubre AI security desde un ángulo aplicado, no académico.

Para el campo, es un avance: existe un vocabulario común, un orden de prioridades, una referencia que va a aparecer en RFPs y en compliance durante 2024+. Para quien va a usarlo, conviene mirarlo crítico antes de tratarlo como checklist.

Los 10 ítems

#NombreResumen práctico
LLM01Prompt InjectionManipulación del modelo vía input adversarial. Incluye directa (DAN/Sydney) e indirect (Greshake).
LLM02Insecure Output HandlingEl output del LLM ejecuta acciones sin sanitización (XSS, SSRF, RCE downstream).
LLM03Training Data PoisoningEl dataset de fine-tuning o pretraining se contamina con ejemplos adversariales.
LLM04Model Denial of ServiceRecursos del modelo (contexto, tokens, compute) consumidos por requests adversariales.
LLM05Supply Chain VulnerabilitiesModelos base, datasets o plugins comprometidos en el supply chain.
LLM06Sensitive Information DisclosureEl modelo filtra datos sensibles vía system prompt leak, training data leak, o context leak.
LLM07Insecure Plugin DesignPlugins / tools del LLM con validación de input insuficiente.
LLM08Excessive AgencyEl LLM tiene permisos o capacidades operativas más allá de lo necesario.
LLM09OverrelianceEl usuario o sistema downstream confía en outputs del LLM sin verificar.
LLM10Model TheftEl modelo se replica o roba vía API queries.

Lo que está bien

  • Vocabulario compartido. Antes de agosto, “prompt injection”, “context manipulation”, “model leak” y “tool abuse” se usaban con definiciones distintas según el autor. La estandarización en LLM01–LLM10 ayuda a hablar entre equipos.
  • El orden refleja la prioridad operativa de 2023. LLM01 (prompt injection) primero, LLM02 (output handling) segundo. Es coherente con dónde se ven los incidentes reales este año.
  • LLM07 + LLM08 cubren confused deputy explícitamente. Era la categoría que faltaba en el paper de Greshake. Que estén separadas — diseño del plugin vs autoridad concedida al LLM — es útil para análisis.
  • LLM09 nombra el riesgo del usuario. Pocas guías técnicas hablan del problema de trust calibration en el lado humano. OWASP lo hace, y eso facilita conversaciones con management.

Lo que cuestiono

LLM01 mete demasiadas cosas en un solo bucket

Prompt injection engloba en LLM01:

  • Direct injection estilo Sydney / DAN — el atacante escribe en el chat.
  • Indirect injection estilo Greshake — el atacante deja el payload en contenido que el LLM lee.
  • Persona / role-play attacks — el atacante construye un personaje que justifica el bypass.
  • Adversarial suffix attacks estilo GCG — el atacante optimiza tokens contra el clasificador.

Los cuatro vectores requieren defensas muy distintas. Mezclarlos en un solo ítem invita a respuestas tipo “tenemos clasificador anti-jailbreak” que cubren uno y dejan los otros tres abiertos. Recomendación operativa: en tu modelado de amenazas trata los cuatro como ítems independientes, aunque OWASP los agrupe.

LLM03 (Training Data Poisoning) es académico para 99 % de deployers

LLM03 aplica si tu organización entrena un modelo desde cero o hace fine-tuning sustantivo. Para quien consume un modelo comercial (la inmensa mayoría), la cadena de poisoning está bajo control del proveedor — la organización no tiene capacidad de inspección ni mitigación. Mencionarlo en una checklist puede dar impresión de cobertura sin que el deployer pueda hacer nada operativamente. Recomendación: mover a un anexo “Threats inheritable from your model provider” en próximas versiones.

LLM10 (Model Theft) está fuera del modelo de amenazas típico

Lo mismo que LLM03: relevante para el proveedor del modelo (OpenAI, Anthropic), no para el deployer. Una empresa que consume GPT-4 no necesita defenderse del robo del peso del modelo. Lo que sí necesita defenderse: del robo del system prompt (eso está en LLM06) y de la filtración de datos de RAG (eso está parcialmente en LLM06 y LLM02). Dejar LLM10 confunde el scope del documento.

Falta un ítem específico para evaluación / red-teaming

OWASP Top 10 web tiene como ítem A10 “Server-Side Request Forgery”. El AppSec maduro tiene WAFs, scanners, pruebas de penetración. El equivalente para LLM aplicaciones — ¿cómo evalúo mi modelo contra estos riesgos antes de producción? — no aparece como ítem. Hay menciones dispersas en mitigaciones, pero la categoría “evaluación adversarial” merecía su propio número. Es lo que la madurez del campo necesita más.

Faltan los agent-specific risks

LLM07 y LLM08 cubren parte. Pero los riesgos específicos de un agent loop — el modelo decide qué tool invocar a cada paso, en función del output anterior — son específicos:

  • Goal hijacking vía indirect injection en el output de una tool.
  • Loops infinitos activables por adversario.
  • Exfiltración a través de la cadena de tools (si tool A puede leer secret y tool B puede mandar email, la combinación es exfiltración).

Para 2024, con agents en producción siendo el formato dominante, estos riesgos merecen primera fila. Probablemente OWASP los meterá en v1.1 / v2.0.

Cómo usarlo en la práctica

  • Como vocabulario: usa los IDs LLM01–LLM10 en tus security reviews. Estandariza terminología.
  • Como checklist mínima: si tu producto tiene LLM en producción, verifica que has mirado LLM01, LLM02, LLM06, LLM07, LLM08 explícitamente. Los otros cinco están más fuera de tu control.
  • No como checklist completa: añade indirect prompt injection (separada de LLM01), confused deputy en agent loops, y evaluación adversarial (no cubiertas como ítems propios) a tu modelo de amenazas.
  • Para conversación con vendor: si tu proveedor de plataforma LLM no puede contestar concretamente qué hace contra LLM01, LLM02, LLM06, LLM07, LLM08, hay un problema independiente del Top 10.

Posts hermanos donde profundizamos cada vector

Referencias

Volver al Blog

Posts Relacionados

Ver Todos los Posts »
Retrospectiva AI security 2024: cinco patrones que se quedan

ai-security · 11 min

Retrospectiva AI security 2024: cinco patrones que se quedan

No es ranking ni listicle. Cinco patrones del año con análisis y cross-links a los técnicos del año: long context as attack surface, agentes en producción, jailbreaks por optimización, launches sin amenaza modeling, reasoning models como nueva superficie.

· Manuel López Pérez

Confused deputy revisitado: Model Context Protocol y la versión protocolo del bug

ai-security · 14 min

Confused deputy revisitado: Model Context Protocol y la versión protocolo del bug

Anthropic publica MCP el 25 de noviembre. La conexión modelo ↔ herramientas externas pasa a ser un spec abierto con tres primitivas: tools, resources, prompts. El spec dice que el host SHOULD pedir consentimiento; reconoce que el protocolo no lo puede forzar. El patrón confused deputy que documentamos en septiembre 2023 vuelve, ahora como integración estándar.

· Manuel López Pérez

Claude Computer Use: el agente que mueve el ratón y la página que le dice qué clicar

ai-security · 10 min

Claude Computer Use: el agente que mueve el ratón y la página que le dice qué clicar

Anthropic lanza el 22 de octubre Claude 3.5 Sonnet (new) con capability de control del SO vía screenshots. Dos días después Johann Rehberger publica el primer PoC público: una página web indirect-injecta al agente para descargar y ejecutar un implante Sliver. Confused deputy a nivel sistema operativo.

· Manuel López Pérez