Skip to main content
LadeStack LogoLadeStack
Security in Web Apps 15 min de lectura 17 de noviembre de 2024

OWASP Top 10: Guía Completa de Mitigación para Aplicaciones Web Modernas (Edición 2025)

Análisis técnico exhaustivo de las categorías oficiales de OWASP Top 10:2025: causas raíz, mitigaciones a nivel de código, seguridad de la cadena de suministro y arquitectura de defensa en profundidad.

Arquitectura de Seguridad en Aplicaciones Web OWASP Top 10:2025

1. Más Allá de la Lista de Verificación: La Seguridad como Arquitectura de Sistemas

El estándar OWASP Top 10:2025 representa el consenso internacional definitivo sobre los riesgos de seguridad más críticos que amenazan a las aplicaciones web modernas, las API distribuidas y las arquitecturas en la nube. Sin embargo, los equipos de ingeniería caen a menudo en una peligrosa trampa: tratar a OWASP Top 10 como una simple lista de verificación estática de cumplimiento.

Obtener un informe limpio de un escáner automatizado de vulnerabilidades o marcar diez casillas no garantiza que un sistema sea seguro. El Top 10 es un índice de los patrones de fallo arquitectónico más destructivos y generalizados. La seguridad real del software requiere defensa en profundidad (Defense-in-Depth), un ciclo de vida de desarrollo seguro (Secure SDLC), modelado continuo de amenazas y validación estricta de límites en todas las capas del stack tecnológico.

+--------------------------------------------------------------------------+
|                  Modelo de Defensa en Profundidad (Defense-in-Depth)     |
+------------------------------------+-------------------------------------+
                                     |
    Capa 1: Red y Perímetro          v
    [ WAF / Mitigación DDoS / TLS 1.3 / Límite de Tasa de Ingress ]
                                     |
    Capa 2: Transporte y Pasarela    v
    [ API Gateway / Validación OAuth 2.0 & OIDC / mTLS Mutuo ]
                                     |
    Capa 3: Aplicación y Lógica      v
    [ Validación Estricta / Consultas Parametrizadas / RBAC & ABAC ]
                                     |
    Capa 4: Datos y Almacenamiento   v
    [ Cifrado de Columnas / Mínimo Privilegio en BD / Bóvedas Vault ]

2. Categorías Oficiales de OWASP Top 10:2025 y Mitigaciones Técnicas

Las siguientes secciones examinan con detalle las diez categorías oficiales del estándar OWASP Top 10:2025 (A01:2025 a A10:2025), ofreciendo análisis de causa raíz, ejemplos prácticos de código y recomendaciones preventivas de arquitectura.


A01:2025 – Broken Access Control (Pérdida de Control de Acceso)

La Pérdida de Control de Acceso mantiene el puesto número 1 en el estándar 2025. Ocurre cuando las políticas de autorización no existen, están mal configuradas o se delegan al cliente, lo que permite a atacantes acceder a información protegida o ejecutar acciones administrativas no autorizadas. En la edición 2025, la Falsificación de Peticiones del Lado del Servidor (SSRF) se clasifica formalmente bajo esta categoría como un mecanismo de elusión de control de acceso contra redes internas y servicios de metadatos de instancias en la nube.

  • Causas Raíz Típicas:
    • Referencias Directas Inseguras a Objetos (IDOR): confiar en IDs enviados por el cliente sin verificar la pertenencia al inquilino (tenant).
    • Ausencia de control de acceso funcional: exponer rutas administrativas (/admin/deleteUser) sin verificar roles ni permisos.
    • Acceso a metadatos mediante SSRF: procesar URL externas arbitrarias sin restringir las solicitudes a rangos IP privados (RFC 1918) o al servicio IMDS de la nube.
  • Arquitectura Segura: Verificaciones de autorización centralizadas basadas en políticas (RBAC o ABAC) impuestas directamente en la capa de acceso a datos.
