Quando si invia un cookie al server, il browser non restituisce il flag "sicuro": il server non può verificare se il cookie inviato proviene effettivamente dall'origine "sicura" ( link ). Potrebbe invece provenire dall'origine non sicura corrispondente ( link ). Inoltre un malintenzionato può utilizzare MITM per sovrascrivere qualsiasi cookie utilizzando l'origine non sicura: questo cookie iniettato verrà inviato dal browser anche all'origine protetta.
Quindi un utente malintenzionato potrebbe utilizzare un MITM per disconnettere qualcuno da qualsiasi sito Web HTTPs:
- Si collega al sito link di B's (il sito potrebbe essere un sito Web HTTPS completo senza alcun sito web http: // corrispondente) e ottenere un "sicuro" "cookie;
- Bob usa MITM per iniettare un
<img src="http://example.com">
(questositoWebnondeveesistereaffattocomespiegatodiseguito)inqualsiasialtrositoWebHTTPcheAlicestavisitando; - IlbrowserdiAlicerecuperal'immaginenel
link ; - Bob forgia una risposta (il sito collegamento potrebbe non esistere affatto) e reimposta il cookie di sessione su qualsiasi valore;
- Alice è disconnessa example.com.
Blocco sessione
Utilizzando una leggera variazione, Bob potrebbe creare un account utente falso su link , accedere a esso, ottenere l'ID di sessione e impostarlo utilizzando lo stesso tecnica sul browser di Alice. In questo modo, Alice potrebbe essere ingannata nell'invio di informazioni private sul falso account utente. Bob può quindi accedere utilizzando questo account falso per ottenere le informazioni private di Alice:
- Bob crea un account su link con accesso;
- Alice accede al link
- Bob accede al link utilizzando il suo account falso e ottiene un ID di sessione per questo account falso;
- Bob MITM a
<img src="https://example.com"/>
suqualsiasisitoWebHTTPcheAlicestavisitando; - IlbrowserdiAlicerecuperal'immaginenel
link ; - Bob forgia la risposta e imposta un cookie utilizzando il suo ID di sessione;
- La successiva richiesta di Alice sul link sta infatti utilizzando l'account falso ma potrebbe non essere notata a meno che non verifichi il suo accesso su ogni pagina;
- Alice invia alcuni dati privati sul sito web (aggiunge un segnalibro, effettua una richiesta di motore di ricerca, carica alcune foto ...);
- Bob accede utilizzando l'account falso e recupera i dati privati di Alice.
C'è qualche ragione per cui non funziona? C'è un modo per evitarlo? Questo attacco ha un nome? C'è qualche riferimento o discussione disponibile su questo (OWASP, documenti di sicurezza ...)? Questa vulnerabilità è stata utilizzata nella pratica? C'è qualche soluzione / piano per aggirarlo aggiungendo funzionalità ai browser (forse qualche nuova intestazione del cookie per i cookie per-origine)?
Questo è leggermente discusso in RFC 6265 sezione 8.6 "Debole integrità".
Quello che sto descrivendo è meglio descritto dal documento "Difese robuste per la falsificazione di richieste tra siti" 2 come" sovrascrittura dei cookie "(citato da fatfredyy).
Possibili soluzioni
-
Usa HSTS con includeSubDomains
Non supportato molto bene (browser più vecchi). Problema di bootstrap come sottolineato in una risposta di Hendrik Brummermann.
-
Utilizza l'ID sessione SSL per il tracciamento della sessione anziché i cookie
L'ID sessione SSL non può essere iniettato da un aggressore MITMing. Le sessioni sono stabili con questo tipo di configurazione?
-
Utilizza l'autenticazione del certificato client per il tracciamento della sessione anziché i cookie
Non molto intuitivo (e privo di funzionalità standard di "disconnessione").