Clickjacking, tutti i browser vulnerabili

di Alessandro Bottoni - Certi clic possono portare i navigatori in luoghi e ambienti assai diversi da quelli che si aspettano. Si clicca su un link ma in realtà se ne clicca un altro. Ecco cosa c'è da sapere su un bug strutturale
di Alessandro Bottoni - Certi clic possono portare i navigatori in luoghi e ambienti assai diversi da quelli che si aspettano. Si clicca su un link ma in realtà se ne clicca un altro. Ecco cosa c'è da sapere su un bug strutturale

Nei giorni scorsi è stata scoperta una vulnerabilità che riguarda tutti i browser web e che potrebbe creare seri problemi a tutti gli internauti nei prossimi mesi. Questa vulnerabilità è stata battezzata “clickjacking”, cioè “scippo dei click”. Sono stati due ricercatori americani, Robert Hansen e Jeremiah Grossman, a scoprire il clickjacking durante l’estate ma questa vulnerabilità è stata portata alla ribalta della cronaca solo il 25 settembre da un giornalista di ZDNet, Ryan Naraine. L’articolo originale è reperibile qui: Clickjacking: Researchers raise alert for scary new cross-browser exploit .

Cos’è il clickjacking e come funziona
Il clickjacking consiste nel “catturare” (con l’inganno) il click del mouse e redirigerlo su un oggetto diverso da quello che l’utente intendeva cliccare. Ad esempio: l’utente fa click su un link per accedere ad una pagina web e questa sua azione viene rediretta a sua insaputa su un pulsante per attivare una certa azione. In questo modo è possibile costringere l’utente a fare quasi qualunque cosa all’interno di una pagina web. Come si può capire, si tratta di una vulnerabilità potenzialmente molto pericolosa.

Dietro le quinte, questo meccanismo di redirezione può essere implementato in almeno due modi diversi: via Javascript oppure usando un “inner frame”( IFRAME ) nascosto.

La tecnica basata su Javascript è molto semplice. Il click dell’utente su un elemento di una pagina HTML, infatti, non svolge nessuna azione in sé. Si limita solo a generare un apposito evento all’interno della pagina. L’evento, a sua volta, viene ricevuto e gestito da una apposita funzione Javascript, nota come event handler (in questo caso “onclick()”), che viene scritta dal programmatore. Per emulare il click del mouse è quindi sufficiente invocare questo event handler direttamente, con una riga di codice Javascript come questa:

button1.onclick=”myEventHandler()” # Questo definisce l’event handler da usarsi quando viene premuto il pulsante button1

myEventHandler() # Questo invoca direttamente l’event handler, come se fosse stato premuto il pulsante

Dato che l’event handler viene invocato dal codice, è possibile passargli i parametri che si desidera.

In questo modo si può far risultare che il click del mouse provenisse da un elemento diverso da quello clickato dall’utente. Questa tecnica è esplicitamente prevista dagli standard del settore (HTML e JavaScript) ed è ampiamente utilizzata dai progettisti di siti web (a fini legittimi). Questa tecnica viene addirittura descritta nel Capitolo 14 di ” The complete idiot’s guide to Javascript “. Proprio per questa sua natura standard, ed altamente prevedibile, non è però questa la tecnica che preoccupa gli specialisti di sicurezza.

La tecnica incriminata è quella basata sul tag IFRAME. Questa tecnica consiste nel nascondere un inner frame (una “cornice interna”) all’interno della pagina web e fare in modo che i click effettuati sulla pagina finiscano, in realtà per “colpire” gli elementi di questo inner frame. In pratica è come mettere un foglio di carta trasparente sopra alla pagina e fare in modo che l’utente scriva su di esso invece che sulla pagina visibile. In questo modo si possono catturare i click dell’utente esattamente come si potrebbe catturare la sua firma nel mondo “reale”.

I dettagli di questa tecnica non sono ancora del tutto chiari perché Adobe (la software house che produce “Flash” e “Reader”) ha chiesto che vengano tenuti nascosti ancora per qualche giorno per darle il tempo di eliminare una vulnerabilità, collegata a questa, che interessa uno dei suoi prodotti. Tuttavia, è già evidente che non basta disabilitare l’interprete Javascript per rendersi immuni a questo tipo di attacco. Come minimo, è necessario disabilitare anche le funzionalità relative a IFRAME (nei browser che permettono di farlo).

Quali browser ne sono affetti
Tutti. Questa vulnerabilità deriva dal modo in cui è strutturato e gestito il tag IFRAME e dal modo in cui è stata progettata una parte degli standard del World Wide Web (HTML, Javascript, etc.). Di conseguenza, questo problema riguarda tutti i browser correntemente in uso.
Solo i browser molto, molto vecchi (Internet Explorer fino alla Release 4.0 esclusa, Netscape Navigator fino alla Release 4.0 esclusa etc.) ed i browser “solo testo”, come Lynx e Links , ne sono immuni. La loro immunità è dovuta al fatto che non supportano le funzionalità necessarie per sfruttare questa vulnerabilità.

