Perché OWASP consiglia "Disabilita sessioni di campi incrociati del browser Web"

2

Ho esaminato il foglio dei trucchi di gestione delle sessioni OWASP e non capisco il ragionamento alla base suggerimento per " Disabilita sessioni di campi incrociati del browser Web ". In che modo l'utilizzo dello stesso ID di sessione per più schede del browser presenta una vulnerabilità di sicurezza?

    
posta AlexC 25.11.2015 - 10:52
fonte

2 risposte

1

Probabilmente è sotto l'idea che se una scheda del browser viene compromessa, l'altra scheda del browser potrebbe non essere compromessa.

Ciò potrebbe aiutare a ridurre l'impatto dei link dannosi inviati via email. Ad esempio, fai clic sul link in un'email per provare ad eseguire un vuln XSS riflesso e ottieni una nuova scheda senza una sessione, quindi il collegamento non ha alcun effetto. Potrebbero esserci altri vulns simili a cui questo potrebbe essere pensato anche per aiutare.

Tuttavia, sembra che questa sia una soluzione complessa per fornire una difesa approfondita solo per una parte di un difetto di sicurezza in cui la vera soluzione è un'applicazione adeguatamente architettata che utilizza appropriati framework sicuri (come un framework ui web sicuro) per prevenire problema in primo luogo in un modo molto meno complicato che non rompa la normale usabilità delle applicazioni web.

    
risposta data 26.11.2015 - 06:47
fonte
1

Direi che in linea di principio è perché serve a impedire che una cattiva persona possa dirottare la tua sessione.

Se una persona del genere stesse toccando la tua sessione, il tuo cookie (o meno banalmente qualunque valore magico nelle pagine identificasse la tua sessione) e tutto quello che dovresti fare è spoofare il tuo indirizzo IP.

Ovviamente se la tua sessione è stata crittografata questo non dovrebbe essere possibile, ma presumibilmente questa regola non presume che sia il caso, o basarsi su di essa.

Non è qualcosa che lo stesso HTTP può gestire, ma la regola stessa nota che:

Web applications can use JavaScript code once the user has logged in and a session has been established to force the user to re-authenticate

Quindi non è possibile supportare utenti che non desiderano utilizzare JavaScript o il cui browser non lo supporta. Quindi, la logica di tracciamento della sessione, implementata in JavaScript, consente di mantenere le informazioni sulla sessione solo nella sessione della scheda del browser. Devi assicurarti che questa implementazione sia anche portabile su tutti i browser che desideri supportare.

Suggerirei di utilizzare un'implementazione ben nota per questo piuttosto che lanciare il tuo. Immagino che i framework JavaScript più conosciuti supportino questo.

C'è di più su ciò che potresti dover specificamente fare qui: link

Aggiornamento:

Ci sono altri pochi scenari che mi vengono in mente.

Un sito di vendita di biglietti potrebbe fare qualcosa del genere per impedire ai propri clienti di "giocare" a un sistema di accodamento eseguendo più schede. Ma questo è un problema di gestione delle sessioni, perché il cliente sta effettivamente eseguendo più "sessioni di accodamento" all'interno della loro sessione effettiva.

Può anche semplificare la progettazione del sito se non ti devi preoccupare delle condizioni di gara tra le diverse attività degli utenti costringendoli così a fare "una cosa alla volta", sebbene si tratti più di una UX che di un problema di sicurezza.

Infine, questa regola potrebbe anche frustrare le attività di software di scraping, o bot (come quelli che potrebbero essere utilizzati di nuovo sui siti di ticket, ad esempio). Questa sarebbe una contromisura efficace contro l'attacco di un utente malintenzionato tramite il browser per acquisire una sessione e quindi continuare la sessione con il bot.

    
risposta data 25.11.2015 - 12:15
fonte

Leggi altre domande sui tag