La minaccia XSS e il ruolo del WAF

(di Francesco Rugolo)
11/04/24

Tra gli attacchi informatici che sfruttano metodologie di script injection il Cross Site Scripting (XSS) è sicuramente uno dei più famosi e in questo breve articolo proverò a spiegarne i rischi e l’importante ruolo ricoperto da uno strumento chiamato WAF (Web Application Firewall) come prima linea di difesa contro questi attacchi.

L’XSS è un attacco, come già detto, di tipo injection, ossia nel quale uno script viene iniettato in una pagina web rendendola infetta e permettendo ad un malintenzionato di rubare dati di vario genere alla vittima che sta navigando.

Vi sono innanzitutto due principali tipologie di XSS, il cosiddetto Reflected e lo Stored, quest’ultimo detto anche Persistent.

In entrambi i casi lo scopo dell’attacco è quello di sfruttare una vulnerabilità del sito o del browser web e di compromettere l’interazione che l’utente sta avendo con la suddetta applicazione e le conseguenze possono essere dannose per entrambe le parti.

Nel Reflected XSS viene attaccato il browser della vittima, lo script si trova in un link malevolo, spesso inviato alla vittima all’interno di una e-mail, link che è all’apparenza legittimo ma che una volta cliccato farà partire lo script posizionato al suo interno, compromettendo la sessione dell’utente con l’applicazione che sta utilizzando.

Dati sulla sessione, cookies e ogni altro dato sensibile verranno inviati prontamente al malintenzionato.

Nello Stored XSS viene attaccata direttamente l’applicazione e tipicamente vengono sfruttate vulnerabilità dei siti web che utilizzano un qualche tipo di form che l’utente deve compilare, alla risposta da parte dell’applicazione un pezzo di codice malevolo che è stato agganciato dall’hacker nel sito viene attivato dall’utente. In entrambi i casi l’utente rimane ignaro del rischio in quanto le applicazioni sembrano del tutto legittime.

Lo Stored XSS è sicuramente una tipologia di attacco più complessa e pericolosa in quanto colpisce ogni utente che accede all’applicazione vulnerabile, l’hacker resta nascosto rubando dati sensibili per tempi prolungati da cui ne deriva il nome “Persistent XSS”.

Come possiamo dunque proteggere le nostre applicazioni web da questo tipo di attacchi?

Come ben sappiamo, aziende private ed enti pubblici si affidano giornalmente al corretto funzionamento di servizi che si affacciano al web. L’affidabilità e l’uptime di alcuni di questi servizi è assolutamente vitale e da preservare al meglio e per garantirne l’esistenza un gran numero di questi viene protetto da una tecnologia estremamente importante, ossia il Web Application Firewall o in breve, WAF.

I WAF sono un importante aiuto per proteggerci da minacce esterne di vario genere, da attacchi malevoli e dal traffico indesiderato verso i nostri server, come ad esempio la protezione dai bot, denial of service (DOS), attacchi di tipo injection, attacchi di cross site scripting (XSS) ed SQL injection e altro.

I WAF sono da considerare una importante linea di difesa proprio contro gli attacchi di tipo injection, monitorando il traffico a livello applicativo, riescono ad identificare uno di questi attacchi prima che sia troppo tardi, controllando sequenze e pattern di caratteri potenzialmente dannosi che possono essere indicativi di un attacco di questo tipo.

I WAF possono prevenire o farci accorgere che un attacco simile è in corso grazie ad un filtraggio “signature based” che riesce a bloccare una gran parte di richeste malevole, ovviamente questo set di regole e liste di “signatures malevoli” devono essere sempre aggiornati.

Per questo motivo i WAF sono mantenuti da squadre di esperti che lavorano per l’aggiornamento continuo delle conoscenze sui vettori di attacco e delle regole per prevenirli.

Ovviamente i WAF non offrono una protezione infallibile, il potenziale di difesa contro un attacco simile, ma anche contro altre tipologie deriva difatti da una corretta configurazione delle regole in uso.

I WAF analizzano e prevengono ciò che si conosce, mentre metodi estremamente sofisticati e mai visti prima non verrano purtroppo segnalati, vi sono oltretutto tecniche di bypass dei firewall che spesso e volentieri fanno utilizzo di loophole nella configurazione dello stesso.

Per questo motivo alcuni WAF aiutano l’utente ad ispezionare le caratteristiche di funzionamento del prodotto, fornendo informazioni dettagliate sul tipo di traffico ricevuto dai servizi monitorati e i parametri ricevuti, e ciò non è caratteristica comune in ogni WAF, che spesso forniscono solo il log con la notifica relativa all’attivazione della regola in uso.

Oltretutto alcuni WAF puntano su una strategia di enforcement del comportamento legittimo più che di un approccio signature based come quello spiegato in precedenza, strategia che in alcuni casi potrebbe fare la differenza ed aiutare non poco il processo di identificazione dell’attacco e combinato alla capacità di alcuni WAF più complessi di avviare un deployment di una virtual patch anche senza fermare il servizio può assicurare un uptime raramente ottenibile da software meno avanzati.

https://owasp.org/www-community/attacks/xss/ per info più dettagliate su xss

https://seerbox.it/ esempio di WAF non signature-based