Considere un ejemplo común de cambio de privilegios: Amazon.
Si alguna vez ha usado Amazon, su navegador tiene una cookie persistente que le dice a Amazon quién es usted, incluso si no ha iniciado sesión. Cuando abre el navegador y navega a Amazon, mostrará su nombre en la parte superior derecha y tendrá la posibilidad de agregar artículos a su carrito. Puede llamar a esta autenticación de nivel 1.
La cookie de autenticación de nivel 1 tiene una vida útil muy larga (puede ser infinita) y es persistente, lo que significa que cualquier persona con acceso a su tienda de cookies podría robarla.
Ahora, supongamos que ha agregado algunos artículos a su carrito y desea completar una compra. En este punto, Amazon requerirá que ingrese su contraseña. Una vez que lo hayas hecho, tendrás privilegios adicionales. Puede llamar a esta autenticación de nivel 2.
La cookie de autenticación de nivel 2 es mucho más difícil de robar. Es una cookie de sesión solo para http y desaparece al cerrar el navegador. Y creo que solo funciona durante unos 30 minutos,
Nota: es imposible para el servidor saber si una cookie es solo de http o si es una cookie de sesión, porque un navegador solo presenta el valor de la cookie en sí, no sus atributos. Entonces, desde la perspectiva del servidor web, todo depende del valor de las cookies en sí.
Ahora imagine que Amazon no se molestó en cambiar el ID de sesión cuando inicia sesión. En su lugar, mantiene el mismo ID de sesión, pero almacena una variable de sesión que indica el privilegio elevado. Aquí hay un ataque plausible:
- Hacker roba su cookie persistente, lo que solo le otorgará privilegios de nivel 1. No hay problema, ¿verdad?
- Su navegador tiene una copia exacta de esta cookie.
- En algún momento, navega a Amazon, decide completar una compra e inicia sesión.
- La cookie ahora tiene privilegios de nivel 2.
- Hacker ha estado golpeando el servidor de Amazon con esta cookie de vez en cuando para ver si ha iniciado sesión. Una vez que vea que ha subido al nivel 2, puede hacer todo lo que pueda, incluso enviándose un elemento o cambiando su contraseña.
Si el identificador de sesión cambió en el paso 3, este ataque se frustraría.