Clickjacking
# Clickjacking

Il clickjacking ("rapimento del clic") è una tecnica informatica fraudolenta. Durante una normale navigazione web, l'utente clicca con il puntatore del mouse su di un oggetto (ad esempio un link), ma in realtà il suo clic viene reindirizzato, a sua insaputa, su di un altro oggetto, che può portare alle più svariate conseguenze: dal semplice invio di spam, al download di un file, fino all'ordinare prodotti da siti di e-commerce.

Oltre al rapimento del clic, possono essere intercettati i tasti premuti, ad esempio quando si inserisce la password dell'email o del conto bancario. Entrambe queste possibilità (rapimento del clic o dei tasti premuti sulla tastiera) vengono eseguite senza la cognizione dell'utente.

## Funzionamento

Esistono due tecniche per fare il clickjacking:

La prima è possibile a causa di una caratteristica, apparentemente innocua, di HTML, con cui le pagine web possono essere usate per compiere azioni non previste. Si basa su JavaScript, infatti nel momento del clic dell'utente c'è un gestore dell'evento che fa eseguire una determinata azione, agli attaccanti basta passare come parametri quello che gli serve.

Esiste però anche un'altra tecnica, chiamata IFrame (Inner Frame), che consiste nel creare una pagina trasparente ed appogiarla sopra alla pagina reale. In questo modo l'utente crede di consultare una normale pagina con i suoi relativi bottoni, mentre in realtà sta navigando sulla pagina invisibile.

Un utente cade nella trappola del clickjacking solitamente cliccando su un link. L'utente non è in grado di riconoscere la differenza tra una pagina sana e una pagina ingannevole, perciò può cadere nella trappola senza cognizione delle proprie azioni. Infatti combinando insieme fogli di stile, pagine trasparenti e box di testo, gli utenti possono essere indotti a credere di inserire informazioni in una normale form compilativa (ad esempio password), quando invece vengono intercettate dagli attaccanti.

## Esempi

Le applicazioni di questa tecnica sono le più varie, possono essere "innocue" oppure anche più pericolose per l'utente che ci casca; quelle per ora conosciute sono le seguenti:

* Portare l'utente ad acquistare un prodotto su Amazon; per questo utilizzo però l'attaccante ha un solo clic a disposizione, quindi confida che l'utente sia già loggato e che abbia attivato lo 1-clic ordering (la possibilità di ordinare con un clic)
* Attivare microfono e webcam dell'utente tramite Adobe Flash (questa situazione dovrebbe essere stata fixata)
* Scaricare e far partire dei malware sul computer dell'utente
* Far seguire all'utente qualcuno su Twitter
* Condividere link su Facebook
* Mettere "mi piace" su Facebook a pagine o link (questa tecnica è stata chiamata LikeJacking)
* Dirigere l'utente su siti che forniscano pubblicità e quindi guadagno all'attaccante
* Far partire video su YouTube per guadagnare views

## Prevenzione

Ci sono delle soluzioni per cercare di limitare questa problematica, possono essere sia client che server side, ovvero rispettivamente da realizzare dall'utente sul proprio browser che dal proprietario del sito.

### Client-Side

Queste sono le soluzioni che può adottare l'utente:

**NoScript**

La protezione contro il clickjacking può essere ottenuta, con un buon grado di sicurezza (secondo quanto riportato ne "Browser Security Handbook" del 2008), installando su Mozilla Firefox NoScript. È un prodotto di ClearClick, pubblicato il 8 Ottobre 2008, che aiuta gli utenti prevenendo il clic su eventuali pagine trasparenti.

**GuardedID**

Questo prodotto include la protezione contro il clickjacking su Internet Explorer e Firefox, forzando le pagine trasparenti a diventare visibili. In questo modo l'utente può avere la visione completa della pagina ed evitare di premere su bottoni errati.

**Gazzelle**

Gazzelle è un prodotto di Microsoft Research per IE, che usa una tecnica simile al modello di sicurezza usato per i sistemi operativi.

Una pagina con un'origine diversa da quella corretta può figurare i propri contenuti dinamici soltanto se questi sono opachi.

### Server-Side

Queste sono le soluzioni che può adottare il proprietario del sito:

**Framekiller**

I proprietari del sito possono inserire un framekiller JavaScript nelle pagine in cui non vogliono che vengano inserite pagine da fonti estranee. Essendo una protezione basata su JavaScript non è sempre affidabile. Ad esempio su Internet Explorer questa soluzione può essere aggirata inserendo la pagina-bersaglio all'interno di elemento del tipo:

**X-Frame-Options**

Questo è un frame introdotto nel 2009 in Internet Explorer. Agisce inserendo nell'header HTTP X-Frame-Options, che offre una parziale protezione contro il clickjacking, in seguito questa soluzione fu adottata anche dagli altri browser.

L'header stabilisce le impostazioni per i frame, fissando quali sono le fonti dalle quali possono arrivare eventuali pagine esterne. In questo modo si evita che il sito venga attaccato con l'inserimento di frame dalle origini non consentite dall'header.

Questa soluzione, X-Frame-Options, nel 2013 è stata pubblicata ufficialmente come RFC 7034, senza però diventare uno standard.

**Content Security Policy**

Questa soluzione rende obsoleta X-Frame-Options ed è preferita dai browser. Sfrutta la direttiva frame-ancestor del 'Content Security Policy' con la quale si può abilitare o disabilitare codice embedded da determinate pagine ostili.

