Fijación de sesión (Session fixation)
En seguridad de aplicaciones web, la fijación de sesión es un ataque en el que el atacante fija o averigua un identificador de sesión antes de que la víctima se autentique, y la aplicación conserva ese mismo identificador después del inicio de sesión. El atacante presenta entonces el identificador y está dentro de la sesión autenticada sin haber sabido nunca la contraseña.
La condición previa es una aplicación que acepta un identificador de sesión que no ha emitido ella, o que le da uno a un visitante anónimo y lo reutiliza en cuanto ese visitante inicia sesión. La entrega es lo que la aplicación permita: un enlace que lleva el identificador en la cadena de consulta, un subdominio capaz de escribir la cookie del dominio padre, o una cabecera de respuesta en la que el atacante pueda influir. No se roba nada en tránsito, que es lo que separa la fijación del secuestro de sesión.
El arreglo es una sola línea de comportamiento: emitir un identificador nuevo en cada cambio de privilegio, e invalidar el viejo en el servidor y no solo borrar la cookie. Aceptar identificadores desde la URL debería estar desactivado del todo.
En la práctica esto llega a un informe menos que antes, porque la mayoría de los frameworks ya rotan el identificador al iniciar sesión por defecto. Donde lo seguimos encontrando es en código de autenticación propio, en integraciones de inicio de sesión único que arrastran una sesión entre dos dominios, y en aplicaciones que rotan la cookie pero dejan viva la sesión antigua en el servidor. La evidencia es el mismo identificador antes y después de autenticarse, capturado en el registro del proxy, que es lo que entregamos como parte de cómo probamos la autenticación y el manejo de sesiones.