El OWASP Top 10

El Open Web Application Security Project (OWASP) publica el Top 10 — una lista actualizada de los riesgos de seguridad más críticos. La edición 2021 es el estándar actual referenciado por regulaciones de seguridad mundialmente.

Como ingeniero QA, conocer el OWASP Top 10 te permite probar sistemáticamente las vulnerabilidades más comunes y peligrosas.

A01:2021 — Broken Access Control

Qué es: Los usuarios pueden actuar fuera de sus permisos — ver datos de otros, modificar registros, escalar a admin.

Cómo probar: Cambiar IDs de usuario en URLs, acceder a endpoints admin como usuario regular, probar acceso horizontal (¿puede User A ver pedidos de User B?).

A02:2021 — Cryptographic Failures

Qué es: Datos sensibles no protegidos — transmitidos en texto plano, almacenados sin cifrar, algoritmos débiles.

Cómo probar: Verificar HTTPS en todas partes, buscar datos sensibles en URLs, verificar hashing fuerte de contraseñas, comprobar flags de cookies (Secure, HttpOnly).

A03:2021 — Injection

Qué es: Datos no confiables enviados a un intérprete. SQL injection, XSS, command injection.

Cómo probar: Ingresar ' OR 1=1 -- en campos de login, <script>alert('XSS')</script> en inputs de texto, caracteres especiales en todo parámetro.

A04:2021 — Insecure Design

Qué es: Fallos en el diseño, no bugs de implementación. Falta de modelado de amenazas, lógica de negocio insegura.

Cómo probar: ¿Se puede usar un cupón múltiples veces? ¿Hay rate limit en reseteo de contraseña? ¿Pueden bots automatizar el registro?

A05:2021 — Security Misconfiguration

Qué es: Falta de hardening, features innecesarios habilitados, cuentas por defecto, errores demasiado informativos.

Cómo probar: Credenciales por defecto, métodos HTTP innecesarios, directory listing, interfaces de administración expuestas, headers revelando versiones.

A06:2021 — Vulnerable and Outdated Components

Qué es: Uso de librerías o frameworks con vulnerabilidades conocidas.

Cómo probar: Ejecutar npm audit, usar Snyk o Dependabot, verificar versiones de librerías CDN.

A07:2021 — Identification and Authentication Failures

Qué es: Debilidades en autenticación — contraseñas débiles permitidas, sin protección contra fuerza bruta.

Cómo probar: Probar contraseñas triviales, intentar 50+ logins fallidos, verificar cambio de ID de sesión tras login.

A08:2021 — Software and Data Integrity Failures

Qué es: Código e infraestructura sin protección de integridad — pipelines CI/CD inseguros, deserialización insegura.

A09:2021 — Security Logging and Monitoring Failures

Qué es: Logging insuficiente de eventos de seguridad impide detectar ataques.

Cómo probar: Provocar login fallido — ¿se registra? Intento de acceso no autorizado — ¿se registra con detalles?

A10:2021 — Server-Side Request Forgery (SSRF)

Qué es: El atacante engaña al servidor para hacer solicitudes a recursos internos o externos.

Cómo probar: En campos de URL, probar direcciones internas (http://localhost, http://169.254.169.254).

Ejercicio: Probar 5 Vulnerabilidades OWASP

Usando una aplicación deliberadamente vulnerable (OWASP Juice Shop), prueba 5 riesgos diferentes del OWASP Top 10.

Setup

docker run --rm -p 3000:3000 bkimminich/juice-shop

Tarea

Encuentra y documenta al menos una vulnerabilidad para: A01 (Broken Access Control), A03 (Injection), A05 (Security Misconfiguration), A07 (Authentication Failures), y otro riesgo adicional.

Pista: Dónde Buscar en Juice Shop
  • A01: Intenta acceder a la sección admin, mira reseñas de otros usuarios
  • A03: La barra de búsqueda es buen objetivo para injection
  • A05: Revisa headers de respuesta y mensajes de error
  • A07: Crea cuenta con contraseña muy débil
  • Mira las llamadas API: Abre DevTools Network y observa las solicitudes
Solución: 5 Vulnerabilidades Encontradas

1. A01: Acceso a Cestas de Otros Usuarios

  • Pasos: Login como cualquier usuario. Cambiar basket ID en /api/BasketItems.
  • Impacto: Cualquier usuario puede ver y modificar cestas ajenas.
  • Fix: El servidor debe verificar que la cesta pertenece al usuario autenticado.

2. A03: SQL Injection en Búsqueda

  • Pasos: Ingresar ' OR 1=1-- en la barra de búsqueda.
  • Impacto: Retorna todos los productos incluyendo ocultos.
  • Fix: Usar consultas parametrizadas.

3. A05: Mensajes de Error Verbosos

  • Pasos: Enviar JSON malformado a /api/Users.
  • Impacto: La respuesta incluye stack traces y detalles del framework.
  • Fix: Retornar mensajes genéricos al usuario.

4. A07: Sin Requisitos de Complejidad de Contraseña

  • Pasos: Registrarse con contraseña “1”. La aplicación lo acepta.
  • Fix: Requisitos mínimos (8+ caracteres, mayúsculas, números).

5. A02: Datos Sensibles en API de Feedback

  • Pasos: Ver /api/Feedbacks. Emails de usuarios incluidos en la respuesta.
  • Fix: Remover emails de la respuesta pública de API.

Tips Profesionales

  • Usa OWASP Juice Shop: Aplicación deliberadamente vulnerable con 100+ desafíos. La mejor herramienta práctica para testing de seguridad.
  • Mapea Tests a OWASP: Organiza casos de prueba por categoría OWASP para cobertura sistemática.
  • OWASP Testing Guide: La guía WSTG proporciona procedimientos detallados para cada riesgo.
  • Enfócate en A01 y A03 Primero: Broken Access Control e Injection son los más comunes y peligrosos.
  • Automatiza Lo Posible: OWASP ZAP puede escanear automáticamente injection y misconfiguration. Enfoca testing manual en access control y lógica de negocio.