← Volver al inicio
OWASP Top 10 Vulnerabilidades Web Auditoría

OWASP Top 10: Riesgos en Aplicaciones Web

01/05/2022

El OWASP Top 10 es la lista de referencia mundial de los riesgos de seguridad más críticos en aplicaciones web, mantenida por la Open Web Application Security Project.

Factores de datos de cada categoría

OWASP Top 10 — 2021

PosiciónCategoríaDescripción breve
A01Broken Access ControlSube desde #5. El 94% de las apps fueron probadas. Controles de acceso defectuosos.
A02Fallos CriptográficosAntes: Exposición de datos sensibles. Ahora enfocado en fallos de cifrado en tránsito y reposo.
A03InyecciónBaja al #3. SQL, NoSQL, OS, LDAP. El 94% de las apps fueron testadas.
A04Diseño InseguroNueva categoría 2021. Fallos de diseño y arquitectura de seguridad.
A05Error de ConfiguraciónSube desde #6. El 90% de apps testadas tenían algún error de configuración.
A06Componentes VulnerablesAntes #2 en la encuesta de industria. Uso de librerías y componentes desactualizados.
A07Fallos de AutenticaciónBaja desde #2. Incluye CWE de fallos de identificación.
A08Integridad de Software y DatosNueva categoría. Supuestos incorrectos en actualizaciones y pipelines CI/CD.
A09Fallos de Registro y MonitoreoSube. Registro insuficiente que retrasa la detección de brechas.
A10SSRFNueva desde encuesta de industria. Tasa de incidencia baja pero impacto alto.

Descripción y contramedidas de las principales vulnerabilidades

SQL Injection (A03)

Inyección de código SQL en variables de la aplicación para manipular la base de datos.

-- Ataque: mipass=' OR ''='
-- Defensa:
$stmt = $pdo->prepare("SELECT * FROM users WHERE pass = ?");
$stmt->execute([$_POST['password']]);

XSS — Cross-Site Scripting (A03)

Inyección de scripts en páginas vistas por otros usuarios.

// Defensa: escapar salida
echo htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
// + Content-Security-Policy en cabeceras HTTP

XXE — XML External Entities (A03)

Las aplicaciones que procesan XML pueden ser engañadas para incluir entidades externas.

# Defensa: deshabilitar DTDs en el parser XML
libxml_disable_entity_loader(true);

Broken Access Control (A01)

Usuarios acceden a recursos o funciones para los que no tienen permiso.

// Defensa: verificar autorización en cada endpoint
if (!$user->hasPermission('admin')) { http_response_code(403); exit; }

Security Misconfiguration (A05)

Insecure Deserialization (A08)

Permite ejecución remota de código mediante objetos serializados manipulados.

// Defensa: verificar integridad con firma digital antes de deserializar

SSRF (A10)

La app realiza peticiones HTTP a dominios arbitrarios elegidos por el atacante.

// Defensa: lista blanca de dominios, no enviar respuestas raw al cliente
$allowed = ['api.example.com', 'cdn.example.com'];
if (!in_array(parse_url($url, PHP_URL_HOST), $allowed)) die('Forbidden');

Tipos de auditoría basada en OWASP