OWASP Top 10 explicado con ejemplos prácticos

Security2026-10-03TryQuickToolBox

Como desarrollador web, probablemente hayas oído hablar del OWASP Top 10: la lista de los riesgos de seguridad más críticos en aplicaciones web. Pero, ¿sabes cómo se manifiestan estos riesgos en el código real? En este artículo, repasaremos cada uno de los OWASP Top 10 (edición 2021) con ejemplos prácticos y defensas concretas. Al final, podrás identificar y corregir estas vulnerabilidades en tus propios proyectos.

1. Control de acceso roto

El control de acceso roto ocurre cuando los usuarios pueden actuar fuera de sus permisos previstos. Por ejemplo, un usuario podría acceder a los datos de otro usuario cambiando un parámetro de la URL.

Ejemplo: Una aplicación web obtiene datos de usuario a través de /api/users/123. Si no se verifica que el usuario autenticado sea el 123, un atacante puede simplemente cambiar el ID para acceder a los datos de otros.

Defensa: Implementa verificaciones de autorización adecuadas en cada solicitud. Usa control de acceso basado en roles (RBAC) y valida los permisos en el lado del servidor.

2. Fallos criptográficos

Esta categoría (anteriormente "Exposición de datos sensibles") cubre fallos relacionados con la criptografía, como transmitir datos en texto claro o usar algoritmos débiles.

Ejemplo: Almacenar contraseñas con MD5 o SHA-1 sin salt. Los atacantes pueden descifrar fácilmente estos hashes.

Defensa: Usa algoritmos de hashing fuertes y adaptativos como bcrypt, scrypt o Argon2. Fuerza siempre HTTPS.

3. Inyección

Los fallos de inyección, como la inyección SQL, NoSQL, OS y LDAP, ocurren cuando se envían datos no confiables a un intérprete como parte de un comando o consulta.

Ejemplo: Un formulario de inicio de sesión que concatena la entrada del usuario en una consulta SQL:

SELECT * FROM users WHERE username = '" + username + "' AND password = '" + password + "'

Un atacante podría introducir ' OR '1'='1 para eludir la autenticación.

Defensa: Usa consultas parametrizadas o sentencias preparadas. Nunca concatenes la entrada del usuario en las consultas.

4. Diseño inseguro

El diseño inseguro se refiere a fallos en la arquitectura y el diseño de una aplicación, no solo a errores de implementación.

Ejemplo: Una función de restablecimiento de contraseña que usa preguntas de seguridad con respuestas fáciles de adivinar, o que carece de limitación de velocidad.

Defensa: Modelado de amenazas durante el diseño, usa patrones de diseño seguros e implementa limitación de velocidad y bloqueo de cuentas.

5. Configuración de seguridad incorrecta

Esto incluye cuentas predeterminadas, páginas no utilizadas, fallos sin parchear, archivos y directorios desprotegidos, y más.

Ejemplo: Dejar habilitado el listado de directorios en un servidor Nginx, exponiendo archivos sensibles.

Defensa: Refuerza tus configuraciones: deshabilita el listado de directorios, elimina las cuentas predeterminadas, mantén el software actualizado y usa encabezados de seguridad.

6. Componentes vulnerables y desactualizados

Usar componentes con vulnerabilidades conocidas puede comprometer toda tu aplicación.

Ejemplo: Usar una versión antigua de una biblioteca JavaScript como lodash con una vulnerabilidad conocida de contaminación de prototipos.

Defensa: Escanea regularmente las dependencias (por ejemplo, con npm audit, OWASP Dependency-Check) y actualízalas.

7. Fallos de identificación y autenticación

Estos fallos permiten a los atacantes comprometer contraseñas, claves o tokens de sesión, o explotar otros fallos de implementación para asumir las identidades de otros usuarios.

Ejemplo: Permitir contraseñas débiles como "123456" o no implementar la autenticación multifactor (MFA).

Defensa: Aplica políticas de contraseñas fuertes, implementa MFA y usa una gestión de sesiones segura.

8. Fallos de integridad de software y datos

Esta categoría se centra en hacer suposiciones sobre actualizaciones de software, datos críticos y pipelines de CI/CD sin verificar la integridad.

Ejemplo: Descargar y ejecutar binarios de fuentes no confiables sin verificar las firmas.

Defensa: Usa firmas digitales, verifica sumas de comprobación y asegura tu pipeline de CI/CD.

9. Fallos de registro y monitoreo de seguridad

Un registro y monitoreo insuficientes permiten a los atacantes persistir, pivotar y mantener el acceso.

Ejemplo: No registrar los intentos de inicio de sesión fallidos, lo que hace indetectables los ataques de fuerza bruta.

Defensa: Registra eventos relevantes para la seguridad, configura alertas para actividades sospechosas y revisa regularmente los registros.

10. Falsificación de solicitudes del lado del servidor (SSRF)

Los fallos de SSRF ocurren cuando una aplicación web obtiene un recurso remoto sin validar la URL proporcionada por el usuario.

Ejemplo: Una función de webhook que obtiene una URL proporcionada por el usuario. Un atacante podría hacer que el servidor solicite recursos internos como http://169.254.169.254/latest/meta-data/ en AWS.

Defensa: Valida y sanitiza las URLs, usa listas de permitidos y restringe el tráfico saliente.

Pasos prácticos para mitigar el OWASP Top 10

  1. Implementa control de acceso: Aplica verificaciones de autorización en cada solicitud, en el lado del servidor.
  2. Usa criptografía segura: Hashea contraseñas con bcrypt/Argon2, fuerza HTTPS.
  3. Previene la inyección: Usa consultas parametrizadas y escapa la salida.
  4. Diseña de forma segura: Modela amenazas, usa patrones seguros y limita la velocidad.
  5. Refuerza las configuraciones: Deshabilita funciones no utilizadas, mantén el software actualizado, establece encabezados de seguridad.
  6. Gestiona las dependencias: Escanea y actualiza componentes regularmente.
  7. Fortalece la autenticación: Aplica contraseñas fuertes, implementa MFA.
  8. Verifica la integridad: Usa firmas y CI/CD seguro.
  9. Registra y monitorea: Registra eventos de seguridad, configura alertas.
  10. Previene SSRF: Valida URLs, usa listas de permitidos, restringe el tráfico saliente.

Preguntas frecuentes

¿Qué es el OWASP Top 10?

El OWASP Top 10 es una lista actualizada periódicamente de los riesgos de seguridad más críticos en aplicaciones web, publicada por el Open Web Application Security Project (OWASP). Sirve como base para que los desarrolladores aseguren sus aplicaciones.

¿Con qué frecuencia se actualiza el OWASP Top 10?

Se actualiza aproximadamente cada tres o cuatro años. La última versión es de 2021, y la anterior es de 2017.

¿Puedo confiar únicamente en el OWASP Top 10 para la seguridad?

No, es un punto de partida. También deberías considerar otros recursos como el Estándar de Verificación de Seguridad de Aplicaciones (ASVS) de OWASP y realizar pruebas de seguridad periódicas.

¿Quieres analizar rápidamente tus registros de Nginx en busca de actividad sospechosa? Prueba nuestro Analizador de registros de Nginx para identificar posibles ataques y monitorear la seguridad de tu servidor web.