5. Attacco Cross Site Scripting
Il Cross Site Scripting (CSS) permette ad un aggressore di inserire codice arbitrario come input di una web application, così da modificarne il comportamento per perseguire i propri fini illeciti. Se uno script consente questo tipo di attacco, è facile confezionare un URL ad hoc e inviarlo all'utente che sarà vittima del sotterfugio. All'utente, ignaro di questa modifica, sembra di utilizzare il normale servizio offerto dal sito web vulnerabile. Pagine web o e-mail sono i mezzi ideali per portare a termine l'attacco.
Quando utilizziamo un servizio che richiede l'inserimento di username e password, spesso questi dati vengono registrati sul nostro computer sotto forma di Cookie (un file di testo) per non doverli digitare ogni volta. Di norma i dati contenuti nel cookie sono accessibili solo dal sito web che li ha creati. Ma supponiamo che il sito in questione utilizzi una applicazione vulnerabile al CSS: l'aggressore potrà iniettare un semplice JavaScript che legge il cookie dell'utente e lo riferisce. Il browser dell'utente permetterà la lettura, perchè in effetti il JavaScript viene eseguito da un sito autorizzato a leggere il cookie! Il risultato immediato è evidente: l'aggressore avrà accesso al cookie e, a seconda delle informazioni contenute, sarà in grado di leggere la nostra posta, oppure di utilizzare il nostro nickname nel forum che frequentiamo (e i nostri privilegi, se ad esempio siamo amministratori), e così via. Oltre al danno, la beffa: il Cross Site Scripting solitamente richiede un intervento attivo da parte della vittima per poter funzionare: anche il click su un link in una pagina web o in un messaggio di posta elettronica può nascondere insidie di questo tipo. Qualsiasi tipo di applicazione web può essere a rischio, se non implementa opportuni controlli sull'input degli utenti. Possiamo individuare vulnerabilità in script casalinghi, applicazioni web diffuse e server web.
Script casalinghi: la relativa semplicità dei moderni linguaggi lato server permette la creazione di script da utilizzare sui siti web personali. Spesso però le tecniche basilari della programmazione sicura non sono conosciute e gli script offrono molti punti vulnerabili agli attacchi di CSS.
Applicazioni web: le applicazioni web create appositamente per essere diffuse e utilizzate in migliaia di siti (forum, chat, sistemi di gestione dei portali) solitamente sono sviluppate con un maggiore attenzione ai problemi della sicurezza. Ciò non esclude la scoperta periodica di nuove sviste nella programmazione che aprono le porte al Cross Site Scripting.
Server web: ancora più pericolosi sono i bug CSS quando riguardano i server web, applicazioni molto diffuse e che solitamente non lasciano presagire la vulnerabilità a questo tipo di attacco. L'unico vantaggio in questo caso è la possibilità di accorgersi tempestivamente dell'attacco in corso, tramite l'analisi dei log del server.
Tecniche di difesa
I bug riscontrati nelle applicazioni web solitamente vengono risolti in breve tempo e le patch sono integrate nelle versioni successive degli script. Molti dei bug relativi al Cross Site Scripting possono essere risolti implementando una procedura di validazione dell'input negli script. Gli sviluppatori dovrebbero quindi cercare di essere sensibili ai temi della sicurezza, anche se non indispensabili al fine dell'applicazione.Un utente può fare attenzione ai link che apre e alla presenza di anomalie. La disattivazione del supporto JavaScript o l'impostazione del livello Alto di protezione possono contrastare i codici nocivi ma creano problemi alla normale navigazione.Le connessioni criptate tramite SSL (riconoscibili dall'url che inizia con http) non offrono una protezione aggiuntiva per queste falle.