Considera un esempio comune di modifica dei privilegi: Amazon.
Se hai mai usato Amazon, il tuo browser ha un cookie persistente che dice ad Amazon chi sei, anche se non hai effettuato l'accesso. Quando apri il browser e accedi ad Amazon, mostrerà il tuo nome in alto a destra e avrai la possibilità di aggiungere oggetti al tuo carrello. Potresti chiamare questa autenticazione di livello 1.
Il cookie di autenticazione di livello 1 ha una durata molto lunga (potrebbe essere infinita) ed è persistente, il che significa che chiunque abbia accesso al tuo negozio di cookie potrebbe rubarlo.
Ora, diciamo che hai aggiunto alcuni articoli al tuo carrello e desideri completare un acquisto. A questo punto, Amazon richiederà l'inserimento della password. Una volta che hai fatto, hai privilegi aggiuntivi. Potresti chiamare questa autenticazione di livello 2.
Il cookie di autenticazione di livello 2 è molto più difficile da rubare. È un cookie di sessione solo http e si spegne quando chiudi il browser. E funziona solo per circa 30 minuti, credo.
Nota: è impossibile per il server dire se un cookie è http-only o se è un cookie di sessione, perché un browser mostra solo il valore del cookie stesso, non i suoi attributi. Quindi dal punto di vista del server web, tutto dipende dal valore del cookie stesso.
Ora immagina che Amazon non si sia preso la briga di cambiare l'ID di sessione al momento dell'accesso. Invece, mantiene lo stesso ID di sessione, ma memorizza una variabile di sessione che indica il privilegio elevato. Ecco un attacco plausibile:
- Hacker ruba il tuo cookie persistente, che gli darà solo i privilegi di livello 1. No biggie, giusto?
- Il tuo browser ha una copia esatta di questo cookie.
- Ad un certo punto, accedi ad Amazon, decidi di completare un acquisto e accedi.
- Il cookie ora ha i privilegi di livello 2.
- L'hacker ha colpito occasionalmente il server Amazon con questo cookie per vedere se è stato effettuato l'accesso. Una volta che hai raggiunto il livello 2, puoi fare tutto ciò che puoi, incluso spedire un oggetto o cambiare la tua password.
Se l'identificativo di sessione è cambiato nel passaggio 3, questo attacco verrebbe contrastato.