OWASP y el Top 10
Qué es OWASP y qué dicen las diez categorías del Top 10 de 2021, sobre la arquitectura de Citas y sin tratarlo como un checklist.
Si solo vas a aprender una lista de seguridad de aplicaciones, que sea esta. El OWASPOWASPFundación sin ánimo de lucro que publica recursos abiertos de seguridad de aplicaciones, como el Top 10 web y el Top 10 de APIs. Top 10 es el punto de partida de facto para hablar de riesgos web: lo citan auditorías, pliegos, escáneres y entrevistas. No es un estándar de cumplimiento ni una garantía —repasarlo entero no hace “segura” a una aplicación—, pero sí es el vocabulario común para ordenar por dónde suele romperse el software y dónde mirar primero.
Qué es OWASP#
OWASP (Open Worldwide Application Security Project) es una fundación sin ánimo de lucro que publica recursos abiertos de seguridad de aplicaciones: estándares como el ASVS, las Cheat Sheets de remediación, herramientas como ZAP y, el más conocido, el Top 10. Es un documento de concienciación basado en datos agregados de la industria —cientos de miles de aplicaciones— que se revisa cada pocos años. La edición vigente es la de 2021; cada categoría tiene un identificador estable (A01:2021 … A10:2021) que verás en informes y en reglas de WAF.
La clave para usarlo bien: el Top 10 agrupa categorías de riesgo, no vulnerabilidades concretas. “Injection” no es un bug, es una familia entera. Y cada categoría no vive en el aire: cae sobre una parte concreta de tu arquitectura.
Paso 1 de 6El mapa
El Top 10 no es una lista suelta: cada categoría cae sobre una parte de tu sistema. Sobre la arquitectura de Citas, cada capa tiene sus riesgos típicos.
Las diez categorías de 2021#
Un recorrido con una frase y un ejemplo en la app de referencia, Citas (un SaaS de reservas para clínicas que maneja PII de pacientes):
| # | Categoría | En una frase | Ejemplo en Citas |
|---|---|---|---|
| A01 | Broken Access Control | Alguien hace o ve algo fuera de sus permisos. | Un paciente lee la cita de otro cambiando el id de la URL (IDOR / BOLA). |
| A02 | Cryptographic Failures | Datos sensibles sin cifrar o con criptografía débil, en tránsito o en reposo. | El bucket citas-adjuntos sin cifrado KMS, o un endpoint interno que acepta HTTP plano. |
| A03 | Injection | Entrada no confiable que se interpreta como código o consulta. | Inyección SQL en el buscador de pacientes al concatenar el input en la query. |
| A04 | Insecure Design | Falta un control desde el diseño: no es un bug, es una ausencia. | Permitir reservar citas sin límite por usuario, sin haber modelado el abuso. |
| A05 | Security Misconfiguration | Configuración por defecto, permisiva o a medio hacer. | Un security group con 0.0.0.0/0, cabeceras de seguridad ausentes, un panel de debug en producción. |
| A06 | Vulnerable and Outdated Components | Dependencias con vulnerabilidades conocidas. | Una librería npm desactualizada o una imagen base de contenedor con CVEs sin parchear. |
| A07 | Identification and Authentication Failures | Autenticación, sesiones o recuperación de cuenta débiles. | Cognito sin MFA para los administradores de clínica, o tokens JWT que no expiran. |
| A08 | Software and Data Integrity Failures | Confiar en código o datos sin verificar su integridad. | Un pipeline que despliega sin verificar firmas; la llave legacy ci-deploy-legacy que nadie retiró. |
| A09 | Security Logging and Monitoring Failures | No registrar ni alertar: los ataques pasan desapercibidos. | Sin CloudTrail ni GuardDuty activos, un robo de credenciales no deja rastro visible. |
| A10 | Server-Side Request Forgery (SSRF) | El servidor pide una URL que controla el atacante. | La función de previsualizar adjuntos alcanza 169.254.169.254 y filtra credenciales. |
Cómo se relaciona con Citas#
El valor del Top 10 no es memorizarlo, sino proyectarlo sobre tu sistema. Mira el explainer de arriba: no todas las categorías pesan igual en cada capa.
- En el borde (CloudFront + WAF) mandan la mala configuración (A05) y los componentes vulnerables del frontend (A06).
- En la API se concentra lo más grave: control de acceso (A01), inyección (A03) y autenticación (A07). Es donde se decide quién puede hacer qué.
- En la capa de datos importan el cifrado (A02) y la integridad del software y los datos (A08).
- En la salida hacia la nube aparece el SSRF (A10), el riesgo que mejor conecta la seguridad web con la cloud: un SSRF en Citas puede alcanzar el servicio de metadatos de EC2.
- Y dos categorías son transversales: el diseño inseguro (A04) y los fallos de registro y monitorización (A09) no están en un sitio, están en todos.
Esta proyección es, en el fondo, modelado de amenazas ligero: para cada punto de tu arquitectura, ¿cuáles de estos diez riesgos aplican y qué control los cubre?
Cómo usarlo (y cómo no)#
Úsalo como lo que es:
-
Como lenguaje común. Cuando un informe diga “A01”, todos entienden lo mismo. Clasifica tus propios hallazgos con sus IDs.
-
Como lista de arranque para el modelado de amenazas. Recorre tu arquitectura capa por capa (como el explainer) y pregunta qué categorías aplican en cada punto.
-
Como índice hacia la remediación. Cada categoría enlaza a Cheat Sheets con defensas concretas. El Top 10 te dice qué mirar; las Cheat Sheets, cómo arreglarlo.
-
Sin olvidar lo que no está. Solo son diez familias y están sesgadas a lo que se mide. Hay APIs, lógica de negocio y nube que necesitan su propia lista: para APIs existe el OWASP API Security Top 10.
Tu turno
Proyecta el Top 10 sobre un sistema tuyo
Elige un sistema de tu trabajo o de tu laboratorio y recórrelo con las diez categorías de 2021. Para cada una, responde en una línea: ¿aplica aquí?, ¿qué control lo cubre hoy?, ¿lo has comprobado o lo das por hecho?
Sistema: ...
| ID | Categoría | ¿Aplica? | Control actual | ¿Verificado? || --- | ---------------------- | -------- | -------------- | ------------ || A01 | Broken Access Control | | | || A02 | Cryptographic Failures | | | || ... | | | | |Marca en rojo las filas sin control claro: ese es tu backlog de seguridad, priorizado por un marco reconocido.
Reto
¿Por qué Broken Access Control es el número 1 y no la inyección, que suena más peligrosa?
▸Mostrar solución
Porque es lo que más aparece en los datos y lo más difícil de evitar de forma sistemática. La inyección tiene una defensa mecánica y universal (consultas parametrizadas); el control de acceso hay que comprobarlo a mano en cada acción y cada objeto, y basta un endpoint olvidado para romperlo. BOLA e IDOR —el mismo fallo en APIs— son su forma más común.
Reto
Tu escáner DAST no reporta ningún hallazgo del Top 10. ¿Está tu app segura?
▸Mostrar solución
No lo sabes. Los escáneres automáticos detectan bien A03, A05 o A06, pero son casi ciegos ante A01 y A04: el control de acceso roto y el diseño inseguro dependen de la lógica de negocio, que una herramienta no conoce. Un escáner limpio es necesario, no suficiente; hace falta revisión manual y modelado de amenazas.
En resumen#
- OWASP es una comunidad abierta de AppSec; su Top 10 es la lista de referencia de riesgos web, edición 2021, con IDs estables
A01–A10. - Son categorías de riesgo, no bugs concretos, y cada una cae sobre una capa de tu arquitectura.
- A01 Broken Access Control es el número 1; A10 SSRF es el puente hacia la nube.
- No es un checklist: úsalo como lenguaje común y como punto de partida del modelado de amenazas; para verificar, usa el ASVS.
- Proyéctalo sobre tus sistemas reales y conviértelo en un backlog priorizado.