¿Qué es el OWASP Top 10?
OWASP Top 10, un estándar de referencia que proporciona una clasificación y orientación para la remediació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 y navegar el panorama de amenazas. El objetivo final de la Fundación OWASP es ayudar a fomentar una cultura de desarrollo de software seguro. Para desarrolladores y administradores de aplicación web, el OWASP Top 10 es una referencia fundamental e importante de seguridad. Proporciona una base a partir de la cual construir aplicaciones web más seguras
¿Qué es OWASP?
Open Web Application Security Project, también conocido como OWASP es una organización sin fines de lucro cuyo objetivo es mejorar la seguridad del software. OWASP, además de ofrecer educación y capacitación, ofrece una variedad de herramientas útiles de seguridad de la información, como:
Zed Attack Proxy (ZAP): una popular herramienta de prueba dinámica de seguridad de aplicaciones (DAST) de código abierto para escaneos 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 Entorno de CI/CD e identificar riesgos asociados con componentes de código abierto y de terceros con base en una lista de materiales de software (SBOM).
¿Cuáles son los 10 principales riesgos de OWASP?
OWASP Top 10 es una lista de los diez riesgos de seguridad más críticos para las aplicaciones web. Está diseñado para ser un documento de concientización para desarrolladores y profesionales de seguridad. Al igual que las amenazas que enfrentan las aplicaciones web, la lista en sí 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 el OWASP Top 10 hoy? Aquí están:
1. Inyección
Los ataques de inyección ocurren cuando se envían datos a un intérprete mediante algún campo de entrada (p. ej., un formulario o 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 de inyección SQL puede ocurrir así:
Un aviso de inicio de sesión no valida ni sanitiza correctamente las entradas del nombre de usuario
Una base de datos almacena nombres de usuario y contraseñas en texto sin formato (¡no hagas esto!) y carece de controles como SQL límite
Normalmente, el mensaje de inicio de sesión de la aplicación web ejecuta una instrucción SQL como
SELECT * FROM Users WHERE name = 'someuser' AND password = 'passwd'
Un usuario malicioso introduce el nombre de usuario “user OR 1 = 1” y cualquier contraseña.
La instrucción SQL se convierte en
SELECT * FROM Users WHERE name = 'usuario' OR 1 = 1 --' AND password = 'passwd'
El usuario malicioso obtiene acceso al contenido protegido con contraseña
Aunque muchas aplicaciones hoy en día evitan ese caso simple, es importante recordar que cualquier área de una aplicación web que acepte parámetros de entrada podría estar sujeta a un ataque de inyección.
2. Autenticación rota
La autenticación rota se refiere a la implementación insegura de métodos de autenticación y gestión de sesiones. Algunas señales de autenticación rota 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
Manejo, rotación e invalidación inadecuados de los ID de sesión y los token de autenticación
Para limitar el riesgo de que una filtración exponga credenciales, cuando un usuario crea una contraseña, esta debe tener salt y 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 ese error.
Además, la autenticación multifactor (MFA) y la limitación de velocidad pueden ayudar a abordar algunos de los problemas asociados con una autenticación deficiente, como la susceptibilidad a 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 de atención médica y otra Información de identificación personal (PII), lo que genera riesgo de vulneración.
Un ataque básico de intermediario (MITM) que usa SSL striping nos da un ejemplo de cómo pueden ocurrir las filtraciones de datos sensibles:
Un atacante compromete un hotspot WiFi
El usuario se conecta al hotspot comprometido
El usuario intenta conectarse a https://someinsecuresite.net
El atacante usa un proxy para reenviar la solicitud del usuario a través de HTTPS al servidor
El atacante elimina el cifrado y devuelve 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 idea de que el tráfico está comprometido, ya que las solicitudes que recibe del servidor del atacante usan HTTPS. El usuario no sabe que está siendo víctima 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 manejan datos sensibles, es una forma de reducir el riesgo de exposición de datos sensibles. De manera similar, evitar el uso de cifrado débil 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 identificación personal en caso de que una base de datos se vea comprometida.
4. Entidades externas XML (XXE)
Extensible Markup Language (XML) es una estructura de datos común y muchas aplicaciones web pueden parse XML de entrada. Un ataque XXE está relacionado con la forma en que ocurre ese análisis. Un atacante envía datos XML que apuntan a una entidad externa.
Luego, un analizador sintáctico XML vulnerable enviará respuestas a la entidad externa, lo que podría exponer datos sensibles. Por ejemplo, supongamos que un atacante quisiera acceder a /path/to/super/secret/file.txt en un servidor web con un analizador sintáctico XML vulnerable. El ataque puede verse algo así:
Un atacante envía una solicitud que incluye este XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE eggs[ <!ENTITY weakparser SYSTEM "file:///path/to/super/secret/file.txt"> ]> <movies><filmId>&weakparser;</filmId></movies>
2. El servidor responde con un error y el contenido de /path/to/super/secret/file.txt
5. Broken access control
Aunque el número dos del OWASP Top 10 trata sobre la autenticación, el número 5 se relaciona con lo que sucede después. El control de acceso se refiere a los límites asociados con un conjunto determinado de privilegios de usuario.
Algunos ejemplos específicos de control de acceso roto que menciona OWASP incluyen:
Usar una URL modificada para eludir 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=userBEscalación de privilegios. Por ejemplo, una vulnerabilidad o una configuración incorrecta que permite que un usuario realice acciones de administrador.
Acceso no autenticado a páginas privilegiadas. 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 incluyen la repetición o manipulación de tokens de control de acceso o cookies y el abuso de la invalidación de JSON Web Token.
Configuración incorrecta de CORS (Cross-Origin Resource Sharing). Un ejemplo común de una configuración incorrecta de CORS es permitir que las solicitudes de “localhost” interactúen con aplicaciones web de producción.
6. Configuración incorrecta de seguridad
OWASP informa que la configuración incorrecta de seguridad es el problema más común de su lista. De forma predeterminada, muchos paquetes se envían con configuraciones inseguras y los desarrolladores y administradores web deben reforzarlas. Además, la modificación de configuraciones para que una función específica funcione puede provocar una vulnerabilidad de seguridad no intencional.
Por ejemplo, permite acceder a un panel de administración con una contraseña predeterminada de forma predeterminada; las credenciales deben cambiarse antes del despliegue en producción. De manera similar, los servicios y puertos innecesarios deben deshabilitarse o bloquearse.
La gran conclusión de esta entrada de OWASP Top 10 es: asegúrate de configurar de forma segura los componentes de la app Y de aplicar con diligencia los parches y las actualizaciones de seguridad.
7. Cross-site scripting (XSS)
Secuencias de comandos entre sitios, también conocidas como XSS es un problema de seguridad común al que se enfrentan las apps web. Los ataques XSS insertan scripts del lado del cliente en el contenido web. Pueden permitir que un atacante robe datos, secuestre la sesión de un usuario o muestre contenido modificado en una página web. Hay varios tipos diferentes de ataques XSS, entre ellos:
XSS reflejado: esta forma simple de un ataque XSS también se conoce como un 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 luego ejecutan las páginas vulnerables.
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 del lado del servidor. El resultado es que el contenido comprometido se muestra a todos los usuarios que visitan la página.
XSS basado en Document Object Model (DOM): los ataques XSS basados en DOM son únicos porque, por lo general, el exploit nunca toca el servidor. Se explota código de 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 streaming o 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 revertir la serialización y convertir los datos serializados de nuevo en un objeto de datos.
El proceso de serialización/deserialización puede convertirse en un problema cuando se mezclan fuentes no confiables de datos serializados. Un atacante puede incluir operaciones específicas en los datos serializados y, si el ataque tiene éxito, el servidor las ejecutará en el proceso de deserialización. Esto significa que la deserialización insegura puede usarse para ataques que van desde DDoS hasta la escalación de privilegios.
OWASP 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 del usuario y la información del hash de la contraseña.
Un atacante podría modificar la cookie para otorgarse 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 una variedad de marcos, bibliotecas y módulos. Si alguno de estos componentes subyacentes tiene vulnerabilidades de seguridad, estas pueden poner en riesgo toda la aplicación. Al igual que con el número seis del OWASP Top 10, aplicar parches y actualizaciones de seguridad puede ser de gran ayuda aquí.
10. Registro y monitoreo insuficientes
La rápida detección de amenazas intentadas o filtraciones confirmadas es una parte importante de prevenir o mitigar 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, las filtraciones no detectadas provocan daños más generalizados, por lo que este riesgo entró en la lista. De hecho, según Open Web Application Security Project, la mayoría de los estudios sugieren que el tiempo que toma detectar una filtración de datos supera los 200 días.
Algunos ejemplos comunes de registro y monitoreo insuficientes incluyen:
No registrar eventos de alto valor como inicios de sesión e intentos fallidos de inicio de sesión
Sin mensajes ni errores ambiguos, y mensajes de log para eventos de nivel de advertencia o superior
Almacenar logs solo 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 el OWASP Top 10
No existe una solución única e infalible para mantener segura tu aplicación web frente a las amenazas del OWASP Top 10. Deberás 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 uses.
Dicho esto, un firewall puede facilitar mucho el trabajo de proteger tu aplicación web. La definición de OWASP de un WAF destaca los casos de uso comunes 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 solicitudes potencialmente maliciosas. Al usar una combinación de detección predeterminada junto con funcionalidad personalizable en soluciones como Fastly’s Next-Gen WAF, y al aprovechar las capacidades de nuestra Edge Cloud Platform, puedes obtener una sólida cobertura del OWASP Top 10.
Para obtener orientación más detallada y ejemplos reales de cómo resolver amenazas de OWASP con Fastly, puedes consultar nuestro documento técnico.





