Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + Tecnología especializada
DXST - SAST - IAST - SCA - DevSecOps
Caja blanca - Caja gris - Caja negra
Atacando Aplicaciones Web, APIs, Apps Móviles,
Cliente Servidor, Servidores, Redes, Dispositivos IoT
IoT SCI: Sistemas de Control Industrial

REQ.029 Cookies con atributos de seguridad

En el presente documento se detallan los requerimientos de seguridad relacionados al manejo de sesiones y variables de sesión de las aplicaciones. En este requerimiento se establece la importancia de utilizar cookies con atributos de seguridad, como HttpOnly o Secure.

Requisito

Las cookies de sesión de aplicaciones Web deben tener atributos de seguridad (HttpOnly, Secure).

Descripción

Cuando se cuenta con una aplicación Web que maneja sesiones, se pueden utilizar diferentes atributos para mejorar la seguridad asociada a las cookies que manejan estas sesiones, los atributos HttpOnly y Secure respectivamente previenen el robo de la cookie de sesión al denegar la visibilidad de la misma desde el navegador (a pesar de que se empleen ataques del tipo Cross Site Scripting [XSS]) y forzar el envío de la cookie solamente cuando la petición es cifrada (usando HTTPS), de esta forma se mitiga en gran medida el robo de sesiones y por consiguiente aumenta la integridad de la aplicación.

Implementación

  1. Implementar el atributo HttpOnly: Si el atributo HttpOnly es incluido en el encabezado de respuesta HTTP, la cookie no puede ser accedida usando scripts del lado del cliente. Como resultado, incluso si existe una vulnerabilidad de cross-site scripting (XSS) y un usuario accidentalmente accede al enlace que explota esta vulnerabilidad, el navegador no revelará la cookie a un tercero.

    Si un navegador no soporta HttpOnly y el sitio web intenta poner el atributo HttpOnly, dicho será ignorado por el navegador creando así una cookie tradicional accesible por script. Como resultado, la cookie (típicamente una cookie de sesión) se vuelve vulnerable a robo o modificación por un script malicioso.

  2. Implementar el atributo Secure: El atributo secure es una opción que puede ser aplicada desde el servidor de aplicación cuando se envía una nueva cookie al usuario por una respuesta HTTP. El propósito del atributo secure es prevenir que la cookies puedan visualizarse por terceros no autorizados debido a la trasmisión de la cookie en texto plano.

Excepciones

  1. Excepciones para el atributo HttpOnly: Aplicaciones web que usan JavaScript para la mayoría de sus operaciones pueden usar una técnica anti-Cross-Site-Request-Forgery (CSRF) basada en políticas de mismo origen (same-origin policy). Esta técnica consiste en establecer una cookie al iniciar sesión con un token generado aleatoriamente. El JavaScript en el lado del cliente lee el valor y lo copia en una cabecera anti CSRF cuyo valor e integridad son validados por el servidor en cada petición. La seguridad de esta técnica se basa en el supuesto que solamente JavaScript corriendo en el mismo origen tiene acceso al valor de las cookies. Todo JavaScript externo, ya sea corriendo desde un archivo malicioso o un correo no tendrá acceso a las cookies y no podrá leer su valor. De esta manera, aunque la cookie CSRF es enviada automáticamente por el navegador en cada petición, el servidor seguirá esperando un valor válido en la cabecera CSRF. Bajo este escenario, la cookie CSRF no debe de tener el atributo HttpOnly establecido, pues está diseñada para ser leída por JavaScript. Sin embargo, este control se puede violar si el sitio web deshabilita su política de mismo origen de alguna de las siguientes maneras^[8]:

    • Cabecera Access-Control-Allow-Origin con valor "*".

    • Archivo clientaccesspolicy.xml permitiendo acceso no intencionado a los controles Silverlight.

    • Archivo crossdomain.xml permitiendo acceso no intencionado a Flash.

Ataques

  1. Un atacante genera un script que es ejecutado sin conocimiento de causa por un usuario válido autenticado en la aplicación sin los atributos HTTPOnly y Secure, el script reenvía información al atacante[1],[2] conteniendo la cookie de sesión que se utiliza para robar la misma.

  2. Un atacante captura datos de una comunicación por el protocolo HTTP mediante un ataque de Man in The Middle (MiTM) interceptando solicitudes y respuestas del protocolo no cifrado y extrayendo la cookie de sesión que se utiliza para robar la misma.

Atributos

  1. Capa: Capa de Aplicación

  2. Activo: Administración de sesiones

  3. Alcance: Confidencialidad

  4. Fase: Construcción

  5. Tipo de Control: Procedimiento


Estado de los servicios - Términos de Uso