Cross-Site Scripting, come fanno a rubare la tua identità?

Gli attacchi Cross-Site Scripting o XSS sono una particolare forma di attacchi informatici che sfrutta le vulnerabilità di un sito web, permettendo così ai cracker o più semplicemente pirati informatici, di iniettare del codice esterno all’interno delle pagine web, per poi sfruttare quel codice per rubare informazioni o installare software.

Questa tipologia di attacchi è ancora oggi una delle più diffuse e si stima che oltre il 70% delle violazioni di portali web, avvengano tramite attacchi XSS. Nel 2007 gli attacchi Cross-Site erano responsabili di oltre l’80% delle violazioni informatiche. 

Cerchiamo di capire in questo articolo come funzionano nel dettaglio gli attacchi XSS e come fare a difenderci dal Cross-Site Scripting.

Cosa sono gli attacchi Cross-Site Scripting?

Gli attacchi Cross-Site Scripting sono degli attacchi informatici particolarmente subdoli, finalizzati ad ottenere informazioni e dati sensibili sugli utenti, passando attraverso l’esecuzione di script e codice iniettato da cracker in una pagina web.

Il termine cross-site scripting in particolare, definisce quegli attacchi che sfruttano script in grado di attraversare i controlli del server, operando direttamente lato client.

Come anticipato nell’introduzione, oggi esistono numerose tipologie e forme di attacchi cross-site, che sfruttano vulnerabilità e codici differenti, in generale però, gli attacchi Cross Site Scripting, sfruttano la fiducia dell’utente nel sito web su cui stanno navigando e rubano loro informazioni e dati attraverso i cookie di sessione.

Partendo dalla fiducia dell’utente, i cracker inducono, attraverso l’inganno, gli utenti a cliccare su link specifici, generati da script iniettati nella pagina, di cui il web master o comunque il proprietario del sito, non è a conoscenza.

Cosa vuol dire Iniettare? 

Con il termine iniettare si intende la tecnica di inserire, dall’esterno, degli script o frammenti di codice all’interno di una pagina web, bypassando i normali protocolli di modifica e aggiornamento della pagina su server.

Il codice iniettato è codice eseguibile lato client, ciò significa il codice viene avviato solo dal browser delle “vittime” e che il server non è a conoscenza dell’esecuzione del codice iniettato.

Si tratta Il codice generalmente malevolo, di cui il proprietario del sito web non è a conoscenza, e, difficilmente si accorgerà della sua presenza, se non attraverso una verifica diretta del codice delle pagine interessate.

Cosa sono i cookie?

Un termine frequente in questo articolo è cookie, questo termine ormai è utilizzato quotidianamente sul web, in particolare ogni volta che accediamo ad una pagina web, appare un popup che ci indica che su quel determinato sito sono utilizzati i cookie, cerchiamo allora di capire cosa sono, così da poter affrontare meglio questa guida.

I cookie sono fondamentalmente un token digitale, un gettone identificativo, un pacchetto digitale che viene scambiato tra programmi in comunicazione fra loro. Più precisamente i cookie web sono dei gettoni identificativi utilizzati dalle applicazioni web operanti lato server, per collezionare informazioni a lungo termine sulle attività lato client degli utenti.

Questi pacchetti sono in uso fin dagli anni 90, il primo utilizzo risale al 1994, quando il sito Netscape introdusse questo strumento per verificare se gli utenti lo avevano già visitato in precedenza.

Chiusa la parentesi storica, i cookie vengono inviati dal server al client all’interno della risposta HTTP, vengono inoltre salvati e inviati dal browser (client) al server, ogni volta che vengono effettuate richieste aggiuntive al server, insomma, vengono aggiornati ogni volta che un utente ritorna su un server su cui è già stato.

Questo meccanismo di comunicazione e scambio di informazioni permette di memorizzare informazioni utili alla sessione di navigazione, dalle informazioni di login alle preferenze sull’aspetto grafico o linguistico del sito, permettono inoltre di tracciare la navigazione dell’utente, tracciamento che può essere utilizzato fini statistici e/o pubblicitari.

La loro presenza dunque permette un esperienza migliorata e personalizzata del web che evolve e si adatta in base alle abitudini e preferenze dell’utente.

Se vuoi sapere di più su come funzionano i Cookies, puoi leggere il nostro articolo su Cookies, come ci tracciano i siti?

Cross-Site Scripting: Come funziona?

Come anticipato nei paragrafi precedenti, gli attacchi Cross-Site o XSS sono attacchi lato client che iniettano del codice dannoso nelle singole pagine web. Questa definizione è estremamente semplice e intuitiva e descrive perfettamente gli attacchi, vediamo allora nel dettaglio come funzionano gli attacchi Cross-Site.

La tecnica del Cross-Site Scripting, è una tecnica molto semplice da utilizzare, se si dispone delle giuste conoscenze di programmazione.

L’attacco avviene principalmente sfruttando il browser, più precisamente attraverso la barra degli indirizzi, che viene utilizzata durante questi attacchi come strumento di penetrazione.

Attraverso la barra degli indirizzi l’attaccante può provare ad iniettare del codice dannoso in una pagina web, spingendo il server ad eseguire i comandi indicati nel codice, e quindi ottenere informazioni e dati sensibili sugli utenti, ad esempio i dati contenuti nei cookie di sessione e, nei casi più estremi, l’attaccante può anche riuscire ad ottenere il controllo completo del sito web.

Questa tipologia di attacchi è maggiormente efficace quando il sito è mal gestito e soprattutto mal configurato, e nei prossimi paragrafi vedremo come proteggerci e quali precauzioni attuare.

