Oltre alle eccellenti risposte di @ GZBK e @ Adnan, un'altra cosa che ho pensato è che l'applicazione è vulnerabile a XSS sull'output di un valore del cookie.
Di solito il valore del cookie viene emesso non codificato, ma poiché il cookie era normalmente impostato su HTTPS e non sarebbe soggetto al MITM non era un pericolo in quanto l'utente poteva solo attaccare se stesso. Tuttavia, se la richiesta HTTP è stata intercettata e il cookie è stato avvelenato con un exploit per questo XSS vulnerabilità, questo potrebbe essere un possibile vettore di attacco in questo scenario.
Ovviamente questa non è una richiesta non HTTPS, incluso un reindirizzamento vulnerabile perché questo cookie potrebbe essere impostato anche se " example.com
" non ha ascoltato nulla sulla porta 80: un utente malintenzionato potrebbe MITM qualsiasi altra richiesta HTTP fatta dalla vittima , reindirizzali a " http://example.com
" che l'aggressore intercetta e restituisce la risposta per reindirizzare l'utente al loro sito web originale, ma solo dopo che il cookie " example.com
" è stato avvelenato.
can I trust that from now on my session is not vulnerable to any man-in-the-middle attack?
L'unico modo veramente sicuro per navigare su una rete non sicura è disabilitare tutti i protocolli dal browser diversi da HTTPS (ad esempio, configurare un proxy locale ma impostare il browser affinché utilizzi una porta non valida per tutti i protocolli diversi da HTTPS). L'HSTS può essere d'aiuto, ma se la prima richiesta viene intercettata (ad esempio utilizzando la tecnica descritta qui prima ancora di aver pensato di visitare " example.com
") sarai comunque vulnerabile.
Aggiornamento di seguito in relazione alla nuova domanda nel commento:
[I forgot to enter the bounty comment] I'm asking from the perspective of a user (though it is interesting to know what the site/app should be doing, too). In what circumstances does typing example.com in the browser's URL bar directly direct me to https://example.com/? In what circumstances does typing http://example.com/ directly direct me to https://example.com/? If there is a request to http://example.com/ first, what bad things can happen, and how as a user can I know whether bad things are happening? – Gilles
Se esisteva un record attivo HSTS per " example.com
" (precaricato o se l'utente aveva visitato prima) e l'utente ha digitato "example.com"
o "http://example.com"
nella loro barra degli indirizzi, andando direttamente a "https://example.com"
senza alcuna richiesta effettuata su HTTP.
When a web application issues HSTS Policy to user agents, conformant user agents behave as follows:
Automatically turn any insecure links referencing the web application into secure links. (For instance, http://example.com/some/page/ will be modified to https://example.com/some/page/ before accessing the server.)
If the security of the connection cannot be ensured (e.g. the server's TLS certificate is self-signed), show an error message and do not allow the user to access the web application.
Se non ci sono stati record HSTS e l'utente ha digitato "example.com"
o "http://example.com"
nella barra degli indirizzi un insicuro prima sarebbe stata fatta la richiesta a " http://example.com
" che normalmente rispondeva con l'intestazione " Location: https://example.com/
". Ciò farà sì che il browser carichi l'URL HTTPS. Se l'utente desiderava assicurarsi che nulla fosse stato iniettato o modificato e che tutto ciò che accadeva era che l'intestazione " Location
" è stata restituita, dovrebbero cancellare tutte le informazioni di stato. Il processo per fare ciò dovrebbe essere il seguente:
- Chiudi tutte le altre finestre e schede del browser - questo assicurerà che nessun'altra richiesta HTTP sia MITM e reindirizzata a "
example.com
".
- Disabilita JavaScript nel browser. Questo assicurerà che non ci sia uno script in esecuzione che sta impostando i cookie su un intervallo. Ad esempio, se esiste una vulnerabilità XSS attraverso un valore del cookie, lo script inserito potrebbe garantire il valore del cookie rimane impostato resettandolo ogni pochi secondi. AKA un cookie zombie .
- Cancella i cookie, qualsiasi archivio locale e qualsiasi dato del plug-in del browser (ad esempio, Flash / Silverlight locale). Ciò rimuoverà la maggior parte delle informazioni di stato per il sito.
- Premere Aggiorna sul browser. Ciò garantirà che il caricamento della pagina corrente non sia un POST perché l'utente riceverà un messaggio di avviso. Il POST può aver inserito il contenuto nella pagina se ci sono delle vulnerabilità XSS .
- Riattiva JavaScript se necessario.
Ovviamente questo è molto da fare e potrebbe essere più facile per loro semplicemente utilizzare la tecnica proxy come descritto in precedenza per disabilitare HTTP e iniziare con un browser pulito (ad esempio, una nuova sessione di navigazione in incognito).
Se un utente sta navigando su una rete non sicura, non può mai essere sicuro al 100%. Non esiste un controllo facile per la manomissione a meno che tutto non sia in uno stato noto (quindi a partire da uno stato pulito / HTTPS o rimuovendo tutte le informazioni di stato). Sì, potevano controllare manualmente i cookie, ma con tecniche intelligenti un utente malintenzionato potrebbe cancellare il cookie una volta che lo script è stato incorporato nella pagina.