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

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
| # | Nombre | Resumen práctico |
|---|---|---|
| LLM01 | Prompt Injection | Manipulación del modelo vía input adversarial. Incluye directa (DAN/Sydney) e indirect (Greshake). |
| LLM02 | Insecure Output Handling | El output del LLM ejecuta acciones sin sanitización (XSS, SSRF, RCE downstream). |
| LLM03 | Training Data Poisoning | El dataset de fine-tuning o pretraining se contamina con ejemplos adversariales. |
| LLM04 | Model Denial of Service | Recursos del modelo (contexto, tokens, compute) consumidos por requests adversariales. |
| LLM05 | Supply Chain Vulnerabilities | Modelos base, datasets o plugins comprometidos en el supply chain. |
| LLM06 | Sensitive Information Disclosure | El modelo filtra datos sensibles vía system prompt leak, training data leak, o context leak. |
| LLM07 | Insecure Plugin Design | Plugins / tools del LLM con validación de input insuficiente. |
| LLM08 | Excessive Agency | El LLM tiene permisos o capacidades operativas más allá de lo necesario. |
| LLM09 | Overreliance | El usuario o sistema downstream confía en outputs del LLM sin verificar. |
| LLM10 | Model Theft | El 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
- LLM01 directo: DAN: anatomía de un jailbreak por role-play
- LLM01 indirect + LLM06: De Sydney a Greshake: indirect prompt injection
- LLM02 + LLM06: Markdown exfil: la imagen que filtra tu contexto
- LLM01 vía optimización: GCG suffix: el jailbreak que solo necesita gradiente
- LLM07 + LLM08: lo cubrimos en el próximo post — confused deputy en ChatGPT plugins.
Referencias
- OWASP LLM Top 10 v1.0 (16 agosto 2023): https://owasp.org/www-project-top-10-for-large-language-model-applications/
- PDF v1.0: https://owasp.org/www-project-top-10-for-large-language-model-applications/assets/PDF/OWASP-Top-10-for-LLMs-2023-v05.pdf
- Steve Wilson, post de lanzamiento: https://www.linkedin.com/posts/wilsonsd_introducing-the-owasp-top-10-for-llm-applications-activity-7108452557009690624-GuGe
- Repositorio del proyecto: https://github.com/OWASP/www-project-top-10-for-large-language-model-applications


