¿Qué son los 10 principales ataques según OWASP?

El 10 principales ataques según OWASP, un estándar de referencia que proporciona una clasificación y orientación para la corrección de los diez riesgos más críticos de seguridad de aplicaciones web, ayuda a los desarrolladores y profesionales de seguridad a comprender mejor el panorama de amenazas y desenvolverse en él. El objetivo final de la Open Web Application Security Project Foundation es ayudar a fomentar una cultura de desarrollo de software seguro. Para desarrolladores y administradores de aplicaciones web, el 10 principales ataques según OWASP es una referencia fundamental e importante sobre seguridad. Proporciona una base a partir de la cual crear aplicaciones web más seguras 

¿Qué es OWASP?

Open Web Application Security Project, también conocido como Open Web Application Security Project es una organización sin ánimo de lucro cuyo objetivo es mejorar la seguridad del software. Open Web Application Security Project, además de proporcionar educación y formación, ofrece diversas herramientas útiles de infosec, como:

  • Zed Attack Proxy (ZAP): una popular herramienta de código abierto de pruebas dinámicas de seguridad de aplicaciones (DAST) para análisis de vulnerabilidades y pruebas de penetración.

  • Dependency-Check– Una herramienta de análisis de composición de software (SCA) que ayuda con la detección de vulnerabilidades en las dependencias.

  • Dependency-Track– Una plataforma de análisis de componentes de la cadena de suministro diseñada para integrar en entornos de CI/CD e identificar riesgos asociados con componentes de código abierto y de terceros a partir de una lista de materiales de software (SBOM).

¿Cuáles son los 10 principales riesgos de OWASP?

Los 10 principales ataques según OWASP son una lista de los diez riesgos de seguridad más críticos para las aplicación web. Está diseñado para servir como documento de concienciación para desarrolladores y profesionales de la seguridad.  Al igual que las amenazas a las que se enfrentan las aplicaciones web, la propia lista cambia de vez en cuando. Por ejemplo, la lista de 2013 se actualizó en 2017 y OWASP recopiló datos de marzo a mayo de 2020 para la siguiente actualización.

Entonces, ¿qué riesgos conforman los 10 principales ataques según OWASP hoy? Aquí están:

1. Inyección

Los ataques por inyección se producen cuando se envían datos a un intérprete mediante algún campo de entrada (p. ej., un formulario o un inicio de sesión) en una aplicación web. Una de las formas más comunes de inyección es una inyección SQL. Un ejemplo clásico de un ataque por inyección SQL que puede producirse es:

  1. Un aviso de inicio de sesión no valida ni sanea correctamente las entradas del nombre de usuario

  2. Una base de datos almacena nombres de usuario y contraseñas en texto sin formato (¡no hagas esto!) y carece de controles como SQL LIMIT

  3. Normalmente, el mensaje de inicio de sesión de la aplicación web hace una instrucción SQL como

SELECT * FROM Users WHERE name = 'someuser' AND password = 'passwd'

  1. Un usuario malicioso introduce el nombre de usuario «user OR 1 = 1» y cualquier contraseña.

  2. La instrucción SQL se convierte en

SELECT * FROM Users WHERE name = 'usuario' OR 1 = 1 --' AND password = 'passwd'

  1. El usuario malintencionado obtiene acceso al contenido protegido por contraseña

Aunque muchas aplicaciones hoy en día evitan ese caso sencillo, es importante recordar que cualquier área de una aplicación web que acepte parámetros de entrada podría estar sujeta a un ataque por inyección.

2. Autenticación dañada

La autenticación rota se refiere a la implementación insegura de métodos de autenticación y gestión de sesiones. Algunos indicios de una autenticación fallida incluyen:

  • Permitir ataques de fuerza bruta

  • Permitir contraseñas débiles como «password»

  • Almacenar contraseñas en texto sin formato o contraseñas con hash mediante una función hash débil o vulnerada

  • Gestión, rotación e invalidación inadecuadas de los ID de sesión y los token de autenticación

Para limitar el riesgo de que una violación de la seguridad filtre credenciales, cuando un usuario crea una contraseña, esta debe llevar salt y estar sometida a hash antes de almacenarse. Almacenar contraseñas en texto sin formato es el ejemplo clásico de no seguir esta práctica recomendada, e incluso gigantes de la nube pública como Google han cometido este error.

Además, la autenticación multifactor (MFA) y la limitación de frecuencia pueden ayudar a abordar algunos de los problemas asociados con una autenticación deficiente, como la vulnerabilidad a los ataques de fuerza bruta.

 3. Exposición de datos sensibles

Esta amplia categoría abarca la exposición no autorizada de datos sensibles en reposo o en tránsito. A menudo, las API no cifran ni transmiten correctamente datos sensibles como contraseñas, números de cuenta, datos sanitarios y otra información de carácter personal (PII), lo que genera riesgo de vulneración.

