Perché la XSS non può essere rilevata da un firewall di applicazioni Web?

4

Questo OWASP articolo menzionato "Utilizzando la convalida dei dati, è possibile rilevare e prevenire solo l'XSS riflesso, non è possibile rilevare XSS persistente, XSS basato su DOM solo in misura limitata se parte dell'invio viene inviata nei parametri della richiesta." Perché è così?

Capisco che una volta che lo script dannoso viene archiviato nell'applicazione, ora qualsiasi richiesta GET / POST non sembrerà malevola ma lo script verrà eseguito dal lato delle vittime. Tuttavia, per eseguire un XSS persistente, un utente malintenzionato deve inviare al server una richiesta dannosa che deve essere rilevata da WAF e quindi deve essere interrotta per essere eseguita.

    
posta one 05.07.2016 - 08:02
fonte

2 risposte

6

Se strettamente regola il WAF per l'applicazione in modo che possa distinguere completamente input validi da input non validi per specifici campi di input di quanto si dovrebbe essere in grado di rilevare tentativi di iniettare XSS persistente attraverso l'uso di input campi.

Ma di solito i WAF non sono adattati strettamente all'applicazione specifica e in questo caso impiegano solo un'euristica per rilevare gli attacchi comuni. Oltre a questo XSS persistente può avere origini diverse e non è nemmeno necessario aggiungerlo all'applicazione utilizzando i campi di input o addirittura utilizzando l'interfaccia web. Ad esempio, c'è stata una vulnerabilità XSS memorizzata all'interno del negozio di Kindle amazon dove l'XSS è stato causato dallo script all'interno dei metadati della descrizione del libro: Amazon XS memorizzato tramite metadati del libro .

    
risposta data 05.07.2016 - 08:15
fonte
4

Penso che il punto non sia formulato idealmente, poiché un WAF può effettivamente catturare alcuni attacchi XSS persistenti.

Ma ci sono almeno due problemi:

  • gli attacchi XSS persistenti non avvengono solo tramite richieste web, ma possono avvenire tramite una varietà di altri mezzi, come la posta elettronica. La vulnerabilità viene realmente introdotta solo quando i dati vengono letti dall'archivio dati, ad esempio il db, e quindi stampati. Se WAF non ascolta la connessione tra db e server, che non è molto comune per quanto ne so, non può rilevarlo.
  • Manca il contesto. Un WAF può esaminare la richiesta in entrata e l'output generato. In questo modo, è in grado di dire in quale contesto viene inviato l'input dell'utente e se è sicuro farlo. Per XSS persistente, questo contesto è mancante, quindi non è chiaro se es. ');alert('1 sia sicuro o meno (o come viene gestito l'input e se è reso sicuro tramite la codifica).
risposta data 05.07.2016 - 08:49
fonte

Leggi altre domande sui tag