RESUMEN
Entre las diversas facetas de la ciberseguridad, la seguridad del software desempeña un papel crucial. Esto requiere la evaluación de la seguridad de los programas y aplicaciones web expuestas al mundo externo y, en consecuencia, los posibles objetivos de ataques como inyecciones de SQL, secuencias de comandos entre sitios, violaciones de límites e inyecciones de comandos.
El grupo AZCUBA, se desarrollan varios sistemas informáticos que requieren de una correcta y continua evaluación para garantizar su seguridad. A raíz de esto surge la necesidad de utilizar algún patrón o arquitectura que nos brindara la infraestructura para determinar y combatir las causas que hacen que el software sea inseguro.
El Proyecto Abierto de Seguridad en Aplicaciones Web (OWASP por sus siglas en inglés) es una comunidad abierta dedicada a permitir que las organizaciones desarrollen, adquieran y mantengan aplicaciones y APIs en las que se pueda confiar. OWASP brinda herramientas, estándares, libros, presentaciones, investigaciones, entre otros materiales que apoyen el proceso de garantizar la seguridad del producto final.
ABSTRACT
Among the various facets of cybersecurity, software security plays a crucial role. This requires the evaluation of the security of the programs and web applications exposed to the external world and, consequently, the possible targets of attacks such as SQL injections, cross-site scripts, boundary violations and command injections.
The AZCUBA group, develops several computer systems that require a correct and continuous evaluation to guarantee their security. Because of this, there is a need to use some pattern or architecture that will provide us with the infrastructure to determine and combat the causes that make software unsafe.
The Open Web Applications Security Project (OWASP) is an open community dedicated to enabling organizations to develop, acquire and maintain applications and APIs that can be trusted. OWASP provides tools, standards, books, presentations, research, among other materials that support the process of ensuring the safety of the final product.
INTRODUCCIÓN
OWASP (Open Web Application Security Project) es una metodología de seguridad de auditoría web, abierta y colaborativa, orientada al análisis de seguridad de aplicaciones Web, y usada como referente en auditorías de seguridad. La comunidad está formada por empresas, organizaciones educativas y particulares de todo el mundo.
En OWASP, encontrará de forma abierta y gratuita:
- Herramientas y estándares de seguridad en aplicaciones.
- Libros completos de revisiones de seguridad en aplicaciones, desarrollo de código fuente seguro y revisiones de seguridad en código fuente.
- Presentaciones y videos.
- Hojas de trucos en varios temas comunes.
- Controles de seguridad estándar y bibliotecas.
- Investigaciones vanguardias.
- Numerosas conferencias alrededor del mundo.
Todas las herramientas de OWASP, documentos, videos, presentaciones y capítulos son gratuitos y abiertos a cualquier interesado en mejorar la seguridad en aplicaciones.
Entre todas las herramientas que brinda la metodología se encuentra el OWASP Guide Project, una guía para el analista de seguridad donde se establecen los principales controles a auditar en cualquier aplicación web. Estos controles se pueden agrupar entre las siguientes categorías:
- Recopilación de información: Pruebas para obtener la mayor cantidad de información posible de la aplicación/web que sirvan posteriormente para obtener información sensible o realizar ataques que vulneren la seguridad del sitio.
- Configuración y despliegue: Controles de seguridad en la configuración del servidor de la aplicación, la red, conexiones a la web, etc.
- Gestión de la Identidad: Controles de seguridad en la definición de roles, usuarios, numeración de cuentas y políticas de acceso en la aplicación/web.
- Autenticación: Controles de seguridad relacionado con el acceso a la aplicación/web como las contraseñas.
- Autorización: Controles de seguridad para probar las posibles escaladas de privilegios o evasión de métodos de autorización en el portal.
- Control de la sesión: Controles de seguridad relacionados con las cookies y tiempos de sesión.
- Validación de entrada de datos: Controles de seguridad en todas las entradas de información que disponga la aplicación/web (formularios de contacto, búsquedas, registros de información).
- Manejo de errores: Seguridad y correcto funcionamiento de los mensajes de error que muestra la aplicación.
- Criptografía: Controles para probar la seguridad y robustez de los mecanismos de cifrado que implemente la aplicación/web.
- Lógica de la aplicación: Controles de comportamiento de la aplicación frente a usos inesperados que pueden ocasionar brechas de seguridad.
- Pruebas de cliente: Todas las pruebas de seguridad realizadas desde el punto de vista del usuario.
Dichos controles están enfocados en combatir las principales vulnerabilidades que OWASP agrupa en su TOP 10, ver Imagen 1
A continuación, se detallan cada una de ellas:
A1:2017-Inyecciones
Dentro de esta categoría se engloban las vulnerabilidades que permiten la inyección de código en herramientas como SQL, NoSQL, OS o LDAP, lo que permite a los servidores interpretar una cadena como si fuese código, pudiendo acceder a la base de datos sin autorización.
A2:2017-Ruptura de autenticación
Fallos en las implementaciones de inicio o gestión de sesión que permite a los atacantes hacerse con contraseñas, claves o cualquier otra información para autenticarse en un sistema, temporalmente o de forma permanente.
A3:2017-Información sensible expuesta
Debido a fallos en la implementación de distintas APIs, muchas veces no se protege correctamente la información sensible, lo que permite a piratas informáticos hacerse, por ejemplo, con datos personales, bancarios o de salud de los usuarios.
A4:2017-Vulnerabilidad XXE
Procesadores XLM mal configurados pueden procesar ciertas referencias como si no se tratasen de entradas XML, lo que puede permitir revelar ficheros y recursos ocultos, e incluso ejecutar código o causar un ataque DoS.
A5:2017-Ruptura de control de acceso
Errores en la configuración de los sistemas de control de acceso, pueden permitir a un atacante acceder a recursos y archivos para los que no debería tener permiso.
A6:2017-Desconfiguración de seguridad
Aquí se engloba todo tipo de fallos relacionados con la configuración de todo tipo de sistemas de seguridad, desde las conexiones HTTPS hasta las aplicaciones de seguridad de cualquier sistema o servidor.
A7:2017-Cross-Site Scripting (XSS)
Todo tipo de ataques XSS que se originan cuando una web incluye datos no validados para ejecutar algún script peligroso desde una web que supuestamente es de confianza, permitiendo así que la web en cuestión ejecute código en el equipo de la víctima.
A8:2017-Fallos en la serialización
Fallos en la serialización que pueden permitir la ejecución de código directamente en la memoria.
A9:2017-Uso de componentes vulnerables
Como su nombre indica, en esta categoría se recogen todos los usos de librerías, frameworks y otros recursos de software que tienen vulnerabilidades, por lo que al utilizarlos en una plataforma o un proyecto, automáticamente se vuelve vulnerable, quedando en peligro a través de estos recursos.
A10:2017-Logs y monitorización insuficiente
Debido a la falta de monitorización, la mayoría de las veces se tarda hasta 200 días en detectar una vulnerabilidad en un software o una plataforma web, tiempo que se podría reducir notablemente tan solo configurando mayores controles, mejorando la monitorización y con más registros a estas plataformas.
Para cada una de las vulnerabilidades o riesgos agrupados en el TOP 10, se proporciona información genérica sobre la probabilidad y el impacto técnico utilizando un esquema de evaluación, basado en la Metodología de Evaluación de Riesgos de OWASP.
Dicha metodología permite estimar la gravedad de todos los riesgos e informa sobre qué hacer con respecto a estos. Además, este enfoque permite evaluar los riesgos, garantizando la prioridad de los mismos según su gravedad.
CONCLUSIONES
Se propone aplicar la metodología OWASP en el proceso de desarrollo de software para combatir y prevenir los riesgos que se puedan presentar en las aplicaciones que se desarrollan, minimizando los daños que estos puedan ocasionar y detectando a tiempo posibles ataques, que se puedan corregir o parchear en el menor tiempo posible.