// SEGURO: Validación de propiedad del inquilino en la consulta a la base de datos
async function getUserInvoice(invoiceId: string, authenticatedUserId: string, authenticatedTenantId: string) {
  // Nunca consultar únicamente por invoiceId; siempre filtrar por tenant ID y user ID
  const invoice = await db.query(
    `SELECT id, amount, status, created_at 
     FROM invoices 
     WHERE id = $1 AND user_id = $2 AND tenant_id = $3`,
    [invoiceId, authenticatedUserId, authenticatedTenantId]
  );

  if (!invoice.rows.length) {
    throw new NotFoundOrForbiddenException('El recurso no existe o acceso denegado');
  }

  return invoice.rows[0];
}

A02:2025 – Security Misconfiguration (Configuración de Seguridad Incorrecta)

Ascendiendo al 2º puesto en 2025, la Configuración de Seguridad Incorrecta evidencia la complejidad creciente de los despliegues multicloud, los contenedores y las mallas de microservicios, donde valores por defecto permisivos exponen vulnerabilidades críticas.

  • Causas Raíz Típicas:
    • Credenciales administrativas predeterminadas en bases de datos o middlewares en producción.
    • Manejo prolijo de errores que revela trazas de pila internas (stack traces), estructuras de base de datos o variables de entorno.
    • Permisos excesivos en buckets de almacenamiento cloud, contenedores Kubernetes ejecutándose como root o cabeceras HTTP ausentes.
  • Mitigaciones Efectivas:
    • Automatizar el endurecimiento (hardening) de sistemas mediante Infraestructura como Código (Terraform, OpenTofu, Pulumi).
    • Eliminar rutas de depuración y trazas verbose de compilaciones de producción; retornar códigos de error opacos.
    • Desplegar cabeceras de respuesta HTTP estrictas:
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'none';
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: strict-origin-when-cross-origin
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

A03:2025 – Software Supply Chain Failures (Fallos en la Cadena de Suministro de Software)

Una de las grandes incorporaciones del estándar 2025, amplía drásticamente el antiguo concepto de “Componentes Vulnerables y Obsoletos”. Abarca todos los riesgos de la cadena de suministro de software: inyección de paquetes maliciosos, dependencias comprometidas, pipelines de integración continua envenenados, confusión de dependencias y falta de trazabilidad en los artefactos de compilación.

  • Causas Raíz Típicas:
    • Incorporar paquetes externos no auditados o víctimas de typosquatting en repositorios públicos (npm, PyPI).
    • Acciones de CI/CD sin fijar que ejecutan código de ramas mutables (ej.: uses: actions/checkout@v4 en lugar del SHA del commit).
    • Carencia de generación automatizada de Lista de Materiales de Software (SBOM) y auditoría de vulnerabilidades.
  • Mitigaciones Efectivas:
    • Exigir archivos de bloqueo con verificación criptográfica (package-lock.json, pnpm-lock.yaml) y verificar sumas de control.
    • Integrar Análisis de Composición de Software (SCA) automatizado en los pipelines de CI/CD (Trivy, Snyk, Dependabot).
    • Fijar dependencias y acciones de CI/CD con el commit SHA completo de 40 caracteres.
    • Generar SBOMs legibles por máquina (CycloneDX o SPDX) y firmar digitalmente los artefactos con Sigstore/Cosign.
# Ejemplo de paso en GitHub Actions con commit SHA fijado y escaneo de vulnerabilidades
- name: Checkout Code
  uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Run Trivy Vulnerability Scanner
  uses: aquasecurity/trivy-action@d43c1f16c00cfd3978dde6c07f4bbcf9eb6993ca
  with:
    scan-type: 'fs'
    ignore-unfixed: true
    severity: 'CRITICAL,HIGH'

A04:2025 – Cryptographic Failures (Fallos Criptográficos)

Esta categoría agrupa las deficiencias al proteger información confidencial en tránsito, en reposo o en memoria mediante primitivas criptográficas robustas y esquemas seguros de administración de claves.

  • Causas Raíz Típicas:
    • Utilización de algoritmos de hash rotos u obsoletos (MD5, SHA1) para el almacenamiento de contraseñas o control de integridad.
    • Modos de cifrado simétrico débiles (ej.: AES en modo ECB en lugar del modo autenticado GCM).
    • Claves criptográficas grabadas en el código fuente o secretos expuestos en texto plano.
  • Mitigaciones Efectivas:
    • Contraseñas: Hashes exclusivos con funciones modernas de alto coste de memoria: Argon2id (recomendado), scrypt o bcrypt con factor de coste adaptativo.
    • Datos en Tránsito: Forzar TLS 1.3 con secreto perfecto hacia adelante (PFS); inhabilitar suites de cifrado antiguas.
    • Datos en Reposo: Cifrar con AES-256-GCM o ChaCha20-Poly1305 mediante cifrado por sobre (envelope encryption) gestionado y rotado mediante un KMS en la nube o HashiCorp Vault.

