Gran parte delle discussioni sulla vulnerabilità di BREACH riguardano il furto di token CSRF basati su sessioni. Ma se riesci a rubare un token basato sulla sessione, potresti anche rubare il token di sessione stesso? Ovviamente ci sono alcuni punti più sottili dell'attacco BREACH che non capisco:)
Sono specificamente interessato a Django. In tutte le richieste per le quali il browser invia un cookie csrftoken
, il browser invia anche un cookie sessionid
.
Modifica :
Se la mia nuova comprensione è corretta, allora la risposta è banalmente NO. Il documento BREACH dice:
To be vulnerable to this side-channel, a web app must: (1) Be served from a server that uses HTTP-level compression, AND (2) Reflect user-input in HTTP response bodies, AND (3) Reflect a secret (such as a CSRF token) in HTTP response bodies.
Do (2) e (3) si riferiscono alla stessa cosa? Cioè, l'attacco è possibile solo se l'input dell'utente ripetuto nel corpo della risposta HTTP è LA STESSA come il segreto che stai cercando di rubare?
Se è corretto, allora ha senso.
Puoi rubare un token CSRF, perché è immesso dall'utente (generalmente tramite un modulo POST param o cookie), E può essere ripetuto di nuovo nella risposta (sia come input nascosto a un modulo, sia come cookie ), Ed è il segreto che stai cercando di rubare.
Non puoi rubare un token di sessione, perché l'utente non può alterare l'output basato su quell'input. Voglio dire, certo, l'utente può inviare un cookie di sessione alterato, ma il server (si spera) non ripeterà mai quel token di sessione non valido nella risposta.