L'impostazione del percorso del cookie mi protegge da XSS da un altro contesto?

5

Diciamo che sto usando un proxy inverso con riscrittura degli URL che fornisce l'accesso a 2 diverse applicazioni

http://www.example.com/app1/ e http://www.example.com/app2/ .

Non voglio che quelle applicazioni siano in grado di ottenere l'accesso ai rispettivi cookie, soprattutto perché voglio contenere una potenziale vulnerabilità XSS a una sola applicazione. È sufficiente impostare il percorso dei cookie di conseguenza? Il flag http-only non è impostato in questo scenario.

Se l'impostazione del percorso del cookie non è sufficiente, sarei interessato a quali ulteriori passi dovrebbero essere presi.

    
posta Demento 12.06.2012 - 10:38
fonte

5 risposte

4

Una vulnerabilità XSS su www.example.com significa che tutti i cookie relativi a quel dominio possono essere letti, indipendentemente dal percorso. (Se app1 era http e app2 era https che sarebbe leggermente diverso, ma immagino che non lo siano e sarebbe raramente il caso).

I sottodomini funzionerebbero, ad es. app1.example.com ha diversi cookie per app2.example.com, supponendo che siano stati impostati nel sottodominio corretto (anziché solo example.com).

    
risposta data 12.06.2012 - 12:17
fonte
5

No. Lo stesso criterio di origine JavaScript consente di eseguire codice in qualsiasi documento su un determinato nome host da qualsiasi altro documento sullo stesso nome host (+ schema + porta).

Il codice compromesso in www.example.com/app1 può interagire con www.example.com/app2 attraverso ad es. forme, iframes e AJAX, dandogli una quasi completa capacità di atteggiarsi come utente genuino - che è più che un semplice problema di perdita di cookie. La protezione CSRF non ti aiuta poiché il token CSRF può essere letto dal codice dello script.

La funzione path= dei cookie è utile solo per prevenire interferenze accidentali; non ha valore di sicurezza. Devi solo eseguire il reverse-proxy di due applicazioni nello stesso hostname se si fidano completamente l'un l'altra.

Altrimenti guarda i sottodomini o domini completamente separati. (I sottodomini impediscono alle app di leggere i rispettivi cookie, ma non impediscono l'utilizzo di domain= per rendere disponibile un cookie per l'altro sito. Questo non è in genere un problema di sicurezza in quanto tale, ma può essere un fastidio quando maschera un vero cookie e impedisce all'app di funzionare.)

    
risposta data 12.06.2012 - 12:01
fonte
3

Esiste la possibilità che un cookie di app1 e app2 possa essere rubato a causa di una vulnerabilità XSS. Dato che hai menzionato in modo specifico XSS, un XSS basato su DOM che esegue un javascript nel browser dei client nella prima app può leggere il cookie nella seconda app poiché il nome di dominio è lo stesso www.example.com .

Ad esempio: se app1 è vulnerabile a XSS allora http://www.example.com/app1/submit.php?subject=<SCRIPT>alert(document.cookie);</SCRIPT> leggerà anche i cookie impostati per http://www.example.com/app2/ .

Una volta che il cookie è stato letto, può essere pubblicato altrove, dove è possibile utilizzare un javascript. Questo è irrilevante per il percorso del cookie e CSRF. Pertanto, l'impostazione del cookie path non ti salverà da XSS rubando il cookie di un'altra app.

    
risposta data 12.06.2012 - 11:19
fonte
2

Devi prendere in considerazione anche l' attacco CSRF .

Aggiungendo il percorso nel tuo cookie evita solo di condividere il cookie tra le due applicazioni, non è applicabile a XSS.

Con l'attacco CSRF, se qualcuno è connesso nelle tue due app e uno di loro ha un difetto XSS, posso creare un post per i moduli che metterà il contenuto nell'altra app, come l'eliminazione delle voci.

    
risposta data 12.06.2012 - 10:44
fonte
1

In base al link :

It is important to note that the path restriction does not protect against unauthorized reading of the cookie from a different path. It can easily be bypassed with simple DOM (for example by creating a hidden iframe element with the path of the cookie, then accessing this iframe's contentDocument.cookie property). The only way to protect cookie access is by using a different domain or subdomain, due to the same origin policy.

Quindi, devi utilizzare domini diversi per app diverse se la sicurezza è importante, l'impostazione di Cookie path da sola non ti proteggerà da XSS basato su JavaScript tra le app.

    
risposta data 15.03.2013 - 18:40
fonte

Leggi altre domande sui tag