Gli attacchi Cross-Site possono sfruttare anche altre vie di accesso per iniettare del codice, oltre alla barra degli indirizzi, che permette di inserire il codice direttamente nell’url della pagina, i cracker possono eventualmente sfruttare anche form di inserimento dati.

Verifica delle vulnerabilità

Prima di procedere con un attacco, i cracker generalmente effettuano alcune verifiche e valutazioni di rito, per stabilire in che modo procedere con l’attacco. Queste valutazioni possono essere effettuate anche dal proprietario del sito web, che quindi può individuare eventuali errori di configurazione.

Come abbiamo visto, uno dei punti deboli dei nostri siti web sono i cookie, e la loro vulnerabilità può essere facilmente individuata, da chiunque, sfruttando gli strumenti di ispezione delle pagine dei vari browser.

Che si usi Microsoft Edge, Mozilla Firefox, Google Chrome, Opera, Safari ecc. recandoci in modalità sviluppatore, avremo accesso a vari strumenti e informazioni, in questo caso specifico l’informazione che ci interessa per verificare la sicurezza o vulnerabilità dei cookie del nostro sito web sono i flag HttpOnly, SameSite e Secure.

Se questi flag non sono presenti, significa che il nostro sito web è vulnerabile ad attacchi XSS. Vediamo allora nel dettaglio le funzioni di questi flag.

Verifica del flag HTTPonly 

Se il flag HTTPOnly è attivo significa che il server impedisce di accedere alle informazioni contenute nei cookie attraverso script lato client. Questo significa che durante un attacco XSS, anche in caso il cracker dovesse riuscire ad iniettare del codice malevolo in una pagina, ed un utente dovesse attivare quello script, il browser non fornirebbe al cracker le informazioni sull’utente contenute nel cookie, poiché riconoscerebbe l’utente come non autorizzato ad accedere a quelle informazioni.

Il flag HTTPOnly è il principale strumento di difesa contro attacchi XSS.

Verifica del flag Secure

Il Flag Secure forza il browser ad utilizzare il protocollo HTTPS, anziché il protocollo HTTP. Utilizzando il protocollo HTTPS le informazioni dei cookie sono cifrate e dunque illeggibili da cracker, di conseguenza, anche se l’attaccante dovesse riuscire ad ottenere l’accesso a quelle informazioni, non sarebbe in grado di decifrarle e dunque, si troverebbe ad avere un enorme quantità di dati completamente inutile.  

Verifica del flag Samesite

L’ultima verifica riguarda il flag Samesite, che, per essere precisi, non protegge propriamente dagli attacchi XSS, ma lo citiamo ugualmente perché la sua funzione è quella di proteggere gli utenti di un sito da attacchi di tipo Cross-Site Request Forgery, ovvero attacchi informatici che puntano ad ottenere informazioni sull’utente dal browser utilizzato dall’utente. 

Gli attacchi XSRF sono comunque degli attacchi Cross-Site ingannevoli e finalizzati al furto di informazioni e dati sensibili degli utenti di un sito web.

Tornando al flag, la presenza del flag Samesite impedisce al browser di eseguire script lato client che richiedono l’accesso ad informazioni sull’utente, proteggendo di conseguenza gli utenti da eventuali attacchi Cross-Site.

Come proteggere noi stessi e i nostri utenti dagli attacchi Cross-site scripting?

Se sei proprietario di un blog o comunque di un sito, è tuo dovere legale informare gli utenti che il tuo sito raccoglie e gestisce cookie di navigazione degli utenti, cosa che avviene se sul tuo sito è possibile interagire e commentare gli articoli, se è possibile iscriversi e loggarsi, se sono presenti strumenti di monitoraggio e analisi del traffico, se sono presenti banner pubblicitari.

Informare gli utenti della presenza di cookie non è sufficiente a proteggerli, è infatti necessario che, come indicato nel capitolo precedente, si configuri correttamente il sito, attivando i flag HTTPOnly, SameSite e Secure. Per l’attivazione di quest’ultimo con conseguente attivazione del protocollo HTTPS, è necessario l’ottenimento di un certificato SSL.

Se invece sei un utente web e vuoi navigare in modo sicuro, senza il rischio di cadere vittima di attacchi XSS, la prima cosa da fare è navigare con cautela, quando accedi ad una pagina web assicurati che questa abbia attivo il protocollo HTTPS, puoi verificarlo dalla barra degli indirizzi del tuo browser, e, a seconda del browser utilizzato potresti leggere la dicitura HTTPS all’inizio dell’URL, in altri casi potrebbe essere visibile un lucchetto chiuso. 

Diversamente, se vi troverete su una pagina in cui non è attivo il protocollo HTTPS, molto probabilmente nella barra degli indirizzi leggerete che “questo sito non è sicuro” o vedrete un lucchetto aperto.

Per maggiori informazioni su come funzionano i browser ed il protocollo HTTP, puoi leggere il nostro articolo a riguardo.

Recentemente Google e altri motori di ricerca hanno iniziato ad indicare già nelle ricerche, se un sito è “sicuro” ovvero se il sito dispone dell’attributo “secure” e dunque ha attivo il protocollo https, o se invece il sito non è “sicuro”.

Altre precauzioni che è possibile prendere, riguardano l’inserimento dei propri dati, per evitare che questi vengano rubati è opportuno fare attenzione a dove li si inserisce, cerchiamo quindi di prestare attenzione alle pagine web a cui ci iscriviamo, ai form di inserimento e schermate di accesso.

In conclusione, con un po’ di cautela e attenzione, frequentando principalmente siti sicuri ed evitando di cliccare su link ambigui, possiamo evitare che le nostre informazioni vengano rubate.

A cura di Antonio Coppola

COMMENTI

Share