OWASP Top 10 2025: Guía Completa de las Nuevas Vulnerabilidades Web [Actualizado]
El OWASP Top 10 2025 acaba de ser publicado en noviembre de 2025, y trae cambios significativos que todo desarrollador, pentester y profesional de ciberseguridad debe conocer. Esta guía completa te explica las 10 vulnerabilidades web más críticas, qué ha cambiado respecto a 2021, y cómo proteger tus aplicaciones.
🔴 IMPORTANTE: Esta es la versión Release Candidate oficial de OWASP, publicada en noviembre 2025. Incluye 2 nuevas categorías que reflejan las amenazas actuales de la cadena de suministro de software y sistemas distribuidos.
🔍 Índice de Contenidos
- Resumen ejecutivo: OWASP 2025 vs 2021
- Lista completa OWASP Top 10 2025
- Análisis detallado de cada vulnerabilidad
- Nuevas categorías en 2025
- Ejemplos prácticos y código
- Cómo prevenir cada vulnerabilidad
- Tabla comparativa 2021 vs 2025
- Conclusiones y próximos pasos
🔥 Qué Ha Cambiado en OWASP Top 10 2025
La actualización de 2025 refleja la realidad de las arquitecturas modernas: cloud-native, microservicios y una cadena de suministro de software cada vez más compleja. Los cambios principales son:
✅ DOS NUEVAS CATEGORÍAS:
- A03: Software Supply Chain Failures (Fallos en la Cadena de Suministro)
- A10: Mishandling of Exceptional Conditions (Manejo Incorrecto de Excepciones)
🔺 ASCENSO DRAMÁTICO:
- A02: Security Misconfiguration sube del 5º al 2º puesto
🔄 CONSOLIDACIÓN:
- A10:2021 SSRF (Server-Side Request Forgery) se integra en A01:2025 Broken Access Control
❌ ELIMINADA:
- A06:2021 Vulnerable and Outdated Components se amplió y transformó en A03:2025
📊 Lista Completa OWASP Top 10 2025
| Posición | Vulnerabilidad | Cambio vs 2021 |
|---|---|---|
| A01 | Broken Access Control | ➡️ Se mantiene #1 |
| A02 | Security Misconfiguration | 🔺 Sube de #5 a #2 |
| A03 | Software Supply Chain Failures | ⭐ NUEVA 2025 |
| A04 | Cryptographic Failures | 🔻 Baja de #2 a #4 |
| A05 | Injection | 🔻 Baja de #3 a #5 |
| A06 | Insecure Design | 🔻 Baja de #4 a #6 |
| A07 | Authentication Failures | ➡️ Renombrada (era Identification) |
| A08 | Software/Data Integrity Failures | ➡️ Se mantiene #8 |
| A09 | Security Logging & Alerting Failures | ➡️ Renombrada |
| A10 | Mishandling of Exceptional Conditions | ⭐ NUEVA 2025 (sustituye SSRF) |
📖 Análisis Detallado: Las 10 Vulnerabilidades
A01:2025 – Broken Access Control (Control de Acceso Roto) 🔴
🎯 Qué es: La vulnerabilidad #1 por cuarto año consecutivo. Ocurre cuando los usuarios pueden acceder a recursos o realizar acciones fuera de sus permisos asignados.
🚨 Por qué es crítico:
- 94% de aplicaciones tienen algún tipo de control de acceso roto
- Ahora incluye SSRF (Server-Side Request Forgery) de 2021
- Permite acceso no autorizado a datos sensibles
💡 Ejemplos comunes:
- Manipular URLs para acceder a cuentas ajenas:
app.com/usuario/123→app.com/usuario/124 - Elevar privilegios modificando parámetros:
role=user→role=admin - Acceder a APIs sin validación:
GET /api/users/allsin autenticación - SSRF: Forzar servidor a hacer peticiones internas
✅ Cómo prevenir:
// MAL: Confiar en parámetros del cliente
$userId = $_GET['user_id'];
$user = getUserData($userId); // ¡Cualquiera puede ver cualquier usuario!
// BIEN: Validar permisos del usuario autenticado
$currentUserId = $_SESSION['user_id'];
if ($currentUserId != $requestedUserId && !isAdmin($currentUserId)) {
die('Acceso denegado');
}🔧 Medidas:
- Denegar acceso por defecto (whitelist, no blacklist)
- Implementar controles en el servidor, nunca confiar en el cliente
- Validar tokens JWT y permisos en cada request
- Rate limiting para prevenir brute force
- Logs de intentos de acceso no autorizado
A02:2025 – Security Misconfiguration 🔥 (SUBE AL #2)
🎯 Qué es: El gran ascenso de 2025 (del #5 al #2). Configuraciones incorrectas, incompletas o por defecto en aplicaciones, servidores y bases de datos.
🚨 Por qué asciende: La complejidad de arquitecturas cloud-native y microservicios hace que las configuraciones incorrectas sean ahora el vector de ataque más común después del control de acceso.
💡 Ejemplos comunes:
- Buckets S3 de AWS abiertos públicamente
- Paneles de admin sin autenticación:
/admin,/phpmyadmin - Credenciales por defecto:
admin/admin,root/root - Mensajes de error detallados en producción
- CORS configurado como
*(wildcard) - Puertos innecesarios abiertos
- Stack traces visibles al público
✅ Cómo prevenir:
# MAL: Exponer información del servidor
Server: Apache/2.4.41 (Ubuntu) PHP/7.4.3
# BIEN: Ocultar headers informativos
server_tokens off;
more_clear_headers 'Server';
more_clear_headers 'X-Powered-By';# MAL: Bucket S3 público
BucketPolicy:
PublicAccessBlockConfiguration:
BlockPublicAcls: false
# BIEN: Bloquear acceso público por defecto
BucketPolicy:
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true🔧 Medidas:
- Hardening de servidores (CIS Benchmarks)
- Deshabilitar funciones innecesarias
- Cambiar credenciales y puertos por defecto
- Segmentación de redes
- IaC (Infrastructure as Code) con validación automática
- Escaneo regular con Nessus, OpenVAS, Trivy
A03:2025 – Software Supply Chain Failures ⭐ (NUEVA)
🎯 Qué es: LA GRAN NOVEDAD 2025. Expande «Componentes Vulnerables y Obsoletos» para cubrir toda la cadena de suministro: dependencias, pipelines CI/CD, registros de paquetes, CDNs.
🚨 Por qué es nueva: Ataques como SolarWinds, Log4Shell y compromisos de npm/PyPI han demostrado que la cadena de suministro es el nuevo objetivo favorito de atacantes.
💡 Ejemplos comunes:
- Dependencias vulnerables: Usar librerías con CVEs conocidos
- Typosquatting: Instalar
requetsen lugar derequests - CDN comprometido: Scripts de terceros inyectando malware
- Pipeline sin firmas: Artefactos CI/CD no verificados
- Repositorios públicos: Secretos en código subido a GitHub
✅ Cómo prevenir:
// package.json con versiones fijas y verificación
{
"dependencies": {
"express": "4.18.2", // Versión exacta, no "^4.18.2"
"lodash": "4.17.21"
},
"overrides": {
"minimist": "1.2.6" // Forzar versión segura en sub-dependencias
}
}# GitHub Actions con hash SHA en lugar de tags
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# NO usar: actions/checkout@v4 (tags son mutables)# Verificar integridad con SRI (Subresource Integrity)
<script
src="https://cdn.example.com/library.js"
integrity="sha384-oqVuAfXRKap7fdg..."
crossorigin="anonymous">
</script>🔧 Medidas:
- SBOM (Software Bill of Materials): Inventario completo de componentes
- Dependabot/Renovate: Actualizaciones automáticas
- Snyk/OWASP Dependency-Check: Escaneo de vulnerabilidades
- Firmas digitales: Verificar .sig de paquetes
- Private registries: npm/PyPI privados para empresa
- Lock files:
package-lock.json,poetry.locken control de versiones
A04:2025 – Cryptographic Failures
🎯 Qué es: Fallos relacionados con cifrado: usar algoritmos débiles, almacenar contraseñas en texto plano, transmitir datos sensibles sin HTTPS.
💡 Ejemplos: MD5/SHA1 para passwords, HTTP en lugar de HTTPS, claves de cifrado hardcodeadas, no usar salt en hashes.
✅ Prevención: TLS 1.3, bcrypt/Argon2 para passwords, HSM para claves, Perfect Forward Secrecy.
A05:2025 – Injection
🎯 Qué es: SQL Injection, NoSQL Injection, OS Command Injection, LDAP Injection. Baja del #3 al #5 pero sigue siendo crítica.
💡 Ejemplo SQL Injection:
// MAL
$query = "SELECT * FROM users WHERE id = " . $_GET['id'];
// BIEN: Prepared Statements
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute(['id' => $_GET['id']]);✅ Prevención: Prepared statements, ORM, validación de entrada, WAF, principio de menor privilegio.
A06:2025 – Insecure Design
🎯 Qué es: Defectos de diseño arquitectónico (no bugs de implementación). Lógica de negocio vulnerable.
💡 Ejemplos: Permitir comprar con precio negativo, no verificar stock antes de vender, ausencia de rate limiting.
✅ Prevención: Threat modeling, secure design patterns, peer review de arquitectura, pruebas de lógica de negocio.
A07:2025 – Authentication Failures
🎯 Qué es: Credential stuffing, brute force, session hijacking, tokens JWT débiles.
💡 Ejemplos: No implementar MFA, sesiones que no expiran, permitir passwords débiles («123456»).
✅ Prevención: MFA obligatorio, rate limiting, CAPTCHA, passwords fuertes, rotación de tokens.
A08:2025 – Software and Data Integrity Failures
🎯 Qué es: Deserialización insegura, actualizaciones no firmadas, CI/CD sin validación.
💡 Ejemplos: Deserializar objetos de fuentes no confiables, auto-updates sin verificar firma digital.
✅ Prevención: Firmas digitales, no deserializar datos no confiables, integrity checks, code signing.
A09:2025 – Security Logging & Alerting Failures
🎯 Qué es: No registrar eventos de seguridad, logs insuficientes, no monitorear alertas.
💡 Ejemplos: No logear intentos de login fallidos, logs sin timestamps, no alertar sobre múltiples errores.
✅ Prevención: SIEM (Splunk, ELK), logs centralizados, alertas en tiempo real, retention adecuado.
A10:2025 – Mishandling of Exceptional Conditions ⭐ (NUEVA)
🎯 Qué es: LA SEGUNDA GRAN NOVEDAD. Manejo incorrecto de excepciones y condiciones inesperadas. Sustituye a SSRF del 2021.
🚨 Por qué es nueva: En arquitecturas distribuidas (microservicios, serverless), el manejo inadecuado de errores puede:
- Revelar información sensible en stack traces
- Causar fallos en cascada
- Exponer rutas internas del servidor
- Provocar denegaciones de servicio
💡 Ejemplos comunes:
# MAL: Exponer stack trace completo al usuario
try:
result = process_payment(user_id, amount)
except Exception as e:
return f"Error: {e}\n{traceback.format_exc()}" # ¡PELIGRO!
# Revela: rutas, versiones, configuración interna
# BIEN: Manejo genérico + log interno
try:
result = process_payment(user_id, amount)
except PaymentException as e:
logger.error(f"Payment failed: {e}", extra={'user_id': user_id})
return {"error": "Payment processing failed. Contact support."}
except Exception as e:
logger.critical(f"Unexpected error: {e}")
return {"error": "An unexpected error occurred"}💡 Otros ejemplos:
- Mensajes de error SQL que revelan estructura de BD
- Division by zero no manejado
- Timeout sin fallback (crash total)
- Null pointer exceptions visibles al usuario
- Archivos de configuración expuestos en errores 500
✅ Cómo prevenir:
// Circuit Breaker Pattern para microservicios
const breaker = new CircuitBreaker(externalAPI, {
timeout: 3000,
errorThresholdPercentage: 50,
resetTimeout: 30000
});
breaker.fallback(() => {
return { data: cachedData, source: 'cache' };
});🔧 Medidas clave:
- Páginas de error genéricas en producción
- Logs detallados solo en servidor, nunca al cliente
- Circuit breakers para servicios externos
- Graceful degradation: Modo degradado en lugar de crash
- Timeouts en todas las operaciones de red
- Retry logic con exponential backoff
- Health checks y monitorización de dependencias
📊 Tabla Comparativa Completa: OWASP 2021 vs 2025
| # | OWASP 2021 | OWASP 2025 | Estado |
|---|---|---|---|
| 1 | Broken Access Control | Broken Access Control | ➡️ Mantiene + SSRF integrado |
| 2 | Cryptographic Failures | Security Misconfiguration | 🔺 #5→2 |
| 3 | Injection | Software Supply Chain Failures | ⭐ NUEVA |
| 4 | Insecure Design | Cryptographic Failures | 🔻 #2→4 |
| 5 | Security Misconfiguration | Injection | 🔻 #3→5 |
| 6 | Vulnerable Components | Insecure Design | 🔻 #4→6 |
| 7 | Identification/Auth Failures | Authentication Failures | ➡️ Renombrada |
| 8 | Software/Data Integrity | Software/Data Integrity | ➡️ Mantiene |
| 9 | Logging Failures | Logging & Alerting Failures | ➡️ Renombrada |
| 10 | SSRF | Mishandling Exceptions | ⭐ NUEVA (SSRF→A01) |
🛡️ Herramientas Recomendadas para Detectar y Prevenir
Escaneo de Vulnerabilidades
- OWASP ZAP: Proxy de intercepción y escaneo automático
- Burp Suite: Pruebas manuales y automatizadas
- Nikto: Escaneo de configuraciones de servidores web
- SQLMap: Detección y explotación de SQL Injection
Análisis de Dependencias
- Snyk: Escaneo de vulnerabilidades en dependencias
- OWASP Dependency-Check: Herramienta gratuita
- Dependabot: Actualizaciones automáticas en GitHub
- npm audit / pip-audit: Nativo en package managers
Análisis de Código Estático (SAST)
- SonarQube: Calidad y seguridad de código
- Semgrep: Reglas personalizables
- Bandit (Python) / Brakeman (Ruby)
WAF (Web Application Firewall)
- ModSecurity: WAF open source
- Cloudflare WAF: Protección en la nube
- AWS WAF: Para infraestructura AWS
✅ Checklist de Implementación
Para Desarrolladores
- [ ] Implementar autenticación multifactor (MFA)
- [ ] Usar prepared statements en todas las queries SQL
- [ ] Validar todas las entradas del usuario
- [ ] Configurar HTTPS/TLS 1.3 en todos los endpoints
- [ ] Implementar rate limiting en APIs
- [ ] Añadir logs de seguridad con SIEM
- [ ] Escanear dependencias con cada build
- [ ] Revisar permisos de acceso regularmente
- [ ] Implementar circuit breakers en microservicios
- [ ] Páginas de error genéricas en producción
Para DevSecOps
- [ ] Integrar SAST/DAST en CI/CD pipeline
- [ ] Configurar dependency scanning automático
- [ ] Hardening de servidores según CIS Benchmarks
- [ ] Implementar WAF con reglas OWASP
- [ ] Escaneos de vulnerabilidades semanales
- [ ] Backups cifrados y pruebas de restauración
- [ ] Monitoreo 24/7 con alertas
- [ ] Plan de respuesta a incidentes documentado
🎯 Conclusiones y Próximos Pasos
El OWASP Top 10 2025 refleja la evolución del panorama de amenazas:
🔑 Puntos Clave:
- Security Misconfiguration asciende dramáticamente (#5→#2) debido a la complejidad cloud
- Software Supply Chain es ahora una categoría completa, no solo «componentes vulnerables»
- Manejo de Excepciones reconoce la realidad de sistemas distribuidos modernos
- Broken Access Control continúa siendo el #1 por cuarto año consecutivo
🚀 Acciones Inmediatas:
- Audita tu infraestructura cloud (A02)
- Implementa SBOM para rastrear dependencias (A03)
- Revisa manejo de errores en microservicios (A10)
- Valida controles de acceso en todas las APIs (A01)
📚 Recursos Adicionales:
- Documentación oficial: owasp.org/Top10/2025
- OWASP Cheat Sheet Series
- OWASP Testing Guide v4.2
- CWE/SANS Top 25 Most Dangerous Software Errors
💬 ¿Tienes preguntas? Deja un comentario abajo y te ayudaremos a implementar estas mejores prácticas en tu aplicación.
🔔 Última Actualización
Este tutorial fue actualizado en diciembre 2025 con la versión Release Candidate oficial del OWASP Top 10:2025.
Tags: #OWASP #OWASP2025 #CiberSeguridad #Pentesting #WebSecurity #AppSec #DevSecOps #VulnerabilidadesWeb #SeguridadInformática #HackingEtico








Un comentario