Se si desidera implementare uno scanner XSS, è assolutamente necessario utilizzare un interprete JS? Perché?

4

In una recente discussione su uno scanner di vulnerabilità di sicurezza che restituisce falsi positivi per il rilevamento XSS, ho notato che lo scanner inserisce solo una stringa come "this_is_my_string_" (senza virgolette) e se vede la stringa nella risposta HTML dice che esiste un XSS.

Parlando con l'autore dello scanner, gli ho chiesto come sia possibile affermare che esiste un XSS semplicemente inserendo quel tipo di stringa senza < > "" o qualsiasi carattere speciale (solo _). Dice che lo scanner non include ancora un interprete JS e il rilevamento sarà sempre inaffidabile e sarà necessaria la conferma manuale.

È assolutamente necessario utilizzare un interprete JS per rilevare automaticamente le vulnerabilità XSS?

Sarà molto inaffidabile inserire il localizzatore XSS chiamato 2 di OWASP:

'';!--"<XSS>=&{()}

e cerchi caratteri speciali non codificati nella risposta? Perché?

    
posta kinunt 22.06.2013 - 10:20
fonte

1 risposta

4

Rilevare in modo affidabile Cross-Site Scripting è un'attività relativamente complessa, basta inserire una stringa senza caratteri di controllo e cercarla nella risposta, è una pessima idea in quanto verrai sommersa da falsi positivi.

La maggior parte degli scanner utilizza una serie di vettori standard (ad esempio "> < script > alert (1) < / script > <") e quindi esamina la risposta da tale stringa non codificata.

Anche in questo caso non è perfetto in quanto dipende dal contesto della risposta per sapere se è sfruttabile.

Un modo migliore di gestirlo è guardare il DOM della pagina risultante e guardare il JavaScript eseguito al caricamento della pagina per vedere se il vettore è stato incluso in una posizione eseguibile. Questo ovviamente richiede un motore di rendering HTML e un motore di rendering JavaScript.

C'è anche il problema di seguire i link se lo scanner include uno spider per trovare il contenuto. Senza un interprete JS lo spider mancherà probabilmente link che possono essere seguiti solo valutando JavaScript, di cui ce ne sono molti in questi giorni.

Quindi la risposta sarebbe che un interprete JS non è un requisito assoluto ma sarà di grande aiuto.

    
risposta data 22.06.2013 - 11:42
fonte