Entrar en sitios web o portales forma parte de la rutina diaria de muchas personas. Cada vez que se entra en uno de estos sitios web, se crea una sesión. De la forma más sencilla posible, una sesión se define como la comunicación de dos sistemas que tiene lugar. Ésta permanecerá activa hasta que el usuario finalice la comunicación. Esto se puede referir a una sesión iniciada por el usuario.
El inicio de una sesión es vital para que se produzca cualquier comunicación a través de Internet. Dicho esto, existe una amenaza constante de secuestro de sesión. Este artículo hablará de lo que es realmente el secuestro de sesión, cómo ocurre y qué se puede hacer para evitarlo.
¿Qué es el secuestro de sesión?
El secuestro de sesión es como el término sugiere. Un usuario en una sesión puede ser secuestrado por un atacante y perder el control de la sesión por completo, donde sus datos personales pueden ser fácilmente robados. Después de que un usuario inicie una sesión, como por ejemplo al iniciar sesión en un sitio web bancario, un atacante puede secuestrar la sesión.
Para secuestrar una sesión, el atacante necesita tener un conocimiento sustancial de la sesión de cookies del usuario. Aunque cualquier sesión puede ser hackeada, es más común en las sesiones del navegador en las aplicaciones web.
¿Cómo se secuestra una sesión?
Los atacantes tienen varias opciones para secuestrar la sesión de un usuario, dependiendo de la posición y el vector del atacante. Estas son algunas de las formas en que se puede secuestrar una sesión:
- Cross-site scripting (XSS): Los atacantes aprovechan las vulnerabilidades de los servidores o aplicaciones para inyectar scripts de Java del lado del cliente en las páginas web de los usuarios, haciendo que su navegador ejecute código arbitrario cuando carga una página comprometida. Si el servidor no establece el HTTPOnly en las cookies de sesión, los scripts inyectados pueden obtener acceso a su clave de sesión, proporcionando a los atacantes la información necesaria para el secuestro de la sesión.
- Secuestro del lado de la sesión: Utilizando el sniffing de paquetes, un atacante puede monitorizar el tráfico dentro de la red e interceptar las cookies de sesión del usuario después de que éste se haya autenticado. Si el sitio web toma la ruta barata de utilizar el cifrado SSL/TLS sólo para sus páginas de inicio de sesión, el atacante puede utilizar la clave de sesión que ha obtenido del rastreo de paquetes para secuestrar la sesión del usuario y hacerse pasar por el ususario para realizar acciones en la aplicación web. Esto suele ocurrir en el caso de un Hotspot WiFi no seguro para poder acceder a la red, monitorizar el tráfico y configurar sus propios puntos de acceso para realizar el ataque.
- Fijación de sesión: Los atacantes suministran una clave de sesión y falsifican al usuario para que acceda a un servidor vulnerable.
La amenaza del secuestro de sesión existe debido al protocolo sin estado. Estos protocolos tienen limitaciones, por lo que son vulnerables a los ataques.
El papel del cifrado
Para proteger la sesión de un usuario de ser secuestrada, las organizaciones pueden incorporar ciertos cifrados. Estos cifrados son necesarios para proteger las sesiones de sus consumidores y tienen la forma de certificados.
- SSL: Las siglas SSL significa Secure Sockets Layer y, en pocas palabras, es la tecnología estándar para mantener una conexión a Internet segura y salvaguardar cualquier dato sensible que se envíe entre dos sistemas, impidiendo que los delincuentes lean y modifiquen cualquier información transferida, incluyendo posibles datos personales.
- TLS: TLS (Transport Layer Security) no es más que una versión actualizada y más segura de SSL.
Ejemplo de secuestro de sesión
Un ataque de sesión se aprovecha de las fugas de datos en la relación de compresión de las peticiones TLS. Esto les da acceso a las cookies de inicio de sesión de los usuarios, que pueden ser utilizadas para secuestrar la sesión de los usuarios. Uno de estos incidentes se produjo en septiembre de 2012, cuando una organización de secuestradores de sesiones llamada CRIME vulneró el sitio web de una organización.
CRIME terminó secuestrando la sesión descifrando las cookies HTTPS establecidas por el sitio web y se autenticó como usuario por fuerza bruta, desviando una cantidad considerable de datos.
Cómo prevenir el secuestro de sesión
Para protegerse de un secuestro de sesión, es necesario reforzar los mecanismos de las aplicaciones web. Esto se puede hacer a través de la comunicación y la gestión de la sesión. A continuación se presentan algunas formas de reducir el riesgo de secuestro de sesión:
- HTTPS: El uso de HTTPS asegura que hay encriptación SSL/TLS en todo el tráfico de la sesión. Los atacantes no podrán interceptar el ID de la sesión en texto plano, incluso si el tráfico de la víctima fue monitoreado. Se aconseja utilizar HSTS (HTTP Strict Transport Security) para garantizar un cifrado completo.
- HTTPOnly: Configurar un atributo HTTPOnly impide el acceso a las cookies almacenadas desde los scripts del lado del cliente. Esto puede evitar que los atacantes desplieguen ataques XSS que se basan en la inyección de scripts Java en el navegador.
- Actualizaciones del sistema: Instale un software antivirus de confianza que pueda detectar fácilmente los virus y protegerlo de cualquier tipo de malware (incluido el que los atacantes utilizan para realizar el secuestro de sesión). Mantenga sus sistemas al día configurando actualizaciones automáticas en todos sus dispositivos.
- Gestión de la sesión: Para ofrecer suficiente seguridad, los operadores de sitios web pueden incorporar marcos web, en lugar de inventar sus propios sistemas de gestión de sesiones.
- Clave de sesión: Se aconseja regenerar las claves de sesión después de su autenticación inicial. Esto hace que el ID de sesión extraído por los atacantes sea inútil, ya que el ID cambia inmediatamente después de la autenticación.
- Verificación de la identidad: Realice una verificación adicional de la identidad del usuario más allá de la clave de sesión. Esto incluye la comprobación de la dirección IP habitual del usuario o los patrones de uso de las aplicaciones.
- Hotspot público: Evite el uso de WiFi públicas para proteger la integridad de las sesiones y opta por redes inalámbricas seguras.
- VPN: Utilice una red privada virtual (VPN) para estar a salvo de los secuestradores de sesiones. Una VPN enmascara su IP y mantiene su sesión protegida creando un "túnel privado" a través del cual todas sus actividades en línea estarán encriptadas.
- Estafa de phishing: Evite caer en ataques de phishing. Sólo haga clic en los enlaces de un correo electrónico que haya verificado que ha sido enviado por un remitente legítimo.
Conclusión
El secuestro de sesiones es una amenaza real y los usuarios están en constante peligro de ser comprometidos. Hay varias formas en las que un gestor de sitios web puede mitigar estos riesgos mediante la implementación de protocolos de seguridad. Estos protocolos de seguridad implican principalmente un cifrado profundo dentro de las aplicaciones web completas para cerrar todos los puntos de entrada para que los atacantes secuestren la sesión del usuario.
Dado que los datos aumentan enormemente en línea y que cada vez más personas utilizan la web a diario, es primordial que las organizaciones hagan que sus sitios web sean seguros. No hacerlo podría acarrear fuertes multas en virtud de la normativa mundial sobre privacidad de datos.
Nota: Este artículo del blog ha sido escrito por un colaborador invitado con el fin de ofrecer una mayor variedad de contenidos a nuestros lectores. Las opiniones expresadas en este artículo de autor invitado son únicamente las del colaborador y no reflejan necesariamente las de GlobalSign.