OWASP Top 10
1. Broken Access Control (Control de acceso roto)
- Qué es: Cuando un usuario puede acceder a recursos, funciones o datos que no debería. Esto
pasa cuando la aplicación no valida correctamente los permisos.
- Ejemplo:
- Un usuario normal cambia la URL miweb.com/admin y accede a la
sección de administrador.
- Un usuario puede ver los pedidos de otros clientes simplemente cambiando un ID en la URL.
- Prevención:
- Implementar control de acceso en el servidor, no solo en la interfaz.
- Revisar permisos para cada acción (lectura, escritura, borrado).
- Evitar confiar en datos enviados por el cliente.
- Pruebas de penetración regulares para validar los permisos.
2. Security Misconfiguration (Configuración insegura)
- Qué es: Cuando los sistemas, aplicaciones o servidores no están configurados correctamente,
dejando huecos de seguridad.
- Ejemplo sencillo:
- Bases de datos accesibles desde Internet.
- Contraseñas por defecto sin cambiar.
- Mensajes de error que muestran rutas internas o credenciales.
- Prevención:
- Desactivar servicios innecesarios.
- Cambiar todas las contraseñas por defecto.
- Actualizar software y frameworks regularmente.
- Revisar configuraciones de seguridad antes de desplegar en producción.
- Usar escáneres automáticos para detectar configuraciones erróneas.
3. Software Supply Chain
Failures (Fallos en la cadena de suministro de software)
- Qué es: Vulnerabilidades introducidas por librerías, dependencias o componentes externos
inseguros.
- Ejemplo sencillo:
- Instalar una librería de JavaScript con malware.
- Descargar un módulo que ya contiene vulnerabilidades conocidas.
- Prevención:
- Usar solo librerías oficiales y verificadas.
- Mantener librerías actualizadas.
- Escanear dependencias con herramientas como Snyk o OWASP Dependency-Check.
- Verificar firmas digitales de paquetes cuando sea posible.
4. Cryptographic Failures (Fallos criptográficos)
- Qué es: Uso incorrecto de cifrado o almacenamiento de información sensible sin protección.
- Ejemplo sencillo:
- Guardar contraseñas en texto plano.
- Usar cifrados obsoletos como MD5 o SHA1.
- Prevención:
- Guardar contraseñas con hash seguro (bcrypt, Argon2).
- Cifrar datos sensibles en tránsito (HTTPS/TLS) y en reposo.
- Evitar algoritmos inseguros.
- Gestionar correctamente las llaves de cifrado (rotación periódica).
5. Injection (Inyección)
- Qué es: Cuando un atacante puede insertar código o comandos en la aplicación que esta
ejecuta sin validar.
- Ejemplo sencillo:
- SQL Injection: SELECT * FROM users WHERE id = '1 OR 1=1' devuelve todos los usuarios.
- Command Injection: rm -rf /tmp/ ejecutado por un campo de formulario.
- Prevención:
- Usar consultas parametrizadas o ORM.
- Validar y sanear todas las entradas del usuario.
- Escapar caracteres especiales en comandos o queries.
- Usar frameworks modernos que protegen contra inyección.
6. Insecure Design (Diseño Inseguro)
- Qué es: Vulnerabilidades que provienen de decisiones de diseño, no solo de la
implementación.
- Ejemplo sencillo:
- Restablecimiento de contraseña sin verificar identidad.
- No pensar en límites de sesión o autenticación multifactor.
- Prevención:
- Diseñar la seguridad desde el inicio (“Security by Design”).
- Revisar flujos de autenticación y autorización antes de implementar.
- Aplicar principios de mínimos privilegios.
- Realizar modelado de amenazas antes de escribir código.
7. Authentication Failures (Fallos de autenticación)
- Qué es: Fallas en cómo los usuarios se identifican, permitiendo que atacantes se hagan
pasar por otros.
- Ejemplo sencillo:
- Permitir contraseñas simples como 12345.
- No bloquear la cuenta tras múltiples intentos fallidos.
- Prevención:
- Requerir contraseñas fuertes y únicas.
- Usar MFA (doble factor).
- Implementar bloqueos temporales tras varios intentos fallidos.
- Evitar almacenar contraseñas en texto plano.
8. Software or Data Integrity Failures (Fallas
de integridad)
- Qué es: Cuando el software o los datos pueden ser alterados sin autorización.
- Ejemplo sencillo:
- Descargar una actualización de software comprometida.
- Archivos importantes modificados por un atacante.
- Prevención:
- Verificar integridad con hashes y firmas digitales.
- Revisar que los archivos críticos no hayan sido modificados.
- Control de versiones seguro y auditado.
- Actualizaciones firmadas y distribuidas solo desde fuentes confiables.
9. Security Logging and Alerting
Failures (Fallas en registro y alertas)
- Qué es: No registrar eventos críticos o no generar alertas cuando hay incidentes.
- Ejemplo sencillo:
- No registrar intentos de acceso fallidos.
- No alertar si alguien intenta inyectar SQL.
- Prevención:
- Registrar eventos críticos: logins, errores de autorización, cambios de configuración.
- Configurar alertas automáticas ante comportamientos sospechosos.
- Revisar logs regularmente para detectar patrones anormales.
- Proteger los logs de modificaciones no autorizadas.
10. Mishandling of Exceptional
Conditions (Manejo incorrecto de excepciones)
- Qué es: Cuando los errores o excepciones no se manejan adecuadamente, exponiendo
información sensible.
- Ejemplo sencillo:
- Mostrar un stack trace completo en pantalla al usuario.
- Mensajes de error que revelan rutas de archivos o credenciales.
- Prevención:
- Mostrar mensajes genéricos al usuario: “Ocurrió un error, inténtelo más tarde”.
- Registrar internamente los detalles del error para los administradores.
- Validar todas las excepciones posibles y manejarlas con cuidado.
- Evitar que errores internos se filtren al frontend.
https://www.metacompliance.com/es/blog/cyber-security-awareness/owasp-top-10-2025-seguridad-web