Tra la moltitudine di attacchi informatici, tra le metodologie più svariate e i nuovi metodi non convenzionali, ne esistono alcuni che operano latenti all’insaputa dell’utente e al di sopra di ogni sospetto. Proprio questi risultano essere i più difficili da individuare e combattere poiché, quasi sempre, i complici siamo noi stessi: parliamo del clickjacking.
Indice degli argomenti
Clickjacking: di cosa si tratta
Il clickjacking è un attacco che induce un ignaro utente a cliccare su un elemento della pagina Web invisibile o mascherato da un altro elemento.
Gli obiettivi a cui si cerca di portare gli utenti possono essere molteplici come scaricare involontariamente malware, visitare pagine Web dannose, fornire credenziali o informazioni sensibili, trasferire denaro o acquistare prodotti online.
In genere, il clickjacking viene eseguito visualizzando una pagina invisibile o un elemento HTML, all’interno di un iframe, sopra la pagina visualizzata dall’utente. L’utente crede di fare clic sui link e su tutte le informazioni visibili ma in realtà sta facendo clic su un elemento invisibile nella pagina aggiuntiva presente sotto la pagina visualizzata.
Naturalmente, la pagina non visualizzata può essere una pagina dannosa oppure legittima ma che l’utente non aveva intenzione di visitare. Ad esempio, molto spesso, come è facile pensare, gli obiettivi più ricercati sono i siti bancari ove avvengono le operazioni di trasferimento di denaro.
Prima di procedere con la trattazione ricordiamo che un iframe, come riporta Wikipedia (dall’inglese inline frame) in informatica è un elemento HTML. Si tratta, infatti, di un frame “ancorato” all’interno della pagina, equivale cioè ad un normale frame, ma con la differenza di essere un elemento (interno) della pagina, non esterno.
Clickjacking: ipotetiche fasi di un attacco
Vediamo di seguito quali possono essere i passaggi effettuati al fine di sferrare un attacco di questo tipo:
- L’attaccante crea una pagina attraente che promette di offrire all’utente offerte vantaggiose o prodotti molto scontati.
- In background l’aggressore verifica se l’utente è connesso al proprio sito bancario e, in caso affermativo, carica la schermata che consente il trasferimento di fondi, utilizzando query per inserire nel modulo le coordinate bancarie dell’aggressore.
- La pagina del bonifico bancario viene visualizzata in un frame invisibile sopra la pagina dell’offerta vantaggiosa, con il pulsante “Conferma bonifico” esattamente allineato ad esempio sul pulsante “Scopri l’offerta” visibile all’utente.
- L’utente visita la pagina e fa clic sul pulsante “Scopri l’offerta”.
- In realtà l’utente sta facendo clic sull’frame invisibile e ha fatto clic sul pulsante “Conferma bonifico”. I fondi vengono trasferiti all’attaccante.
- L’utente viene reindirizzato a una pagina con le informazioni sull’offerta (totalmente ignaro di cosa sia successo in background).
Questo esempio banale illustra che, in un attacco di clickjacking, l’azione dannosa (sul sito web della banca, in questo caso) non può essere ricondotta all’attaccante perché l’utente l’ha eseguita mentre era legittimamente connesso al proprio account.
Da questo è facile comprendere il dilagare di doppi se non tripli codici di verifica che i siti di transazioni monetarie mettono in campo per difendersi da tali frodi.
Clickjacking: tipologie di attacco
Le tipologie di clickjacking possono assumere diverse varianti e sono rappresentate da un’ampia famiglia di vettori e tecniche di attacco, generalmente definiti attacchi di ripristino dell’interfaccia utente.
Gli attacchi possono essere suddivisi in due macro-categorie, basate sull’utilizzo di contenuti sovrapposti.
Gli attacchi basati su “overlay” (processo di trasferimento di un blocco di codice di programma o di altri dati nella memoria principale, sostituendo ciò che è già memorizzato) sono di gran lunga i più popolari e l’incorporamento di pagine in iframe invisibili è l’approccio tecnico più comune in questo caso. Ancora una volta, ci sono diverse categorie principali di clickjacking basato su overlay:
- Sovrapposizione trasparente completa: questo è il metodo utilizzato quando in una pagina legittima trasparente (cosiddetta pagina degli strumenti) viene sovrapposta una pagina dannosa accuratamente predisposta.La pagina degli strumenti viene caricata in un frame invisibile e posizionata sopra la pagina visibile impostando un valore z-index più alto. Uno dei primi attacchi di clickjacking di alto profilo ha utilizzato questo metodo contro la pagina delle impostazioni del plug-in Adobe Flash per indurre gli utenti a concedere alle animazioni Flash l’accesso alla fotocamera e al microfono del computer.
- Ritaglio: per questo attacco, l’attaccante sovrappone solo i controlli selezionati dalla pagina trasparente alla pagina visibile. A seconda dell’obiettivo dell’attacco, ciò potrebbe significare coprire i pulsanti con collegamenti ipertestuali invisibili per attivare un’azione diversa dal previsto, coprire le etichette di testo con istruzioni fuorvianti, sostituire le etichette dei pulsanti con comandi falsi o coprire l’intera pagina legittima con contenuti fuorvianti, lasciando solo un bottone originale esposto.
- Overlay nascosto: questo è stato il primo approccio dimostrato in riferimento al clickjacking. L’aggressore crea un frame di 1×1 pixel contenente contenuto dannoso e lo posiziona sotto il cursore del mouse, in modo che venga nascosto dal cursore ma qualsiasi clic venga registrato sulla pagina dannosa.
- Sostituzione rapida dei contenuti: gli overlay opachi vengono utilizzati per coprire i controlli mirati, rimossi solo per una frazione di secondo per registrare il clic e immediatamente sostituiti. Ciò richiede all’aggressore di prevedere il momento esatto del clic della vittima, ma con una piccola conoscenza delle abitudini e della psicologia dell’utente del computer, è più facile di quanto sembri.
L’altra macro categoria cerca di operare senza sfruttare le vulnerabilità del clickjacking per inserire gli overlay. Gli aggressori hanno molte opzioni per indurre gli utenti a fare clic su controlli imprevisti:
- Scorrimento: l’aggressore fa scorrere parzialmente una finestra di dialogo legittima o un altro elemento di una pagina Web fuori dallo schermo, in modo che l’utente veda solo alcuni dei controlli. Ad esempio, una finestra di dialogo di avviso potrebbe scorrere fuori dallo schermo in modo che siano visibili solo i pulsanti OK e Annulla, con l’attaccante che posiziona un innocuo testo di richiesta in modo che sembri che i pulsanti si applicano a questo messaggio e non ad un avviso.
- Riposizionamento: questo attacco richiede che l’attaccante sposti rapidamente una finestra di dialogo attendibile (o un altro elemento dell’interfaccia utente) sotto il cursore mentre l’utente è concentrato sul fare clic su altri elementi dall’aspetto innocente. Se funziona, l’utente farà clic istintivamente sul controllo sostituito prima di rendersi conto che qualcosa è cambiato. Come per la sostituzione rapida del contenuto, l’autore dell’attacco può spostare rapidamente la finestra di dialogo dopo il clic per evitare il rilevamento.
- Drag-and-drop: sebbene la maggior parte degli attacchi di clickjacking si concentri esplicitamente sull’intercettazione dei clic, le vulnerabilità di trascinamento della selezione possono essere sfruttate per indurre l’utente a eseguire una serie di altre azioni, come il completamento di moduli Web trascinando il testo invisibile in caselle di testo invisibili o rivelare informazioni personali sensibili all’aggressore.
Esistono poi altre interazioni dinamiche tra l’utente e gli elementi della pagina Web, rese possibili dalla combinazione di elementi di JavaScript, i quali offrono innumerevoli opzioni per indurre gli utenti a eseguire azioni impreviste.
Poiché gli attacchi di clickjacking sfruttano la fiducia dell’utente nei contenuti e nei controlli visualizzati, possono essere difficili da rilevare automaticamente.
Tecniche di prevenzione
Di seguito andiamo a indicare qualche breve consiglio per potersi difendere da attacchi di clickjacking che, come abbiamo potuto apprendere in questo articolo, risultano assai difficili da riconoscere e da scongiurare.
Tra le innumerevoli implementazioni a disposizione degli utenti troviamo diversi e differenti metodi di protezione che possono essere predisposti sia lato client sia lato server.
Su questa distinzione andiamo a valutare quali siano gli opportuni accorgimenti da intraprendere.
Prevenzione del clickjacking lato server
Molti attacchi di clickjacking si verificano su duplicati di siti Web legittimi. Un utente malintenzionato potrebbe clonare il sito Web e modificarlo con collegamenti ad altre pagine occorre quindi assicurarsi che nessuna delle pagine Web possa essere racchiusa in un tag <FRAME> o <IFRAME>.
Ci sono due modi per farlo:
- Specificare la corretta direttiva Content-Security-Policy. La Content Security Policy (CSP) con le sue regole sugli antenati dei frame, è una tattica di sicurezza informatica altamente efficace contro l’incorporamento di pagine Web. Oltre a proteggere il sito web dall’incorporamento di iframe, la Content-Security-Policy protegge anche il sito web da cross-site scripting (XSS), uno dei tipi più comuni di attacchi informatici. Per implementare questa difesa occorre prima assicurarti che il server web sia impostato per restituire la Content-Security-Policy. Una volta che CSP è stato implementato sul sito web, le intestazioni di risposta della direttiva frame-ancestors CSP appropriate possono essere impostate per non consentire l’incorporamento. La direttiva frame-ances ‘none’ impedirà a tutti i domini di incorporare il sito Web in un frame.
- Specificare la direttiva X-frame-Options negare. L’ intestazione della risposta x-frame-options specifica se un browser è autorizzato a incorporare le pagine web in un frame. L’intestazione della risposta x-frame-options alla fine diventerà obsoleta e sostituita dalla direttiva frame-ancestor, quindi non dovrebbe essere il metodo di difesa principale. Per inviare le intestazioni HTTP corrette x-frame-options dalle risorse del proprio sito web, occorre impostare la direttiva su “deny”. Per esempio: X-Frame-Options: DENY. Una volta che le x-frame-options sono impostate sulla direttiva deny sul lato server, tutti i tentativi di caricare il sito web in un frame verranno bloccati. Ciò è equivalente all’auto-direttiva frame-primario della Content Security Policy che consentirà l’inquadratura del contenuto web solo se il sito condivide la stessa origine.
Prevenzione del clickjacking lato client
La prevenzione del clickjacking lato client non è efficace quanto le tattiche di prevenzione lato server. Questi metodi dovrebbero essere implementati come opzione secondaria.
- Script di frame busting. Gli script di frame busting impediscono al sito web di funzionare all’interno di un frame. Tramite i componenti aggiuntivi Javascript, è possibile specificare come dovrebbe reagire un browser quando la pagina viene caricata in un frame. Una tecnica comune di frame buster consiste nel forzare il browser a ricaricare la pagina web di esca offset nella finestra in alto. In tal modo, il sito Web viene caricato sopra il livello iframe dannoso. Omettendo l’attributo allow-top-navigation, l’iframe contenente la pagina web non può essere caricato sopra la pagina invisibile. Con questa difesa in atto, l’attaccante è in grado di consentire al browser di eseguire script e inviare moduli. Gli script di frame busting non sono una difesa consigliata contro gli attacchi di clickjacking. Molti browser Web bloccano il codice Javascript che interrompe il frame e i browser che non lo fanno possono essere facilmente ingannati per consentire l’overlay dannoso.
- Installare le estensioni del browser. Le estensioni del browser anti-clickjacking non forniscono la migliore esperienza utente perché disabilitano tutto il javascript sui siti Web caricati. Molti siti Web popolari come Facebook, Twitter e Youtube funzionano su Javascript e queste estensioni ne impediranno la funzionalità. Per mantenere l’esperienza Javascript su siti attendibili, è necessario specificare manualmente una whitelist. Di seguito riportiamo un elenco di componenti aggiuntivi per il blocco di Javascript per diversi browser:
- Chrome: Scriptsafe è un’estensione per Chrome;
- Mozilla Firefox: NoScript è un componente aggiuntivo del browser Mozilla Firefox;
- Safari: JS Blocker è un’estensione del browser Safari.
Anche in questo caso, quindi, è possibile affermare che contro gli attacchi di clickjacking la miglior difesa è la prevenzione adottando particolari metodologie di operatività.
Conclusioni
La diatriba tra sviluppatori e consumatori su quale approccio sia più efficace è costantemente aperta credendo che la prevenzione dovrebbe provenire dagli sviluppatori e non dai consumatori, altri invece affermano che gli X-frame hanno troppe limitazioni per essere efficaci.
Alla fine, combinare gli strumenti e incoraggiare gli utenti a prestare attenzione ai siti che visitano e al lavoro che svolgono online è il modo migliore per bloccare gli attaccanti prima che prendano il sopravvento. Anche in questo caso quindi la formazione rimane il pilastro inamovibile per la propria difesa.