OWASP publica el Top 10 – 2017 de Riesgos de Seguridad en Aplicaciones Web
El proyecto abierto de seguridad en aplicaciones Web OWASP, ha publicado los 10 riesgos más críticos en Aplicaciones Web, edición 2017, en el que los ataques de inyección vuelven a ser el mayor riesgo de seguridad, al igual que en las dos ediciones anteriores de 2013, y 2010.
Los ataques de inyección de código, dirigidos principalmente a aplicaciones web, permiten a un ciberatacante, ejecutar comandos en una web para robar datos, modificarlos o eliminarlos, aprovechando campos destinados para otras finalidades. Esto es debido principalmente a fallos de programación, por una inexistente o insuficiente validación de los datos de entrada de las aplicaciones web, no implementada por los desarrolladores de las aplicaciones, y que son detectados y explotados por los atacantes para realizar este tipo de acciones maliciosas.
Según la empresa de seguridad Veracode, el 77% de aplicaciones tienen al menos un fallo de seguridad. Veracode, que participa en la elaboración del OWASP Top 10, afirma que cerca del 70% de las aplicaciones analizadas no pasa una auditoría de seguridad respecto de las 10 medidas del OWASP Top 10. En concreto, el fabricante afirma que en 2017 un 27,6 % de las aplicaciones analizadas son fácilmente vulnerables mediante Inyecciones SQL.
¿Qué ha cambiado en los últimos 10 años?
El escenario de amenazas para la seguridad en aplicaciones cambia constantemente, principalmente debido a la aparición de nuevas técnicas para realizar ataques web.
Entre los años 2007 a 2017 OWASP ha realizado principalmente los siguientes cambios:
- La inyección de comandos se ha mantenido en las primeras posiciones desde el 2007 del OWASP Top 10, esto es debido a la falta de validación de los datos de entrada que aún sigue siendo uno de los mayores defectos que comenten los desarrolladores de software.
- La pérdida de autenticación ha ido subiendo desde la posición 7 en 2007 a la posición 2º, manteniéndose en el top 3 desde el año 2010.
- La exposición de datos sensibles, sube tres puestos desde su aparición en el OWASP 2013.
- Aparecen 3 nuevos riesgos el “XEE”, “Insecure Deserialization” e “Insufficient Logging&Monitor”
- Se fusionan “Insecure Direct Object References” y “Missing Function Level Access Control” bajo la denominación de “Broken Access Control”
- La secuencia de comandos en Sitios cruzados (XSS), pasa de estar en primer lugar en 2007 a séptimo lugar en 2017, debido principalmente a la implementación de herramientas que evitan y protegen frente a estas vulnerabilidades, como ya se comentó en el artículo OWASP Top Ten 2013 RC: Evolución de las vulnerabilidades web.
- La deserialización insegura es una nueva vulnerabilidad propuesta por la comunidad de OWASP que aparece por primera vez en OWASP Top 10. Se trata de una vulnerabilidad que podría permitir la ejecución remota de código en servicios web.
- El uso de componentes con vulnerabilidades conocidas se mantiene en el noveno lugar con respecto al anterior ranking lo que indica que se trata de una vulnerabilidad vigente motivada en parte por el uso extendido de múltiples componentes en aplicaciones web así como el crecimiento que está teniendo IoT y las dificultades que presenta dicho modelo en cuanto a gestión de actualizaciones.
- El guardado de registros de actividades y monitorización insuficientes es la segunda de las dos nuevas vulnerabilidades introducidas en OWASP Top 10 2017.
Análisis y nuevas incorporaciones
En esta nueva edición, cabe reseñar algunos movimientos importantes. Por un lado el ascenso de tres posiciones que ha tenido la exposición de datos sensibles colocándose actualmente en el tercer lugar de la tabla. Una de las causas principales es la ausencia de cifrado o el uso de algoritmos de cifrado inadecuados. En este caso y estando la implantación obligada en los países de la UE a la vuelta de la esquina (25 de mayo de 2018), las aplicaciones web de las compañías europeas deberán hacer una esfuerzo adicional en esta materia.
Igualmente, vemos bajadas realmente importantes como pueden ser los casos de XSS y CSRF, dos clásicos del Top 10 que están en horas bajas. Las protecciones que traen incluidas en la actualidad muchos de los marcos de desarrollo de aplicaciones web así como los navegadores son grandes culpables de que nos tengamos que preocupar un poco menos por estos dos tipos de vulnerabilidades.
Una de las grandes novedades este año, es la inclusión de dos vulnerabilidades que se han elegido mediante encuesta pública donde han participado multitud de profesionales de la industria. Las dos vulnerabilidades con puntuación más elevada se incorporan a la lista de este año:
- Por un lado en el puesto número 8 se incorporó la “Insecure Deserialization” en castellano ”Deserialización insegura”, vulnerabilidad de difícil explotación. La serialización es un concepto que implica convertir datos de un formato a otro formato concreto (por ejemplo de un formato admitido a formato XML) que permita su transmisión o guardado. No aceptar datos serializados de fuentes no confiables o sólo aceptar para su serialización a datos de tipos primitivos, son dos buenas prácticas que nuestra arquitectura debería cumplir en todos los casos. Esta vulnerabilidad podría permitir la ejecución remota de esos códigos serializados.
- En el puesto 10 se incorpora el guardado de registros de actividades y monitorización insuficientes, cuyo nombre deja pocas dudas respecto al significado de esta vulnerabilidad. Se trata de una acción de vital importancia que puede no verse como una vulnerabilidad en sí, pero cuya ausencia puede provocar que la gestión de un incidente de seguridad no se realice con la agilidad deseada o que por ejemplo, una fuga de datos sea detectada con incluso años de demora.
El OWASP Top 10, es el estándar de facto para que los desarrolladores de software puedan determinar y combatir las causas que hacen que el software sea inseguro. Para la aplicación de este estándar, existen múltiples guías y herramientas para evaluar la seguridad de las aplicaciones web, que deben ser consideradas en todas las fases de desarrollo de aplicaciones.