A05:2025 – Injection (Inyección)

Ocurre cuando datos no confiables introducidos por el usuario son interpretados como comandos o instrucciones de consulta por un motor de ejecución (SQL, NoSQL, shell del sistema operativo, LDAP, XPath o GraphQL).

  • Causas Raíz Típicas:
    • Concatenación de cadenas en la construcción de consultas SQL ("SELECT * FROM users WHERE name = '" + input + "'").
    • Paso de entradas no sanitizadas a comandos del intérprete del sistema operativo (child_process.exec("ping " + host)).
  • Mitigaciones Efectivas:
    • Emplear exclusivamente consultas parametrizadas (Prepared Statements) o bibliotecas ORM con tipado seguro.
    • Validar rigurosamente los datos de entrada en las fronteras del sistema mediante esquemas (Zod, JSON Schema).
    • Aplicar codificación de salida adaptada al contexto antes de renderizar datos en HTML, JavaScript o CSS.
// SEGURO: Consulta SQL parametrizada mediante Prepared Statements
const result = await pool.query(
  'SELECT id, email, role FROM users WHERE email = $1 AND active = $2',
  [sanitizedEmail, true]
);

A06:2025 – Insecure Design (Diseño Inseguro)

El Diseño Inseguro aborda fallos de arquitectura y lógica de negocio que no pueden solucionarse mediante parches simples de código, ya que la seguridad se omitió desde la definición de requisitos y el diseño inicial.

  • Causas Raíz Típicas:
    • Flujos transaccionales sin límites (ej.: flujos de restablecimiento de contraseña o códigos OTP sin límite de intentos).
    • Confianza implícita en microservicios dentro de la red corporativa (ausencia del modelo Zero Trust).
    • Ausencia de protecciones contra la automatización de ataques en operaciones críticas de negocio.
  • Mitigaciones Efectivas:
    • Ejecutar modelado de amenazas STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) en revisiones arquitectónicas.
    • Diseñar bajo el principio de valores seguros por defecto: políticas de acceso con denegación predeterminada (fail-closed) y MFA obligatorio.

A07:2025 – Authentication Failures (Fallos de Autenticación)

Evolución simplificada de “Fallos de Identificación y Autenticación”, se enfoca en debilidades de los protocolos de autenticación, secuestro de sesiones y validación incorrecta de credenciales.

  • Causas Raíz Típicas:
    • Permitir contraseñas débiles o comprometidas sin chequeo de entropía ni validación frente a listas de filtraciones (HaveIBeenPwned).
    • Gestión insegura de sesiones: identificadores predecibles, falta de rotación tras login o persistencia tras el cierre de sesión.
    • Falta de autenticación multifactor (MFA) en cuentas de acceso privilegiado o administrativo.
  • Mitigaciones Efectivas:
    • Exigir MFA mediante TOTP (RFC 6238) o llaves de hardware FIDO2/WebAuthn.
    • Generar identificadores de sesión criptográficamente aleatorios (mínimo 128 bits de entropía) almacenados en cookies HttpOnly; Secure; SameSite=Strict.
    • Exigir el flujo Authorization Code con PKCE (S256) en implementaciones OAuth 2.0 / OpenID Connect.

A08:2025 – Software or Data Integrity Failures (Fallos de Integridad de Software o Datos)

Aborda asunciones infundadas sobre actualizaciones de software, tuberías de datos críticas y objetos serializados sin verificación criptográfica previa de su integridad.

  • Causas Raíz Típicas:
    • Deserialización insegura: instanciación de objetos binarios serializados sin validar procedentes de la red.
    • Procesos de actualización que descargan binarios vía HTTP no seguro o sin comprobar firmas digitales.
    • Admisión de tokens JWT sin firma (alg: "none") o vulnerables a confusión de algoritmos (RS256 vs HS256).
  • Mitigaciones Efectivas:
    • Prohibir la deserialización binaria de fuentes no confiables; exigir JSON estricto con validación de esquemas.
    • Verificar firmas digitales y hashes criptográficos en binarios y contenedores antes de ejecutarlos en producción.
    • Establecer listas blancas de algoritmos criptográficos en las bibliotecas de validación de JWT.

