OWASP, de Open Web Application Security Project, es una organización sin ánimo de lucro dedicada al estudio de las amenazas de seguridad que sufre el software que se desarrolla en la actualidad. Además de identificar cuáles son estas amenazas, OWASP toma como tarea el compendio de las técnicas y patrones más recomendables para ayudar al programador a evitarlas.
OWASP ordena las amenazas contra la seguridad en una lista de diez puntos, el OWASP Top Ten. Esta lista se confecciona procesando información de proyectos reales realizándose esta labor de forma continua, cambiándose la lista cuando procede. En la actualidad la lista data de 2013, y la anterior de 2010. OWASP planea actualizarla para finales del año 2016 o comienzos del 2017.
La lista actualmente contiene los siguientes riesgos de seguridad, ordenados desde el que tiene el mayor índice de ocurrencia o importancia, al menor:
A1 – Inyección: los datos de entrada a la aplicación no son verificados antes de llegar a un intérprete que puede llegar a ejecutar órdenes dañinas, como por ejemplo la inyección de SQL.
A2 – Pérdida de Autenticación y Gestión de Sesiones: gestión incorrecta de contraseñas y sesiones de usuarios que permiten a los atacantes asumir la identidad.
A3 – Secuencia de Comandos en Sitios Cruzados (XSS): datos sin verificar introducidos en la aplicación son reflejados en un navegador en forma de código Javascript malicioso.
A4 – Referencia Directa Insegura a Objetos: claves asociadas a registros en la base de datos, nombres de ficheros o similar son mostrados a los usuarios y los atacantes pueden acceder a esa información sin autorización.
A5 – Configuración de Seguridad Incorrecta: cuando la vulnerabilidad no se encuentra en el código de la aplicación sino en el entorno de ejecución, como por ejemplo el servidor o el gestor de bases de datos.
A6 – Exposición de datos sensibles: la aplicación no encripta datos vitales, o los intercambia con el navegador de manera insegura.
A7 – Ausencia de Control de Acceso a Funciones: la aplicación tiene implementado un control de acceso que después de permitir el acceso a los usuarios no comprueba que estos tengan permiso para realizar ciertas operaciones delicadas.
A8 – Falsificación de Peticiones en Sitios Cruzados (CSRF): la aplicación permite que los atacantes fuercen al navegador a enviar peticiones nocivas sin el conocimiento del usuario.
A9 – Utilización de componentes con vulnerabilidades conocidas: la aplicación utiliza librerías o cualquier otro software de terceros que presenta vulnerabilidades.
A10 – Redirecciones y reenvíos no validados: sin las comprobaciones necesarias, la aplicación puede ser forzada para redirigir al usuario a sitios de phishing o malware.
Cada una de estas vulnerabilidades viene acompañada de documentación con las soluciones preventivas más recomendables que pueden aplicarse, incluso desarrolladas para distintos lenguajes de programación cuando el problema está relacionado con el código de la aplicación.
Es absolutamente necesario que los programadores conozcan los riesgos que corren las aplicaciones y cuáles son los errores más comunes relativos a la seguridad a la hora de programarlas. Es sorprendente cómo la totalidad de las vulnerabilidades de la lista pueden evitarse con sencillas prácticas cuando estas se aplican desde el comienzo del desarrollo, y no siempre son conocidas por el equipo o parte de él.
OWASP se presenta como una guía excelente para el desarrollo de aplicaciones web seguras. Utilizarlo como una herramienta de apoyo facilita sobremanera la tarea del equipo de desarrollo, en cuanto a la implementación de la seguridad se refiere.