Desarrollo basado en plataformas Unidad 1 Clase 1 Modelo de seguridad web
Autor: Ing. Alejandro Loor Navia, Mg. I.S
UNIDAD 1: INTRODUCCIÓN A REDES Y SEGURIDAD
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas TEMAS
1.- Modelo de seguridad web
2.- Gestión de sesiones, la autenticación
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas INTRODUCCIÓN A LA SEGURIDAD EN APLICACIONES WEB En la actualidad el crecimiento de internet ha impactado directamente en la seguridad de la información. Es común escuchar que uno de los puntos críticos de la seguridad en internet son las herramientas que interactúan de forma directa con los usuarios, es decir servidores, aplicaciones, lenguajes de programación; sin embargo debemos saber que muchos de estos problemas se deben a las malas prácticas de los programadores.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas Los objetivos de seguridad a alcanzar en los sistemas de información y comunicaciones TIC pasan por: » Identificar a las personas que acceden a la información » Autenticar a las personas que acceden a la información. » Controlar el acceso. » Proporcionar confidencialidad. » Proporcionar integridad. » Mantener la disponibilidad. » No repudio. Proporcionar la prueba de que una determinada transmisión o recepción ha sido realizada. » Trazabilidad. Proporcionar los controles que determinen que en todo momento se podrá determinar quién hizo qué y en qué momento.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas En el contexto de la seguridad del software las vulnerabilidades son defectos o descuidos específicos en una parte del software. Estos descuidos permiten que los atacantes hagan algo malicioso o que alteren información sensible o que interrumpan o destruyan un sistema o tomar el control de un sistema informático o de un programa. Se puede afirmar que para que un ataque aproveche una vulnerabilidad (debilidad en el diseño, código, configuración, protección online de una aplicación) y se materialice en una aplicación generando un impacto de negocio para la organización es necesario que intervengan una serie de factores (ver figura siguiente):
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas » Agente o amenaza: es la persona que realiza el ataque. » Vectores de ataque: medio del que se sirve para llevar a cabo el ataque. » Debilidad: vulnerabilidad de seguridad. » Ausencia o fallo en el control. » Impacto en algún activo de los sistemas de información de la organización. » Impacto en el negocio de la organización.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas GESTIÓN DE SESIONES, LA AUTENTICACIÓN Una sesión es un mecanismo de programación de las tecnologías de web scripting que permite conservar información sobre un usuario al pasar de una página a otra. A diferencia de una cookie, los datos asociados a una sesión se almacenan en el servidor y nunca en el cliente. El manejo de la sesión es uno de los aspectos críticos de la seguridad WEB. Los objetivos principales son: Los usuarios autenticados tengan una asociación con sus sesiones robusta y criptográficamente segura. Se hagan cumplir los controles de autorización. Se prevengan los típicos ataques web, tales como la reutilización, falsificación e intercepción de sesiones.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas Se detectan las siguientes vulnerabilidades significativas. Fijación de sesión que intenta explotar la vulnerabilidad de un sistema que permite a una persona fijar el identificador de sesión de otra persona. La mayoría de ataques de fijación del período de sesiones están basados en la web, y la mayoría depende de los identificadores de sesión que han sido aceptados de URL o datos POST. Identificador de la sesión vulnerable, si no se reserva un tamaño adecuado, mediante técnicas de fuerza bruta el atacante puede conocer el identificador de una sesión autenticada y por lo tanto hacerse con el control de la sesión. Manejo de la información de sesión errónea, ya sea por estar en un espacio compartido o mal encriptado, el atacante puede obtener datos de la sesión de otro usuario.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas PAUTAS
1.- Evitar generar sesiones de forma permisiva
Es necesario controlar a quien se emite un identificador de sesión, se puede permitir que un usuario malintencionado suplante una identidad. Se recomienda considerar lo siguiente para minimizar esta problemática: Cuando inicie un nuevo objeto de sesión para un usuario, asegúrese que se encuentra “fuera del sistema” y no le haya sido otorgado ningún rol. Asegúrese que cada página protegida o acción controle el estado de autenticación y autorización antes de realizar cualquier cantidad significativa de trabajo, incluyendo la generación de contenido. Asegúrese que todas las páginas desprotegidas utilicen la menor cantidad de recursos para prevenir un ataque de negación de servicio, y no facilite la fuga de información de la parte protegida de la aplicación.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas 2.- Proteger las variables de sesión En los casos de un servidor web compartido, es importante seguir las siguientes recomendaciones: En la medida de lo posible asegurar que los datos de sesión, si están almacenados en disco, no sean accesibles. Asegúrese que el servidor de aplicaciones sea configurado para usar áreas de ficheros temporales por cliente / aplicación. Si esto no es posible, los datos de sesión deben ser cifrados o contener solo información no sensible.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas 3.- Manejo de las credenciales y página en formularios Las credenciales específicas de páginas pueden ser usadas en conjunto con credenciales específicas de sesión para proveer una medida de autenticidad cuando se manejan solicitudes de clientes. Utilizándolas en conjunto con mecanismos de seguridad en la capa de transporte, las credenciales de páginas pueden ayudar a asegurar que el cliente del otro lado de la sesión es de hecho el mismo cliente que ha solicitado la última página en una determinada sesión. Las credenciales de páginas son frecuentemente guardadas en cookies o cadenas de consulta y deben ser completamente aleatorias. Para mejorar este aspecto se recomienda seguir las siguientes recomendaciones: Incorpore un campo oculto con un número aleatorio en la página o formulario criptográficamente seguro. Elimine este número oculto de la lista activa.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas 4.- Usar algoritmos de encriptación robustos para las credenciales de sesión Si un manejador de sesión emite credenciales que son predecibles, un atacante no necesita capturar las variables de sesión de los usuarios remotos, pueden simplemente adivinar y probablemente encuentre una víctima desafortunada. Las credenciales de sesión deberían ser únicas, no predecibles, y resistentes a ingeniería inversa. Se recomienda seguir las siguientes recomendaciones: Generar la credencial en base a un origen aleatorio (como un generador aleatorio de números, Yarrow, EGADS, etc.). Las credenciales de sesión deben estar relacionadas de alguna manera con una instancia de cliente HTTP específica (identificador de sesión y dirección IP) para prevenir ataques de secuestro y reutilización de sesiones.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas 5.- Controlar la desconexión de la sesión Hay que asegurar que las sesiones tienen un tiempo de expiración adecuado. Las credenciales de sesión que no expiran en el servidor HTTP pueden brindar a un atacante tiempo ilimitado para adivinar o utilizar fuerza bruta en una credencial de sesión valida. Si una cookie de usuario es capturada o atacada por fuerza bruta, el atacante puede usar estas credenciales “estáticas” de sesión para obtener acceso a las cuentas web de dicho usuario.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas 6.- Regenerar credenciales Asegurar que existen un tiempo determinado para la regeneración de credenciales. Para reducir el riesgo de secuestro de sesión y ataques de fuerza bruta, el servidor HTTP puede sin problemas expirar y regenerar las credenciales. Esto acorta la ventana de oportunidad para ataques de este tipo. Se recomienda que se regeneren las credenciales: Antes de cada transacción significativa. Después de una cierta cantidad de transacciones. Después de un determinado tiempo, por ejemplo 20 minutos.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas 7.- Secuestro de sesión Cuando un atacante intercepta o crea una credencial de sesión valida en el servidor, pueden hacerse pasar por otro usuario. El secuestro de sesión puede ser mitigado parcialmente utilizando controles adecuados de anti-secuestro en la aplicación. El nivel de estos controles debería estar influenciado por el riesgo de la organización o los datos del cliente. El tipo más fácil de aplicación para secuestrar son aquellas que utilizan credenciales de sesión basadas en la URL, particularmente aquellas que no expiran. Para atacar estas aplicaciones, simplemente es necesario abrir el historial del navegador y hacer clic en la URL de la aplicación web. Se recomienda seguir lo siguiente: Provea un método a los usuarios para desconectarse de la aplicación. La desconexión debería limpiar todos los estados de sesión y remover o invalidar cualquier cookie residual. Establezca periodos cortos de tiempo para cookies persistentes, no mayor a un día o bien no utilice cookies persistentes. No guarde credenciales de sesión en una URL u otro método trivial de almacenaje.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas 8.- Autenticación de la sesión Uno de los errores más comunes es no verificar la autorización previamente a ejecutar una función restringida o acceder información. Es necesario comprobar que el usuario conectado tenga la autorización necesaria para acceder, actualizar o eliminar información. 9.- Validar la sesión Las variables de sesión deben ser validadas para asegurar que tienen el formato adecuado, no contienen caracteres inesperados, y que son válidas en la tabla de sesiones activas. Es necesario comprobar que el usuario conectado tenga la autorización necesaria para acceder, actualizar o eliminar información.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas 10.- Evitar identificadores de sesión que sean cortos Es recomendable asegurar que los identificadores de sesión tengan una longitud de al menos 128 bits. Si un atacante puede adivinar o robar la identificación de una sesión, entonces puede ser capaz hacerse cargo de la sesión del usuario (secuestro de sesión). El número de posibles identificadores de sesión aumenta con una mayor longitud del campo identificación de la sesión, por lo que es más difícil de adivinar o robar una sesión ID. Se recomienda que los identificadores de sesión deban de ser de al menos 128 bits de longitud para evitar ataques de fuerza bruta sobre las sesiones. Un identificador de sesión más corto deja la aplicación abierta ataques de fuerza bruta sobre la sesión.
Facultad de Ciencias Informáticas
Desarrollo basado en plataformas No dejes de leer… OTRAS RECOMENDACIONES DE LA OWASP (página 9 compendio)