A09:2025 – Security Logging and Alerting Failures (Fallos de Registro y Alerta de Seguridad)

Actualizada en la edición 2025 para recalcar que almacenar registros sin alertas proactivas y accionables no previene brechas de seguridad. Los atacantes suelen permanecer meses inadvertidos porque los registros nunca se monitorizan en tiempo real.

  • Causas Raíz Típicas:
    • No registrar eventos de seguridad críticos (accesos fallidos, denegaciones de autorización, elevación de privilegios).
    • Escribir credenciales o datos protegidos (contraseñas en texto claro, tokens de sesión, tarjetas) en los logs.
    • Conservar registros únicamente en los discos locales de los servidores web, permitiendo a los atacantes borrar evidencias.
  • Mitigaciones Efectivas:
    • Generar registros de auditoría estructurados en formato JSON con marcas temporales precisas, actor, IP y correlation ID.
    • Transmitir registros en tiempo real a plataformas SIEM inmutables (Elasticsearch, Splunk, Datadog).
    • Configurar alertas automáticas en tiempo real ante actividades anómalas (> 10 intentos fallidos en 60 segundos por subred).

A10:2025 – Mishandling of Exceptional Conditions (Manejo Inadecuado de Condiciones Excepcionales)

La nueva categoría imprescindible introducida en OWASP Top 10:2025 (ocupando el 10º puesto al integrarse SSRF en el Control de Acceso). Aborda las vulnerabilidades surgidas por gestión defectuosa de errores, excepciones no capturadas, condiciones de borde imprevistas y estados de apertura por fallo (fail-open).

  • Causas Raíz Típicas:
    • Estados de Seguridad Abiertos por Fallo (Fail-Open): cuando un filtro de autenticación o autorización sufre una excepción no controlada (ej.: puntero nulo o token anómalo), el sistema omite el control y permite el paso de la petición.
    • Condiciones de Carrera (Race Conditions) y Desincronización de Estados: solicitudes concurrentes que explotan ventanas entre verificación y uso (TOCTOU) para duplicar transacciones o violar cuotas.
    • Agotamiento de Recursos: carencia de límites de memoria, cuotas de procesamiento o tiempos de espera (timeouts) en operaciones I/O, derivando en denegación de servicio (DoS).
  • Mitigaciones Efectivas:
    • Adoptar una Arquitectura con Cierre por Fallo (Fail-Closed Architecture): toda excepción no capturada debe derivar en una denegación inmediata de acceso (HTTP 500/403).
    • Aplicar bloqueos de registro a nivel de base de datos (SELECT FOR UPDATE) o bloqueos distribuidos (Redis Redlock) para impedir carreras críticas.
    • Configurar cuotas estrictas de recursos, límites al tamaño de petición y timeouts en todas las operaciones de red.
// SEGURO: Middleware de autorización con cierre seguro por fallo (Fail-Closed)
export async function enforcePolicyMiddleware(req: Request, res: Response, next: NextFunction) {
  let isAuthorized = false; // Valor por defecto seguro: falso (Fail-Closed)

  try {
    const user = extractAuthenticatedUser(req);
    isAuthorized = await policyEngine.evaluate(user, req.path, req.method);
  } catch (error) {
    // Registrar el fallo de forma segura junto al correlation ID
    logger.error('Fallo crítico no controlado en la evaluación de políticas', { error, path: req.path });
    isAuthorized = false; // Asegurar explícitamente que la autorización se mantiene denegada
  }

  if (!isAuthorized) {
    return res.status(403).json({ error: 'Acceso denegado: la política de seguridad rechazó la solicitud' });
  }

  next();
}

3. Comparativa Histórica: OWASP Top 10 2021 vs. 2025