Un ataque básico de tipo man-in-the-middle (MITM) mediante SSL striping nos proporciona un ejemplo de cómo pueden producirse violaciones de la seguridad de datos sensibles:

  1. Un atacante compromete un punto de acceso WiFi

  2. El usuario se conecta al punto de acceso comprometido

  3. El usuario intenta conectarse a https://someinsecuresite.net

  4. El atacante utiliza un proxy para reenviar la petición del usuario a través de HTTPS al servidor

  5. El atacante elimina el cifrado y devuelve las respuestas al usuario a través de HTTP

Ahora el atacante ve todo lo que el usuario envía a someinsecuresite.net en texto sin formato. El servidor web de somesecuresite.net no tiene forma de saber que el tráfico está comprometido, ya que las peticiones recibidas desde el servidor del atacante usan HTTPS. El usuario no es consciente del ataque porque parece que las respuestas provienen directamente de someinsecuresite.net.

Aplicar HTTP Strict Transport Security (HSTS) en todas las páginas, especialmente en aquellas que tratan datos sensibles, es una forma de reducir el riesgo de exposición de datos sensibles. Del mismo modo, evitar el uso de cifrados débiles como SSL v3.0 o TLS 1.0 ayuda a aumentar la seguridad de los usuarios. Además, un cifrado sólido de los datos en reposo puede mitigar las filtraciones de información de carácter personal (PII) en caso de que una base de datos se vea comprometida. 

4. Entidades externas XML (XXE)

El lenguaje de marcado extensible (XML) es una estructura de datos habitual y muchas aplicaciones web pueden analizar entradas XML. Un ataque XXE está relacionado con la forma en que se realiza ese análisis. Un atacante envía datos XML que apuntan a una entidad externa.

A continuación, un analizador XML vulnerable enviará respuestas a la entidad externa, lo que podría exponer datos sensibles. Por ejemplo, supongamos que un atacante quisiera acceder a /ruta/to/super/secret/archivo.txt en un servidor web con un analizador XML vulnerable. El ataque podría ser algo así:

  1. Un atacante envía una petición que incluye este XML
    <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE eggs[ <!ENTITY weakparser SYSTEM "file:///ruta/to/super/secret/archivo.txt"> ]> <movies><filmId>&weakparser;</filmId></movies>

2. El servidor responde con un error y el contenido de /path/to/super/secret/file.txt

5. Controles de acceso no operativos

Mientras que el número dos de los 10 principales ataques según OWASP trata sobre la autenticación, el número 5 se refiere a lo que ocurre después. El control de acceso se refiere a los límites asociados a un conjunto determinado de privilegios de usuario.

Algunos ejemplos concretos de control de acceso vulnerado que menciona Open Web Application Security Project incluyen:

  • Uso de una URL modificada para eludir los controles de acceso. Por ejemplo, si userA puede acceder a la información de la cuenta de userB simplemente cambiando un enlace de net/myapp/myaccount?user=userA
    a someinsecuresite.net/myapp/myaccount?user=userB

  • Escalada de privilegios. Por ejemplo, una vulnerabilidad o una configuración incorrecta que permite a un usuario realizar acciones de administrador.

  • Acceso no autenticado a páginas con privilegios. Por ejemplo, si un usuario no autenticado puede navegar a
    net/myapp/super-secret-admin-page
    y ver información privilegiada que normalmente requiere autenticación.

  • Manipulación de metadatos. Algunos ejemplos son la repetición o manipulación de token de control de acceso o cookie y el uso indebido de la invalidación de JSON Web Token.

  • Configuración incorrecta de CORS (Cross-Origin Resource Sharing). Un ejemplo común de configuración incorrecta de CORS es permitir que las petición de «localhost» interactúen con aplicaciones web de producción.

6. Configuración incorrecta de la seguridad

OWASP informa de que la configuración incorrecta de la seguridad es el problema más común de su lista. De forma predeterminada, muchos paquetes se distribuyen con configuraciones predeterminadas inseguras y los desarrolladores web y los administradores necesitan reforzarlas. Además, la modificación de configuraciones para conseguir que una función específica funcione puede provocar una vulnerabilidad de seguridad no intencionada.

Por ejemplo, permite acceder a un panel de administración con una contraseña predeterminada por defecto; las credenciales deben cambiarse antes del despliegue en producción. Del mismo modo, los servicios y puertos innecesarios deben deshabilitarse o bloquearse.

La gran conclusión de esta entrada de los 10 principales ataques según OWASP es la siguiente: asegúrate de configurar de forma segura los componentes de tu aplicación Y de aplicar con diligencia los parches y las actualizaciones de seguridad.

7. Scripting entre sitios (XSS)