Cosa si rischia
Diciamo subito che NON si rischia di vedersi svuotare il conto corrente da un “hacker” (o, più esattamente, un “intruder” od un “cracker”) che passa attraverso il nostro sistema di Home Banking . I siti che trattano denaro, come quelli delle banche, sono protetti in vari modi anche contro questo genere di truffe. Ad esempio, vengono sempre richieste password e codici di verifica prima di eseguire qualunque operazione finanziaria.
NON si rischia nemmeno di ordinare involontariamente due camion di sabbia del Sahara visitando eBay. Anche i siti di commercio elettronico, come Amazon.com ed eBay.com, non sono interessati da questo problema.

Quello che si rischia è che, visitando il sito web di un “furbacchione”, questo furbacchione usi i nostri click per iscriverci a nostra insaputa alla sua newsletter (violando l’attuale legge sulla privacy). Un’altra possibilità è che il furbacchione usi i nostri click per guadagnare abusivamente un po’ di soldi dai suoi banner pubblicitari ( AdSense e simili). Questi banner, infatti, producono un piccolo reddito che dipende dal numero di volte che vengono clickati.

Purtroppo, però, questi sono solo gli usi che riusciamo ad immaginare ora . Non è possibile sapere cosa si inventeranno gli “hacker” in futuro. Come abbiamo già detto, usando questa tecnica si può costringere l’utente a fare praticamente qualunque cosa all’interno di una pagina web. Il fatto che le sue azioni sulla pagina rappresentino o meno un rischio nella vita reale dipende dal contesto. In molti casi, saranno azioni prive di conseguenze ma in altre potrebbero essere azioni rischiose per l’utente o per altre persone. Di conseguenza, bisogna stare in guardia.

Come si fronteggia la minaccia
Dato che si tratta di un “bug” nella progettazione stessa di alcuni standard del World Wide Web non c’è una soluzione semplice e definitiva. Non potrà esserci una soluzione di questo tipo (” plug&play “) nemmeno nel prossimo futuro. In particolare, non sarà possibile rilasciare una ” patch ” che risolva il problema. Sarà necessario ridiscutere il modo in cui vengono gestite le azioni dell’utente (i suoi click) da parte dei browser, implementare queste nuove “semantiche” e rilasciare delle nuove versioni dei browser. Questo richiederà tempo (qualche settimana o qualche mese).

Nel frattempo, si possono limitare i rischi disabilitando l’interprete Javascript del browser e disabilitando la gestione del tag IFRAME. Se utilizzate Mozilla Firefox , ad esempio, potete installare il plug-in NoScript di Giorgio Maone. Dalla pagina delle “preferenze” di questo plug-in, impostate a true l’opzione “forbid IFRAME” (“proibisci IFRAME”).
Purtroppo, però, non tutti i browser permettono di definire con questa precisione cosa il browser può fare e cosa non può fare. Se il vostro browser abituale non permette di disabilitare il tag IFRAME e di disabilitare Javascript, sarebbe meglio che lo sostituiste con Firefox, almeno per qualche tempo.
In generale, poi, è opportuno non indulgere in attività “interattive” su siti sconosciuti. Ad esempio, è meglio evitare i giochi online realizzati con Adobe Flash per qualche tempo. La grande quantità di click che si generano giocando con questi piccoli videogame, infatti, potrebbe essere rediretta ad altri elementi della pagina e riutilizzata per scopi illeciti.

Altre informazioni
Ai “tecnici” consiglio vivamente di leggere i seguenti articoli.
Clickjacking
(Cancelled) / Clickjacking OSWAP AppeSec Talk
Not Clickjacking (Almost Certainly)

Lezioni apprese
Se seguite Punto Informatico da un po’ di tempo, sapete che durante l’estate è stata scoperta una vulnerabilità che riguardava niente meno che i DNS di Internet (” DNS Bacati. Internet a Rischio “). Anche in quel caso si è trattato di un “bug” nella progettazione del protocollo standard, non di un bug nella implementazione di questa o quella software house. Si trattava, come in questo caso, di un problema che affliggeva tutti i DNS esistenti e che ha richiesto una ridefinizione del meccanismo standard, a cui è seguito il rilascio di nuove versioni dei programmi.
Quello che sta diventando sempre più evidente è che la struttura stessa di Internet, progettata per un mondo in cui c’erano pochissimi utenti ed in cui la sicurezza non era un problema, non è più all’altezza della situazione.

Questo non vuol dire che si debba “blindare” Internet, rendendo possibile l’accesso solo a chi dispone di una apposita “carta d’identità digitale” e limitando le sue azioni ad un insieme predefinito di azioni “sicure”. Vuol solo dire che sarà necessario riprogettare e reimplementare alcuni aspetti cruciali di Internet per renderla compatibile con la situazione attuale.

Nel frattempo, bisognerà tenersi informati e ragionare prima di fare qualunque cosa. Ma questo, d’altra parte, è ciò che è necessario fare sempre nella vita, anche quando si guida l’automobile o quando si usa un macchinario di qualunque tipo per ragioni di lavoro.

Alessandro Bottoni

Link copiato negli appunti

Ti potrebbe interessare

Link copiato negli appunti