En el contexto de un aumento significativo en los ataques a aplicaciones web y API, la importancia de OWASP (Open Web Application Security Project) es más crucial que nunca. Este organismo, reconocido mundialmente por su compromiso con la seguridad de las aplicaciones web, ofrece una guía invaluable para navegar en un panorama de ciberseguridad cada vez más complejo y amenazante. Pero, ¿qué es OWASP? ¿Y cómo puede ayudarnos su TOP 10? Lo descubriremos en este artículo.
Recientemente, se ha observado un crecimiento de aproximadamente 2,5 veces en la cantidad de tráfico de ataques identificado contra aplicaciones web y API. Este aumento es considerablemente alarmante, particularmente en el área de la Inclusión Local de Archivos (LFI), un vector de amenaza que ha visto un crecimiento interanual del 193%.
Además, los ataques dirigidos a la lógica empresarial de las API son notoriamente difíciles de detectar y mitigar, lo que representa un desafío adicional para las organizaciones. Los vectores de ataque emergentes, como la falsificación de solicitudes del lado del servidor (SSRF) y la plantilla de inyección del lado del servidor (SSTI), han empezado a plantear graves amenazas.
Estos métodos se han empleado junto con vulnerabilidades críticas de día-cero como Log4Shell y Spring4Shell, permitiendo la ejecución remota de código.
En este escenario, OWASP desempeña un papel fundamental. Al proporcionar recursos como el OWASP Top 10, una lista de las diez principales vulnerabilidades de aplicaciones web, educa a los desarrolladores, ingenieros de seguridad y organizaciones sobre cómo protegerse contra las amenazas más comunes y graves.
Por eso, en este artículo, exploraremos qué es OWASP, y cómo puede ayudarnos a resolver nuestras debilidades su TOP 10.
¿Qué es OWASP?
OWASP (Open Web Application Security Project) es una fundación internacional sin ánimo de lucro enfocada en mejorar la seguridad de las aplicaciones web. Fundada en 2001 y transformada en fundación en 2004, OWASP se ha establecido como un referente esencial en el ámbito de la ciberseguridad, ofreciendo una metodología estándar para analizar vulnerabilidades en software y hardware.
La misión de OWASP es doble:
- Primero, concienciar a los desarrolladores sobre los riesgos en Internet y los errores comunes en el diseño y desarrollo de software y hardware
- Segundo, proporcionar herramientas de acceso libre para evaluar la seguridad de las soluciones y dispositivos lanzados al mercado.
Todos sus materiales, incluyendo documentación, herramientas, vídeos y foros, son accesibles gratuitamente en su sitio web, lo que facilita a cualquier interesado mejorar la seguridad de sus aplicaciones web.
Inicialmente centrado en la seguridad web, OWASP ha expandido su alcance para abarcar aplicaciones móviles, dispositivos IoT, APIs y riesgos de privacidad.
Sus informes, especialmente el conocido «OWASP Top 10«, son una referencia constante para desarrolladores y analistas de ciberseguridad en todo el mundo, ofreciendo una visión clara y actualizada de las principales vulnerabilidades de seguridad.
OWASP TOP 10 2021: Vulnerabilidades
1 | A01- 2021: Control de acceso roto
El control de acceso roto en el OWASP TOP 10 representa una de las fallas más críticas en la seguridad de las aplicaciones web.
Se caracteriza por la incapacidad de un sistema para implementar restricciones adecuadas en las acciones que los usuarios pueden realizar. Esto lleva a la exposición no autorizada de datos, modificación o destrucción de información, y ejecución de funciones comerciales fuera de los límites permitidos.
Estadísticamente, esta vulnerabilidad afecta al 94% de las aplicaciones, con una tasa de incidencia promedio del 3,81% y más de 318,000 ocurrencias.
Las técnicas de explotación incluyen:
- Violación del principio de privilegio mínimo o denegación por defecto, permitiendo el acceso más allá de lo necesario.
- Modificación de la URL o estado interno de la aplicación para eludir comprobaciones de control de acceso.
- Acceso a cuentas ajenas mediante identificadores únicos (referencias de objetos directos inseguros).
- Acceso indebido a APIs para operaciones como POST, PUT y DELETE.
- Elevación de privilegios, actuando como usuario o administrador sin los permisos adecuados.
- Manipulación de metadatos, como tokens JWT, para elevar privilegios.
- Configuración incorrecta de CORS, permitiendo acceso no autorizado a la API.
- Navegación forzada a páginas autenticadas o privilegiadas.
Para prevenir o mitigar esta vulnerabilidad, OWASP recomienda:
- Implementar control de acceso efectivo en el código del servidor o APIs sin servidor.
- Aplicar la política de denegar por defecto, excepto para recursos públicos.
- Asegurar que los controles de acceso a los modelos impongan la propiedad de los registros.
- Deshabilitar la lista de directorios del servidor web y eliminar metadatos sensibles.
- Registrar y alertar sobre fallas de control de acceso.
- Limitar la velocidad de acceso a la API y controladores.
- Invalidar identificadores de sesión en el servidor después del cierre de sesión y usar tokens JWT de corta duración.
2 | A02:2021 – Fallos criptográficos
Esta vulnerabilidad, que figura en el OWASP Top 10, se centra en los defectos relacionados con la implementación y gestión de la criptografía. Los datos confidenciales pueden quedar expuestos debido a la utilización de protocolos criptográficos antiguos, débiles o mal configurados.
Estadísticamente, esta vulnerabilidad tiene una tasa de incidencia máxima del 46,44% y una tasa de incidencia promedio del 4,49%, con 233,788 ocurrencias totales.
Las vulnerabilidades más comunes ocurren cuando:
- Uso de protocolos criptográficos antiguos o débiles.
- Uso de claves criptográficas predeterminadas o gestión inadecuada de claves.
- No aplicar algoritmos de cifrado donde es necesario.
- Validación inadecuada de certificados y cadenas de confianza.
- Ignorar o reutilizar inadecuadamente los vectores de inicialización.
- Uso incorrecto de contraseñas como claves criptográficas.
- Uso de aleatoriedad no adecuada para propósitos criptográficos.
- Uso de funciones hash obsoletas.
- Aplicación de métodos de relleno criptográfico desactualizados.
- Vulnerabilidad a ataques de canal lateral o errores criptográficos.
Para prevenir o mitigar estos fallos, OWASP recomienda:
- Clasificar los datos y determinar sus necesidades de protección tanto en tránsito como en reposo.
- Evitar almacenar datos confidenciales innecesarios y utilizar técnicas como la tokenización.
- Cifrar todos los datos confidenciales en reposo y en tránsito con protocolos seguros como TLS.
- Utilizar algoritmos, protocolos y claves criptográficas sólidas y actualizadas, con una gestión adecuada de claves.
- Asegurar la adecuada inicialización de vectores y el uso de modos de funcionamiento seguros para el cifrado.
- Emplear funciones de hash robustas y adaptativas para almacenar contraseñas.
- Verificar la efectividad de la configuración y ajustes criptográficos de forma independiente.
3 | Vulnerabilidad A03:2021 – Inyección
Se trata de una vulnerabilidad donde la aplicación no valida o filtra adecuadamente los datos del usuario, permitiendo la inserción de código malicioso en consultas o comandos. Esta vulnerabilidad afecta al 94% de las aplicaciones, con una tasa de incidencia máxima del 19,09%, una tasa de incidencia promedio del 3,37% y 274,000 ocurrencias.
Entre los principales errores se encuentran:
- Inyección SQL (CWE-89): Insertar o «inyectar» una consulta SQL a través de la entrada de datos de la aplicación, manipulando la base de datos.
- Secuencias de comandos entre sitios (CWE-79): Inyectar scripts maliciosos en páginas web vistas por otros usuarios.
- Control externo del nombre o ruta del archivo (CWE-73): Manipular nombres de archivos o rutas para acceder a archivos no autorizados.
Para prevenir o mitigar esta vulnerabilidad, OWASP recomienda:
- Utilizar APIs seguras que eviten el uso del intérprete, o interfaces parametrizadas y herramientas de mapeo relacional de objetos (ORM).
- Implementar validación de entrada positiva en el servidor, aunque no es una defensa completa en sí misma.
- Escapar de caracteres especiales en cualquier consulta dinámica residual utilizando la sintaxis de escape específica para ese intérprete.
- Aplicar límites en las consultas SQL para prevenir la divulgación masiva de registros en caso de inyección SQL.
La revisión del código fuente es esencial para detectar vulnerabilidades de inyección, junto con el uso de herramientas de prueba de seguridad de aplicaciones estáticas (SAST), dinámicas (DAST) e interactivas (IAST) en el proceso de CI/CD.
4 | Vulnerabilidad A04:2021 – Diseño Inseguro en OWASP
Las fallas de diseño y arquitectura en aplicaciones web abarcan el 77,25% de las aplicaciones, con un 24,19% de tasa de incidencia máxima y 3,00% de tasa de incidencia promedio. Estas fallas de diseño no pueden solucionarse mediante una implementación perfecta, ya que los controles de seguridad necesarios no están presentes desde el inicio.
Las debilidades comunes (CWE) incluyen la generación de mensajes de error que revelan información sensible, almacenamiento inseguro de credenciales y violación de límites de confianza.
Esta vulnerabilidad OWASP se derivan de deficiencias en el diseño de la aplicación, como:
- No se identifican riesgos durante el diseño.
- Se usan componentes de software sin revisar su seguridad.
- Se crean controles de seguridad inadecuados o no se implementan.
Para prevenir o mitigar el diseño inseguro, OWASP recomienda:
- Involucrar a especialistas en seguridad de aplicaciones desde el principio del desarrollo en un Ciclo de Vida de Desarrollo Seguro.
- Implementar una biblioteca de patrones de diseño seguros y componentes listos para usar.
- Aplicar modelos de amenazas a aspectos críticos como autenticación, control de acceso y lógica de negocio.
- Incorporar lenguaje y controles de seguridad en las historias de usuario y realizar pruebas unitarias y de integración.
- Separar capas en sistemas y redes según la necesidad de exposición y protección, y limitar el consumo de recursos.
5 | A05:2021 – Configuración incorrecta de seguridad
La vulnerabilidad A05:2021 se da cuando las aplicaciones no cuentan con un refuerzo de seguridad adecuado o presentan configuraciones incorrectas. Estos casos afectan al 90% de las aplicaciones, con una tasa de incidencia promedio del 4% y más de 208,000 ocurrencias.
Vulnerabilidades o casos comunes incluyen:
- Falta de fortalecimiento en la pila de aplicaciones o permisos incorrectos en servicios en la nube.
- Habilitación de funciones innecesarias en puertos, servicios, páginas, cuentas o privilegios que no se necesitan.
- Contraseñas y cuentas por defecto habilitadas y no modificadas.
- Mensajes de error que revelan demasiada información.
- No usar las últimas medidas de seguridad en sistemas actualizados.
- Configuraciones inseguras en servidores y bases de datos.
- Servidores que no envían encabezados o directivas de seguridad correctamente.
Para prevenir o mitigar esta vulnerabilidad puedes:
- Establecer un proceso de fortalecimiento repetible para entornos de desarrollo, control de calidad y producción.
- Eliminar o no instalar funciones y marcos no utilizados.
- Incluir la revisión de configuraciones en el proceso de gestión de parches.
- Separar efectiva y seguramente componentes o inquilinos.
- Implementar encabezados de seguridad para clientes.
- Comprobar la efectividad de las configuraciones y ajustes en todos los entornos.
6 | A06:2021 – Componentes vulnerables y obsoletos
Esta categoría del OWASP Top 10 que carece de vulnerabilidades y exposiciones comunes (CVE) asignadas, presenta una tasa de incidencia máxima del 27,96% y una tasa de incidencia promedio del 8,77%.
¿Cómo saber si eres vulnerable? Presta atención si incurres en algunas de las siguientes prácticas:
- No conocer las versiones de todos los componentes usados, tanto en cliente como en servidor, incluyendo dependencias anidadas.
- Utilizar software vulnerable o desactualizado, como sistemas operativos, servidores de aplicaciones, bases de datos, aplicaciones, API, componentes, entornos de ejecución y bibliotecas.
- No buscar regularmente vulnerabilidades en los componentes usados ni suscribirse a boletines de seguridad.
- Retrasar la actualización de plataformas, marcos y dependencias, aumentando el riesgo de vulnerabilidades conocidas.
- No comprobar la compatibilidad de las bibliotecas actualizadas, mejoradas o parcheadas.
- Tener configuraciones de componentes no protegidas, relacionadas con configuraciones de seguridad incorrectas.
OWASP recomienda las siguientes acciones para proteger la seguridad de esta vulnerabilidad
- Eliminar funciones, componentes, archivos y documentación no utilizados.
- Usar herramientas como OWASP Dependency Check para un inventario continuo de componentes, tanto en cliente como en servidor y sus dependencias.
- Mantener un monitoreo constante de vulnerabilidades mediante fuentes como CVE y la Base de Datos Nacional de Vulnerabilidad (NVD).
- Automatizar la identificación de vulnerabilidades usando herramientas de análisis de composición de software.
- Adquirir componentes solo de fuentes oficiales y preferir paquetes firmados para una obtención segura.
- Monitorizar bibliotecas y componentes sin mantenimiento y aplicar medidas como parches virtuales cuando no se puedan aplicar parches reales.
7 | A07:2021 – Fallos de identificación y autenticación
Los fallos de identificación y autenticación del OWASP Top 10 se refiere al riesgo asociado con el uso de software o componentes de terceros que están desactualizados o no tienen mantenimiento.
Antes de seguir, es fundamental aclarar algunos conceptos para trabajar sobre una misma base.
Cuando nos referimos a Componentes Vulnerables hablamos de software o bibliotecas de terceros con vulnerabilidades conocidas que no han sido parcheadas o actualizadas.
En cambio, cuando mencionamos a los Componentes Obsoletos nos referimos al software que ya no recibe soporte o actualizaciones de seguridad.
Entonces, ¿Cómo identificar si tienes software vulnerable u obsoleto?
- No conocer las versiones exactas de todos los componentes utilizados.
- Emplear sistemas operativos, servidores de aplicaciones, DBMS, entre otros, que no están actualizados.
- No mantenerse informado sobre nuevas vulnerabilidades en los componentes utilizados.
- No actualizar la plataforma y sus dependencias de manera oportuna.
Para prevenir o corregir esta situación debes:
- Remover funciones, componentes y archivos no utilizados.
- Utilizar herramientas como OWASP Dependency Check para realizar un seguimiento de las versiones de los componentes.
- Mantenerse actualizado sobre nuevas vulnerabilidades a través de fuentes como CVE y NVD.
- Automatizar el proceso de detección de vulnerabilidades.
- Obtener componentes solo de fuentes oficiales y preferir paquetes firmados.
- Prestar atención a las bibliotecas y componentes que no se actualizan regularmente.
8 | A08:2021 – Fallos de integridad de datos y software
Esta vulnerabilidad OWASP, incorporada en 2021, se centra en las suposiciones inseguras relacionadas con las actualizaciones de software, los datos críticos y las canalizaciones de integración y despliegue continuo (CI/CD) sin verificar la integridad.
Esta categoría tiene uno de los impactos ponderados más altos según los datos de CVE/CVSS, con una tasa de incidencia máxima del 16,67% y una tasa promedio del 2,05%. Las CWE relevantes incluyen la:
- CWE-829 (inclusión de funcionalidad no confiable)
- CWE-494 (descarga de código sin verificación de integridad)
- CWE-502 (deserialización de datos no confiables).
Esta vulnerabilidad se relaciona con el código y la infraestructura que no protegen contra violaciones de integridad, como:
- Dependencias de fuentes no confiables
- Una canalización de CI/CD insegura
- Funcionalidades de actualización automática que no verifican adecuadamente la integridad de las actualizaciones.
Los ataques pueden incluir acceso no autorizado, inserción de código malicioso, o compromiso del sistema.
Para prevenir estos fallos:
- Utiliza firmas digitales o mecanismos similares para confirmar la autenticidad y la integridad del software o datos.
- Asegúrate de que las bibliotecas y dependencias se consuman de repositorios confiables. En entornos de alto riesgo, considere alojar un repositorio interno examinado.
- Usa herramientas como OWASP Dependency Check u OWASP CycloneDX para verificar que los componentes estén libres de vulnerabilidades conocidas.
- Implementa procesos de revisión de cambios de código y configuración para minimizar la inclusión de elementos maliciosos.
- Garantiza una segregación, configuración y control de acceso adecuados en la canalización de CI/CD.
- Asegúrate de que los datos serializados enviados a clientes no confiables estén firmados o verificados para evitar manipulaciones.
9 | A09:2021 – Fallos de monitoreo y registro de seguridad
Este elemento, que regresó al OWASP Top 10 en 2021, se ocupa de detectar, escalar y responder a infracciones activas. Está marcado por una tasa de incidencia máxima del 19,23% y una tasa de incidencia promedio del 6,51%. Los errores en el monitoreo y registro pueden ser difíciles de probar y suelen requerir entrevistas o verificaciones durante pruebas de penetración para su identificación.
Los fallos comunes en esta área incluyen:
- Eventos auditables como inicios de sesión (exitosos y fallidos) y transacciones importantes no se registran correctamente.
- Generación de mensajes de registro inexistentes, inadecuados o poco claros.
- Falta de monitoreo en registros de aplicaciones y API para actividades sospechosas.
- Los registros se almacenan solo localmente, sin respaldo externo o centralizado.
- No se establecen umbrales de alerta adecuados ni procesos efectivos de escalado de respuesta.
- Incapacidad para detectar, escalar o alertar sobre ataques en tiempo real o casi en tiempo real.
- Exposición de eventos de registro y alerta a usuarios o atacantes, aumentando el riesgo de fugas de información.
Para mitigar estos fallos:
- Implementa registros con suficiente detalle para identificar actividades sospechosas o maliciosas.
- Genera registros en formatos que sean fácilmente consumibles por soluciones de gestión de registros.
- Codifica correctamente los datos de registro para prevenir inyecciones o ataques.
- Asegurar las transacciones de alto valor con auditorías y controles de integridad.
- Establece monitoreo y alertas efectivas en equipos de DevSecOps.
- Adopta un plan de recuperación y respuesta a incidentes, siguiendo estándares como NIST 800-61r2.
- Utiliza marcos de protección de aplicaciones y software de correlación de registros como OWASP ModSecurity Core Rule Set y ELK (Elasticsearch, Logstash, Kibana) con paneles y alertas personalizados.
10 | Falsificación de solicitudes del lado del servidor (SSRF)
El SSRF se produce cuando una aplicación web busca un recurso remoto sin validar adecuadamente la URL suministrada por el usuario. Esto permite a un atacante forzar a la aplicación a enviar una solicitud a un destino no deseado, incluso detrás de firewalls o listas de control de acceso a la red.
Dada la prevalencia de las funciones de recuperación de URL en las aplicaciones web modernas, la incidencia y gravedad de SSRF están en aumento, exacerbadas por la adopción de servicios en la nube y la complejidad arquitectónica.
Para prevenir la SSRF, los desarrolladores deben implementar controles de defensa en profundidad:
- Desde la Capa de Red:
- Segmentar el acceso remoto a recursos en redes distintas.
- Aplicar políticas de firewall de «denegación por defecto» para bloquear tráfico no esencial.
- Registrar los flujos de red aceptados y bloqueados en los firewalls.
- Desde la Capa de Aplicación:
- Desinfectar y validar los datos de entrada del cliente.
- Enforzar el esquema de URL, puerto y destino con una lista positiva de permitidos.
- Evitar enviar respuestas sin procesar a los clientes y deshabilitar redirecciones HTTP.
- Verificar la coherencia de la URL para prevenir ataques de vinculación de DNS y condiciones de carrera TOCTOU.
- No usar listas de denegación o expresiones regulares para mitigar SSRF.
- Medidas Adicionales:
- No implementar servicios de seguridad relevantes en sistemas frontales.
- Utilizar cifrado de red en sistemas independientes para grupos de usuarios con altas necesidades de protección.
¿Cuándo utilizar el OWASP TOP 10?
El OWASP Top 10 es un documento reconocido para la concientización en seguridad de aplicaciones, y desde su creación en 2003, se ha utilizado como un estándar de facto en seguridad de aplicaciones (AppSec) en la industria.
Aunque es un excelente punto de partida, es importante reconocer que es solo el mínimo indispensable y no debe ser el único recurso utilizado.
Utilizar el OWASP Top 10 como estándar presenta ciertas dificultades, dado que documenta riesgos de seguridad en lugar de problemas específicos fácilmente testables.
Por ejemplo, A04:2021 – Diseño inseguro va más allá de lo que la mayoría de las pruebas pueden abarcar. Además, aspectos como los registros y el monitoreo efectivo suelen requerir entrevistas y evidencias de respuestas efectivas a incidentes, lo que va más allá de lo que una herramienta de análisis de código estático puede determinar.
¿Cómo implementar el OWASP Top 10 en un programa AppSec?
Implementar el OWASP Top 10 en un programa de seguridad de las aplicaciones (AppSec) requiere un enfoque estructurado y progresivo.
A continuación se detallan los pasos para integrar eficazmente este recurso en un programa de AppSec:
Etapa 1: Identificación de brechas y objetivos en AppSec
Antes de comenzar, es crucial evaluar el estado actual de su programa AppSec. Utilice el modelo de madurez de garantía de software (SAMM) de OWASP para identificar áreas de mejora y debilidades.
Establezca un plan para abordar estas áreas en un período de 1 a 3 años, priorizando la implementación o mejora de las quince prácticas de seguridad de OWASP SAMM.
Etapa 2: Planificación de un ciclo de vida de desarrollo seguro
Adopte el concepto de «camino pavimentado», donde el camino más fácil también es el más seguro. Este enfoque implica una colaboración profunda entre los equipos de desarrollo y seguridad, con el objetivo de mejorar y reemplazar continuamente alternativas inseguras.
La carretera pavimentada debe estar alineada con los objetivos empresariales y facilitar el desarrollo de aplicaciones seguras.
Etapa 3: Implementación con equipos de desarrollo
La implementación de la carretera pavimentada debe ser un esfuerzo conjunto con los equipos de desarrollo y operaciones. Debe ayudar a entregar aplicaciones más seguras rápidamente y cubrir todo el ecosistema de aplicaciones de la empresa.
Etapa 4: Migración de aplicaciones a la carretera pavimentada
Integre herramientas de detección en la carretera pavimentada y brinde a los equipos de desarrollo información sobre cómo adoptar sus componentes. Implemente controles de integración continua para evitar la introducción de opciones inseguras en el código.
Etapa 5: Prueba de mitigación de problemas del OWASP Top 10
Los componentes de la carretera pavimentada deben abordar problemas del OWASP Top 10. Es vital que el equipo de Appsec asegure la seguridad continua de estos componentes y facilite su actualización.
Etapa 6: Evolución hacia un programa AppSec maduro
No te limites al OWASP Top 10.
Adopte el Estándar de Verificación de Seguridad de Aplicaciones de OWASP y añada componentes y pruebas para los niveles de riesgo 1, 2 y 3, según sea necesario.
Conclusión
En un entorno donde los ataques a aplicaciones web y API están aumentando tanto en frecuencia como en sofisticación, la relevancia de OWASP es indiscutible. A través de sus recursos y directrices, OWASP ofrece a las organizaciones las herramientas necesarias para enfrentar y mitigar estas amenazas emergentes.
Al adoptar y aplicar las prácticas recomendadas, las empresas pueden fortalecer significativamente su postura de seguridad, lo cual es esencial en una era marcada por vulnerabilidades críticas y métodos de ataque en constante evolución.