Saltar al contenido principal

Secuestro de sesión - Cómo los atacantes roban inicios de sesión

Lectura de 2 min aprox.

El secuestro de sesión (session hijacking) es un ataque en el que el atacante roba el ID de sesión de un usuario y lo suplanta para acceder a un servicio. El ID de sesión es un identificador que el servidor emite tras el inicio de sesión, y si es robado, el servicio puede utilizarse en estado autenticado sin necesidad de conocer la contraseña. Según los estudios de OWASP, la gestión inadecuada de sesiones figura como una de las principales vulnerabilidades de las aplicaciones web.

Casos de uso reales

«Durante una evaluación de vulnerabilidades, descubrimos que el ID de sesión no se regeneraba tras el inicio de sesión. Como esto supone un riesgo de ataques de fijación de sesión, hemos solicitado una corrección para emitir un nuevo ID de sesión al autenticarse correctamente.»

El flujo del robo de sesión

El usuario inicia sesión
Se emite el ID de sesión
El atacante roba el ID
Acceso suplantando la identidad

Técnicas de ataque

Entre ellas se incluyen robar el ID de sesión de las cookies mediante XSS (cross-site scripting), interceptar la comunicación de red para robar el ID de sesión y los ataques de fijación de sesión que obligan a usar un ID de sesión preparado de antemano.libros de seguridad web (Amazon) permiten aprender sobre las técnicas de ataque y las contramedidas.

Escenarios de daño concretos

Un malentendido común es que «cerrar sesión te hace seguro». En realidad, un proceso de cierre de sesión que no invalida la sesión en el servidor puede dejar válido un ID de sesión robado. Por ejemplo, si inicias sesión en la banca en línea a través de la Wi-Fi pública de una cafetería y tu ID de sesión es interceptado mediante un ataque de intermediario, el atacante puede usar esa sesión para consultar saldos o realizar transferencias. También va en aumento el «robo de cookies», en el que el malware extrae las cookies almacenadas en el navegador para que el atacante acceda en estado autenticado desde otro dispositivo.

Contramedidas

Las contramedidas básicas son usar HTTPS, configurar los atributos Secure y HttpOnly en las cookies y regenerar periódicamente el ID de sesión. Si estableces una contraseña única y robusta para cada servicio y activas la autenticación de dos factores, se requerirá autenticación adicional para las operaciones importantes incluso si una sesión es secuestrada, lo que reduce el daño.libros de seguridad para desarrollo web (Amazon) también son una referencia útil.

Términos relacionados

¿Te resultó útil este artículo?

XHatena