Alessandro Bottoni

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

Roma - 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
81 Commenti alla Notizia Clickjacking, tutti i browser vulnerabili
Ordina
  • Bottoni, io ho apprezzato.
    Hai descritto bene, hai virgolettato o "corsivato" dove serviva, hai linkato, hai citato, hai moderatamente consigliato, sei stato addirittura politically correct.

    Garbato ma deciso, divulgativo ma non semplicistico, allertante ma non allarmista.

    Grazie.
    non+autenticato
  • In realtà... non si può rischiare l'iscrizione a una newsletter finché non si digita un indirizzo email... così come non si rischia il furto di nessun dato, finché questo dato non viene inserito da qualche parte.
    Insomma non si rischia un bel nulla.

    Naturalmente i lettori spaventati sono andati subito a disabilitare l'iframe (senza aver capito niente), ottenendo solo di sottrarre funzionalità al web.
    Complimenti, davvero bravi.
    non+autenticato
  • Concordo pienamente,
    non solleviamo polveroni inutili.
    non+autenticato
  • Se fai un piccolo sforzo di fantasia puoi capire che i possibili effetti sono molto peggiori di quello che pensi.
    Senza entrare nei dettagli della vulnerabilità specifica di Flash, che richiede esclusivamente un click indipendentemente dal tuo stato di autenticazione o da altri parametri e per questo ha indotto Adobe a chiedere di posticipare la disclosure (ne sono a conoscenza in quanto membro del Mozilla Security Group), ti dò un aiutino sul caso generale: tutte le transazioni che ripresentano la scheda se non è correttamente compilata o se non contiene un nonce anti-CSRF valido, cioé la maggior parte, possono essere precompilati con una semplice richiesta GET o POST [b]effettuata dal sito ostile[/b]. Se esistono misure anti-CSRF, questa prima richiesta, che può essere completamente automatizzata, fallisce, ed è a questo punto che il clickjacking torna utile...
  • - Scritto da: Giorgio Maone
    > Se fai un piccolo sforzo di fantasia puoi capire
    > che i possibili effetti sono molto peggiori di
    > quello che
    > pensi.

    C'è una cosa che non capisco... si tratta di "attacchi" che possono essere effettuati da pagine preparate ad hoc, quindi diciamo che, come al solito, vale la regola di stare attenti ai siti sui quali si naviga, di controllare che non vi siano tentativi di phishing, etc... Da una lettura, forse distratta vista l'ora tarda, dell'articolo mi sembra quasi di capire che uno mentre sta facendo home banking può rischiare che qualcuno gli rubi username e password. Ragionando un po' sulla dinamica, con quelle poche conoscenze che ho, credo che occorra comunque che ci siano pagine non fidate aperte che cerchino di intercettare i click... ovvio che la possibilità di queste intercettazioni è fastidiosa, ma la portata del problema è comunque ridotta rispetto a quel che sembrerebbe a prima vista, per fortuna.
    Domani leggerò meglio, grazie per l'attenzione.
    non+autenticato
  • - Scritto da: Giorgio Maone
    > Se fai un piccolo sforzo di fantasia puoi capire
    > che i possibili effetti sono molto peggiori di
    > quello che
    > pensi.
    > Senza entrare nei dettagli della vulnerabilità
    > specifica di Flash, che richiede esclusivamente
    > un click indipendentemente dal tuo stato di
    > autenticazione o da altri parametri e per questo
    > ha indotto Adobe a chiedere di posticipare la
    > disclosure (ne sono a conoscenza in quanto membro
    > del Mozilla Security Group), ti dò un aiutino sul
    > caso generale: tutte le transazioni che
    > ripresentano la scheda se non è correttamente
    > compilata o se non contiene un nonce anti-CSRF

    Che cos'é un "nonce anti-CSRF"? Sembrerebbe un meccanismo per evitare richieste da siti terzi. Cross Site Reference Qualcosa?

    > valido, cioé la maggior parte, possono essere
    > precompilati con una semplice richiesta GET o
    > POST [b]effettuata dal sito ostile[/b].

    Quindi il sito ostile deve giá conoscere i tuoi dati, giusto?

    > Se
    > esistono misure anti-CSRF, questa prima
    > richiesta, che può essere completamente
    > automatizzata, fallisce, ed è a questo punto che
    > il clickjacking torna
    > utile...

    Qua non mi tornano i conti. Come fa a ridirigere il click su un'altra scheda?!?!? O si parla di IFrame? Ma puoi redirigere un click VERSO un elemento specifico di un IFrame?
  • - Scritto da: Fiamel
    > Che cos'é un "nonce anti-CSRF"? Sembrerebbe un
    > meccanismo per evitare richieste da siti terzi.
    > Cross Site Reference
    > Qualcosa?

    Cross-site Request Forgery, http://en.wikipedia.org/wiki/Cross-site_request_fo...


    > Quindi il sito ostile deve giá conoscere i tuoi
    > dati,
    > giusto?

    Non necessariamente. Se sei già loggato in un servizio di cui sei utente, es. la tua banca o un gateway di pagamento, i dati più importanti (le tue credenziali) sono già disponibili. Per il sito ostile è sufficiente aprire un form precompilato (da lui, non da te) con una transazione arbitraria e indurti semplicemente a cliccare sul pulsante "OK".

    > Qua non mi tornano i conti. Come fa a ridirigere
    > il click su un'altra scheda?!?!? O si parla di
    > IFrame?

    Esattamente, si parla di IFRAME

    > Ma puoi redirigere un click VERSO un
    > elemento specifico di un
    > IFrame?

    Certamente, è molto facile. Io l'ho fatto per un sacco di tempo col pulsante di installazione di NoScript, che non è quello che sembra.

    Inoltre, ci sono situazioni in cui non è necessario neppure che tu sia loggato da qualche parte o utilizzare un IFRAME, come nel caso dello specifico attacco avente come oggetto l'applet di configurazione di Flash, proprio quello per cui Macromedia aveva chiesto a RSnake e Jeremiah di ritirare la loro presentazione OWASP, che consentiva di attivare la webcam o il microfono per spiarti senza che tu te ne accorgessi.

    Ad ogni modo, i particolari sono stati resi noti "a tradimento" martedì scorso da un russo, quindi puoi leggere i dettagli sia sull'attacco che sulle contromisure qui:
    http://hackademix.net/2008/10/08/hello-clearclick-.../
    non+autenticato
  • > e indurti semplicemente a
    > cliccare sul pulsante
    > "OK".

    E puó usare il click rediretto perché cosí alla banca sembra "genuino" invece di uno generato via javascript, mi pare di ricordare.

    > Ad ogni modo, i particolari sono stati resi noti
    > "a tradimento" martedì scorso da un russo, quindi
    > puoi leggere i dettagli sia sull'attacco che
    > sulle contromisure
    > qui:
    > http://hackademix.net/2008/10/08/hello-clearclick-

    Grazie mille.
  • - Scritto da: Critico amatoriale
    > In realtà... non si può rischiare l'iscrizione a
    > una newsletter finché non si digita un indirizzo
    > email... così come non si rischia il furto di
    > nessun dato, finché questo dato non viene
    > inserito da qualche
    > parte.
    > Insomma non si rischia un bel nulla.
    >
    > Naturalmente i lettori spaventati sono andati
    > subito a disabilitare l'iframe (senza aver capito
    > niente), ottenendo solo di sottrarre funzionalità
    > al
    > web.
    > Complimenti, davvero bravi.

    a dire il vero ricordavo che iframe era deprecato da anni... o la storia è cambiata?
    non+autenticato
  • interessante il popup... spero che PI provveda quanto prima a sistemare la vulnerabilità dato che può essere sfruttata in malomodo...
    non+autenticato
  • - Scritto da: Marvho
    > tipo?

    Ad esempio, se passi con il mouse sulla faccina (e hai il blocco popup disabilitato per questo sito), ti si apre Google.

    Clicca per vedere le dimensioni originali

    Potevo anche farlo aprire direttamente, senza chiederti di far passare il mouse sull'immagine, e poteva anche essere un sito poco raccomandabile anziché il sito di Google...
    non+autenticato
  • - Scritto da: RabSide
    > interessante il popup... spero che PI provveda
    > quanto prima a sistemare la vulnerabilità dato
    > che può essere sfruttata in
    > malomodo...

    A me piace anche così com'è Imbarazzato
  • codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta codice di condotta

    a questo punto ci vuole
    non+autenticato
  • ???

    In che senso "codice di condotta"?

    Se vuoi, posso postare il "codice HTML" utilizzato...

       Daniele

    P.S.: il ripetersi dell'alert è un effetto collaterale parzialmente non voluto, dipende dal fatto che l'immagine è animata e viene ricaricata ogni volta (con conseguente esecuzione del codice)
    non+autenticato
  • - Scritto da: Daniele
    > ???
    >
    > In che senso "codice di condotta"?
    >
    > Se vuoi, posso postare il "codice HTML"
    > utilizzato...
    >
    >    Daniele
    >
    > P.S.: il ripetersi dell'alert è un effetto
    > collaterale parzialmente non voluto, dipende dal
    > fatto che l'immagine è animata e viene ricaricata
    > ogni volta (con conseguente esecuzione del
    > codice)

    i Manovali del Forum usano questo bug da mercoledì, ora stanno cercando di darsi un codice di condotta...
    ti avevo scambiato per uno degli IllustrissimiSorride
    non+autenticato
  • No, ho solo visto l'applicazione del bug nel thread "vedere e non guardare", e i vari tentativi di imitazione.
    Mi ha incuriosito, e ho cercato (con successo) di riprodurlo.

       Daniele
    non+autenticato
  • - Scritto da: Daniele
    > No, ho solo visto l'applicazione del bug nel
    > thread "vedere e non guardare", e i vari
    > tentativi di
    > imitazione.
    > Mi ha incuriosito, e ho cercato (con successo) di
    > riprodurlo.
    >
    >    Daniele

    "vedere e non toccare"...
    però tu hai toccato!

    E adesso, che ne facciamo di te?Sorride
    Ci toccherà farti sparire, sei un testimone troppo intelligente, o'capisc?Sorride
    non+autenticato
  • pubblica il codice html appena pi risolve il problema. pero' pubblicalo che è davvero interessante...
    non+autenticato
  • Se si fa doppio click su una parola qualsiasi di P.I. si apre in automatico Wikipedia per quella parola...Occhiolino
    Ah ah ah... trattasi di benevolo clickjacking???
    Ciao
    non+autenticato
  • - Scritto da: Cristian Viarisio
    > Se si fa doppio click su una parola qualsiasi di
    > P.I. si apre in automatico Wikipedia per quella
    > parola...
    >Occhiolino
    > Ah ah ah... trattasi di benevolo clickjacking???
    > Ciao

    no quella è una caratteristica di firefox non c'entra PI
    non+autenticato
  • No, lo fai pure con Opera e col Konqueror e SeaMonkey.
    Insomma penso qualunque browser.

    bye
    non+autenticato
  • - Scritto da: freefred
    > No, lo fai pure con Opera e col Konqueror e
    > SeaMonkey.
    > Insomma penso qualunque browser.
    >
    > bye

    explorer no
    non+autenticato
  • - Scritto da: pabloski
    > - Scritto da: freefred
    > > No, lo fai pure con Opera e col Konqueror e
    > > SeaMonkey.
    > > Insomma penso qualunque browser.
    > >
    > > bye
    >
    > explorer no

    explorer non e' un browser.
    non+autenticato
  • la scimmia d' acqua non lo fa
  • povera
    non+autenticato
  • Sarà... A me non apre un bel nulla.
    Firefox 3.0.3 su Win2000.
  • che vuoi, sarò io ottimista, ma a volte si spera che almeno su un sito come pi non si veda chiamare "hacker" quelli che hacker non sono.
    non+autenticato
  • E infatti nell'articolo si usavano argutamente le "virgolette" per sottolineare in maniera "ironica" il fatto che sarà così che i giornali chiameranno quelli che ci proveranno...
    Occhiolino
    non+autenticato
  • allora forse sono io che penso male, mah...
    non+autenticato
  • - Scritto da: paolino paperino
    > allora forse sono io che penso male, mah...

    eh si.
    però prima parli e poi pensi, e solo dopo che te l'hanno fatto notare.

    inoltre ignori l'utilizzo dei segni di base che esprimono la lingua scritta.
    non+autenticato
  • - Scritto da: paolino paperino
    > che vuoi, sarò io ottimista, ma a volte si spera
    > che almeno su un sito come pi non si veda
    > chiamare "hacker" quelli che hacker non
    > sono.

    vi credete dei tiger o dei black/white hat ... ma siete più lamerazzi di tutti quanti.

    in primo luogo ci sono virgolette o italic a dirvela tutta.

    Secondariamente sono stati usati e correttamente dove serviva i termini cracker o intruder.

    negli altri casi, sempre correttamente, si è virgolettato o usato come serviva: hacker, smanettone, persona che si inventa un sistema alternativo di utilizzare qualcosa che è nata per un certo scopo.

    quindi tornatevene a fare i fichetti con i vostri crackwarez e reimparate i termini

    io queste cose non le sapevo, ma l'articolo è ECCELLENTE.
    non+autenticato
CONTINUA A LEGGERE I COMMENTI
Precedente | 1 | 2 | 3 | Successiva
(pagina 2/3 - 15 discussioni)