Scripting entre sitios, también conocido como XSS es un problema de seguridad habitual al que se enfrentan las aplicaciones web. Los ataques XSS introducen scripts del lado del cliente en el contenido web. Pueden permitir que los atacantes roben datos, secuestren la sesión de un usuario o muestren contenido modificado en una página web. Existen varios tipos diferentes de ataques XSS, entre ellos:

  • XSS reflejado: esta forma sencilla de ataque XSS también se conoce como ataque XSS no persistente. Por lo general, utiliza una URL maliciosa que apunta a un sitio legítimo. En el ataque, la URL incluye caracteres especiales (p. ej., caracteres de control HTML) que las páginas vulnerables ejecutan después.

  • XSS almacenado: estos ataques también se conocen como XSS almacenado. En el caso del XSS almacenado, los datos maliciosos proporcionados por un atacante se guardan en el lado del servidor. El resultado es que el contenido comprometido se muestra a todos los usuario que visitan la página.

  • Cross-site scripting (XSS) basado en el modelo de objetos del documento (DOM): los ataques XSS basados en DOM son únicos porque, por lo general, el exploit nunca llega a tocar el servidor. Se aprovecha código frontend como JavaScript para ejecutar scripts maliciosos.

8. Deserialización insegura

La serialización es el proceso que se utiliza para convertir objetos de datos en un formato específico con fines como el streaming o el almacenamiento de datos. Los datos serializados pueden ser datos binarios o de texto sin formato (como JSON o XML). La deserialización es el proceso de invertir la serialización y volver a convertir los datos serializados en un objeto de datos.

El proceso de serialización/deserialización puede convertirse en un problema cuando intervienen fuentes no fiables de datos serializados. Un atacante puede incluir Operaciones específicas en los datos serializados y, si el ataque tiene éxito, el servidor las ejecutará durante el proceso de deserialización. Esto significa que la deserialización insegura puede usarse para ataques que van desde DDoS hasta la escalada de privilegios.

Open Web Application Security Project proporciona un buen ejemplo de deserialización insegura al usar como ejemplo una aplicación de foro vulnerable basada en PHP. Supongamos que la aplicación usa una super cookie que almacena un ID de usuario, el rol de usuario y la información del hash de la contraseña.
Un atacante podría modificar la cookie para concederse privilegios elevados, así:

Antes:

a:1:{s:1:"MalicousUser";i:1;s:2:"guest"; i:1;s:1:" fe7pmk43i1wstgqvsyask27g44yxn7qhl6zgkr7ivho1e6lv903xc9sbiq4b6mtx";}

Después:

a:1:{s:1:"SuperAdmin";i:1;s:2:"admin"; i:1;s:1:" fe7pmk43i1wstgqvsyask27g44yxn7qhl6zgkr7ivho1e6lv903xc9sbiq4b6mtx";}

9. Uso de componentes con vulnerabilidades conocidas

Este riesgo es exactamente lo que sugiere el nombre: el uso de componentes vulnerables dentro de una aplicación web. Las aplicaciones web modernas dependen de diversos marcos, bibliotecas y módulos. Si alguno de estos componentes subyacentes tiene vulnerabilidades de seguridad, toda la aplicación puede quedar en riesgo. Al igual que con el número seis del 10 principales ataques según OWASP, aplicar parches y actualizaciones de seguridad puede ser de gran ayuda en este caso.

10. Tareas insuficientes de creación de registros y supervisión

La rápida detección de amenazas intentadas o violaciones de la seguridad confirmadas es una parte importante para prevenir o mitigar los daños. La actividad maliciosa suele tener un patrón único, y una supervisión eficaz puede ayudar a detectarla rápidamente. En muchos casos, una violación de la seguridad no detectada provoca daños más generalizados, por lo que este riesgo figura en la lista. De hecho, según Open Web Application Security Project, la mayoría de los estudios sugieren que el tiempo que se tarda en detectar una violación de la seguridad de datos supera los 200 días.

Algunos ejemplos comunes de registro y supervisión insuficientes incluyen:

  • No registrar eventos de alto valor como inicios de sesión e intentos fallidos de inicio de sesión

  • No hay mensajes ni errores ambiguos, y mensajes de registro para eventos de nivel de advertencia o superior

  • Solo almacenar registros localmente en el servidor

  • Los análisis de seguridad no activan notificaciones ni alertas

  • Sin alertas en tiempo real para ataques

Cómo un WAF puede ayudar a abordar los 10 principales ataques según OWASP

No existe una solución única e infalible para mantener tu aplicación web a salvo de las amenazas de los 10 principales ataques según OWASP. Tendrás que asegurarte de que la seguridad se tenga en cuenta en el código, en la configuración de la infraestructura y en los componentes de terceros que utilices.

Dicho esto, un cortafuegos de aplicaciones web puede ahorrarte gran parte del trabajo de proteger la aplicación web. La definición de OWASP de un WAF destaca los casos de uso habituales para mitigar ataques como XSS e inyecciones SQL.

Entonces, ¿cómo puede ayudar exactamente un WAF en estos casos? Los WAF configurados correctamente pueden detectar y bloquear peticiones potencialmente maliciosas. Al utilizar una combinación de mecanismos de detección predeterminados y funcionalidades personalizables en soluciones como el WAF de última generación de Fastly, y aprovechar las capacidades de nuestra plataforma de edge cloud, puedes obtener una gran protección frente a los 10 principales ataques según OWASP. 

Para obtener orientación más detallada y ejemplos reales de cómo resolver amenazas de OWASP con Fastly, puedes consultar nuestro whitepaper. 

¿Listo para empezar?

Ponte en contacto con nosotros