Categoría 2021 Categoría 2025 Principales Cambios Estructurales
A01:2021 – Broken Access Control A01:2025 – Broken Access Control Permanece en el puesto #1; absorbe a Server-Side Request Forgery (SSRF) como mecanismo de bypass.
A05:2021 – Security Misconfiguration A02:2025 – Security Misconfiguration Asciende al puesto #2 debido a la complejidad de arquitecturas multicloud, contenedores y microservicios.
A06:2021 – Vulnerable and Outdated Components A03:2025 – Software Supply Chain Failures Reestructurada para abarcar riesgos en toda la cadena de suministro, integridad de CI/CD y SBOMs.
A02:2021 – Cryptographic Failures A04:2025 – Cryptographic Failures Pasa al puesto #4; mantiene énfasis en protección de datos confidenciales y gestión con KMS.
A03:2021 – Injection A05:2025 – Injection Se ubica en el puesto #5; exige consultas parametrizadas obligatorias y validación de esquemas.
A04:2021 – Insecure Design A06:2025 – Insecure Design Se sitúa en el puesto #6; enfatiza el modelado de amenazas STRIDE antes de iniciar el desarrollo.
A07:2021 – Identification and Authentication Failures A07:2025 – Authentication Failures Título simplificado; exige MFA (TOTP/WebAuthn), entropía en identificadores de sesión y PKCE.
A08:2021 – Software and Data Integrity Failures A08:2025 – Software or Data Integrity Failures Se centra en la validación de artefactos sin firma digital e integridad de flujos de compilación.
A09:2021 – Security Logging and Monitoring Failures A09:2025 – Security Logging and Alerting Failures Rediseñada para priorizar alertas accionables en tiempo real para reducir el tiempo de persistencia.
A10:2021 – Server-Side Request Forgery (SSRF) A10:2025 – Mishandling of Exceptional Conditions Nueva 10ª categoría enfocada en tratamiento de errores y estados fail-open. SSRF pasa a A01.

4. Las Limitaciones Inherentes a los Escáneres Automáticos

Las herramientas de Análisis Dinámico (DAST) y Análisis Estático (SAST) constituyen un punto de partida necesario, pero no son suficientes para garantizar la seguridad de una aplicación:

  1. Vulnerabilidades de Lógica de Negocio: Los escáneres no comprenden si un usuario autenticado tiene derecho legítimo a alterar saldos o cambiar de inquilino.
  2. Autorización Desprovista de Contexto: Las herramientas automáticas tienen dificultades para discernir objetos públicos de registros confidenciales de clientes.
  3. Fatiga de Alertas y Falsos Negativos: Los reportes masivos de advertencias triviales desvían la atención de fallos arquitectónicos críticos.

La seguridad informática eficaz exige integrar análisis automatizados con modelado humano de amenazas, revisiones exhaustivas de código por ingenieros expertos y auditorías de penetración independientes.


Lista de Comprobación OWASP Top 10:2025

  • A01 Pérdida de Control de Acceso: Autorización a nivel de consulta por inquilino; filtrado de peticiones salientes anti-SSRF.
  • A02 Configuración de Seguridad Incorrecta: Hardening con IaC; supresión de trazas de depuración; CSP y HSTS activos.
  • A03 Fallos en la Cadena de Suministro de Software: Ficheros lock verificados; pasos de CI/CD fijados por commit SHA; SBOM generado.
  • A04 Fallos Criptográficos: Hashes con Argon2id/bcrypt; TLS 1.3 obligatorio; cifrado por sobre en reposo.
  • A05 Inyección: Consultas SQL parametrizadas obligatorias; validación estricta de esquemas; fin de concatenación.
  • A06 Diseño Inseguro: Modelado STRIDE integrado; políticas seguras por defecto en flujos de negocio.
  • A07 Fallos de Autenticación: MFA obligatorio; cookies de sesión de alta entropía (HttpOnly; Secure; SameSite=Strict).
  • A08 Fallos de Integridad de Software o Datos: Deserialización binaria prohibida; firma de artefactos con Cosign.
  • A09 Fallos de Registro y Alerta de Seguridad: Registros JSON estructurados; envío a SIEM inmutable; alertas en tiempo real.
  • A10 Manejo Inadecuado de Condiciones Excepcionales: Gestión de excepciones fail-closed; bloqueos de concurrencia; cuotas de recursos.

Referencias Oficiales (Verificación Octubre de 2026)

More Engineering Articles