La OWASP (Open Web Application Security Project) ha
publicado una actualización del ranking de los riesgos más importantes que
afectan a las aplicaciones web. Este documento pretende concienciar a la
industria sobre los riesgos de seguridad, en el ámbito de las aplicaciones web,
identificando y remarcando las diez
amenazas más serias a las que se exponen.
El proyecto OWASP tiene como objetivo ofrecer una metodología, de
libre acceso y utilización, que pueda ser utilizada como material de referencia
por parte de los arquitectos de software, desarrolladores, fabricantes y
profesionales de la seguridad involucrados en el diseño, desarrollo, despliegue
y verificación de la seguridad de las aplicaciones y servicios web.
Dicho ranking nace del consenso y
debate entre expertos en la materia de la seguridad en aplicaciones web. El
proyecto Top Ten comenzó a gestarse en 2003, cuando se publicó el primer
ranking. En 2004, se efectuaron cambios menores de aquella primera edición, en
2007 se liberó la segunda y la
tercera edición se publicó en 2010.
Tal y como refleja la
organización, y se hace cada vez más evidente, no se han de limitar los
esfuerzos en la erradicación o el tratamiento de las amenazas señaladas (el
número de riesgos o vulnerabilidades identificadas es de varios ordenes mayor),
sino de un plan de seguridad que comience y se alargue durante todo el ciclo de
desarrollo de una aplicación, desde su diseño inicial hasta la fase de
mantenimiento.
El objetivo principal del Top 10
es educar a los desarrolladores, diseñadores, arquitectos, gerentes, y
organizaciones; sobre las consecuencias de las vulnerabilidades de seguridad
más importantes en aplicaciones web. El Top 10 provee técnicas básicas sobre
como protegerse en estas áreas de alto riesgo y también provee orientación
sobre los pasos a seguir.
El OWASP Top 10 2013, se basa en
8 conjuntos de datos de 7 firmas especializadas en seguridad de aplicaciones,
incluyendo 4 empresas consultoras y 3 proveedores de herramientas SaaS. Estos
datos abarcan más de 500.000 vulnerabilidades a través de cientos de
organizaciones y miles de aplicaciones. Las vulnerabilidades del Top 10 son
seleccionadas y priorizadas de acuerdo a estos datos de prevalencia, en
combinación con estimaciones consensuadas de explotabilidad, detectabilidad e
impacto.
Existen cientos de problemas que pueden
afectar a la seguridad en general de una aplicación web, por lo que se
recomienda seguir la Guia
de Desarrollo OWASP y la OWASP Cheat
Sheet.
Cambios más significativos
Esta actualización profundiza
sobre una de las categorías de la versión 2010, a fin de ser más
inclusivo, sobre importantes vulnerabilidades comunes, y reordena algunos de
los demás basándose en el cambio de los datos de prevalencia.
En esta edición de 2013 se pueden
destacar los siguientes cambios respecto de la edición anterior del 2010. La perdida
de autenticación y gestión de sesiones ascendió en prevalencia (pasa del nivel de
gravedad 3 al 2). La falsificación de Peticiones en Dominios Cruzados (CSRF) disminuyó
en prevalencia (pasa del nivel 5 al nivel 8).
También se ha ampliado la categoría
8 "Falta de restricciones en accesos por URL" para darle un significado
más amplio, ahora es "Ausencia de Control de Acceso a las Funciones".
Se han fusionado y ampliado las categorías 7 y 9, para crear el nivel 6 "Exposición
de Datos Sensibles". Por último, se ha creado la categoría 9 "Uso de Componentes
con Vulnerabilidades Conocidas", antes incluido como parte del grado 6 "Defectuosa
configuración de seguridad" pero ahora posee una categoría propia debido al
crecimiento del desarrollo basado en componentes.
Top Ten 2013
La edición del 2013 presenta las
siguientes categorías:
A1 – Inyecciones
Vulnerabilidades de inyección de
código, desde SQL o comandos del sistema hasta LDAP, ocurren cuando se envían datos
no confiables a un intérprete como parte de un comando o consulta.
A2 – Pérdida de autenticación y gestión
de sesiones
El anterior número tres. Comprende
los errores y fallos en las funciones de gestión de sesiones y autenticación. Se
produce cuando las funciones de la aplicación relacionadas con la autenticación
y la gestión de sesiones no se implementan correctamente, lo que puede permitir
a los atacantes comprometer contraseñas, claves, token de sesiones, o explotar otros
problemas que podrían permitir asumir la identidad de otros usuarios.
A3 – Cross-Site Scripting (XSS)
Anteriormente en el número dos,
no por ello sigue siendo
una de las vulnerabilidades más extendidas y a la par subestimada.
A4 – Referencias directas inseguras
a objetos
Errores al exponer partes
privadas o internas de una aplicación sin control y accesibles públicamente. Ocurre cuando
un desarrollador expone al exterior una referencia a un objeto de implementación
interno, tal como un fichero, directorio, o base de datos.
A5 – Configuración de seguridad incorrecta
Más que un error en el código se
trata de la falta o mala configuración de seguridad de todo el conjunto de
elementos que comprende el despliegue de una aplicación web, desde la misma
aplicación hasta la configuración del sistema operativo o el servidor web. Es
decir, se refiere a la definición e implementación de una configuración segura para
la aplicación, marcos de trabajo, servidor de aplicación, servidor web, base de
datos y plataforma. Todas estas configuraciones deben ser definidas, implementadas
y mantenidas, ya que por lo general no son seguras por defecto. Esto incluye mantener
todo el software actualizado, incluidas las librerías de código utilizadas por la
aplicación.
A6 – Exposición de datos
sensibles
Esta categoría surge de la fusión
y ampliación de las anteriores A7 y A9. Muchas aplicaciones web no protegen adecuadamente
datos sensibles tales como números de tarjetas de crédito o credenciales de autenticación.
Los datos sensibles requieren de métodos de protección adicionales tales como el
cifrado de datos almacenados mediante técnicas criptográficas adecuadas (p.ej. manteniendo
el hash de la contraseña en vez de la propia contraseña cifrada), así como también
de precauciones especiales en el intercambio de datos con el navegador.
A7 – Ausencia de control de acceso
a funciones
Surge de la ampliación de la
anterior categoría 8, que trataba la falta de validación en el procesamiento de
URLs que podrían ser usadas para invocar recursos sin los derechos apropiados o
páginas ocultas. Ahora se refiere tanto a URLs como a los datos que se pasan a funciones
de la propia aplicación.
A8 – Falsificación de Peticiones en Dominios Cruzados o Cross-site
Request Forgery (CSRF).
Anteriormente en el puesto 5.
Vulnerabilidad consistente en el desencadenamiento de acciones legitimas por
parte un usuario autenticado, de manera
inadvertida por este último y bajo el control de un atacante.
A9 – Utilización de componentes con
vulnerabilidades conocidas
Se refiere al uso de componentes tales
como librerías, frameworks y otros módulos de software, que en muchas ocasiones
funcionan con todos los privilegios. Si se ataca un componente vulnerable esto podria
facilitar la intrusión en el servidor o una perdida de datos.
A10 – Redirecciones y reenvíos no
validados.
Errores en el tratamiento de
redirecciones y uso de datos no confiables como destino.
Desde nuestra experiencia, cuando
hacemos auditorías de aplicaciones
webs, el ranking enumera
perfectamente los hallazgos que encontramos durante los trabajos. Incluso
nos ha llamado la atención, más de una vez, acertar con el pleno completo.
Sorprende ver que la seguridad web sigue siendo asignatura pendiente de una gran
cantidad de sitios importantes con miles de visitantes al día.
Más información:
Sitio principal de OWASP
OWASP Top 10 for 2013 [PDF]
una-al-dia (19/04/2010) OWASP:
Los diez riesgos más importantes en aplicaciones web (2010)
Antonio Ropero
Twitter: @aropero