Internet si basa sulla fiducia. Quando un utente web visita un sito, presume che i pulsanti su cui clicca eseguano le azioni indicate. Tuttavia, i criminali informatici sviluppano costantemente metodi per sfruttare questa fiducia. Uno di questi metodi ingannevoli è l' attacco di clickjacking.
Il clickjacking si verifica quando un aggressore induce un utente a cliccare su qualcosa di diverso da ciò che intendeva cliccare.
Sovrapponendo un livello trasparente o un iframe invisibile a una pagina legittima, gli hacker possono dirottare i clic destinati a un pulsante fittizio o a un link innocuo. Questo può portare a gravi conseguenze, come il download di malware, il trasferimento di fondi o l'inconsapevole attivazione di un "Mi piace" su una pagina di social media.
Se sei il proprietario di un sito web, comprendere questa minaccia è fondamentale. Questa guida illustra i meccanismi di questa tecnica di correzione dell'interfaccia utente, come rilevare le vulnerabilitàe i passaggi specifici per proteggere il tuo sito WordPress utilizzando l'intestazione X-Frame-Options e la Content Security Policy (CSP).
Comprendere gli attacchi di clickjacking: i rischi della correzione dell'interfaccia utente
Il termine "clickjacking" è una fusione di "click" e "hijacking". Negli ambienti della sicurezza, è formalmente noto come attacco di modifica dell'interfaccia utente.
Questo nome descrive perfettamente il meccanismo: l'aggressore modifica l' interfaccia utente (UI) per nascondere il sito web di destinazione effettivo.

In un attacco di clickjacking standard, l'aggressore crea una pagina dannosa. Questa pagina carica una pagina mirata, in genere una pagina sensibile come un login bancario o un pannello delle impostazioni, all'interno di un iframe.
L'aggressore imposta l'iframe in modo che sia completamente trasparente. Quindi inserisce il proprio contenuto visibile, come un lettore video o la richiesta di un premio gratuito, direttamente sotto o sopra il frame invisibile.
L'utente clicca su quello che pensa sia un pulsante "Gioca" o un link "Richiedi premio". In realtà, sta cliccando sulla pagina invisibile caricata da un'origine diversa.
Poiché il computer e il browser dell'utente conservano ancora i cookie per il sito di destinazione, l'azione viene autenticata ed elaborata immediatamente. L'utente non si rende conto di aver appena compiuto un'azione ad alto rischio.
Questo attacco sfrutta la capacità del web di inquadrare i contenuti. Sebbene il framing sia appropriato per incorporare mappe o video, diventa pericoloso quando una pagina web non limita esplicitamente chi può inquadrarla.
Senza un controllo adeguato, qualsiasi sito web può diventare vittima di modifiche all'interfaccia utente.
Per saperne di più: Il costo reale degli errori di sicurezza di WordPress
Proteggi il tuo sito WordPress prima che gli aggressori colpiscano
Proteggi il tuo sito web dal clickjacking e da altre minacce con i servizi di assistenza tecnica specializzati di Seahawk.
Come funzionano gli attacchi di clickjacking tramite iframe invisibili e overlay?
Per comprendere appieno il pericolo, dobbiamo analizzare l'esecuzione tecnica. Il fulcro di un attacco di clickjacking si basa sulla proprietà di opacità dei CSS.
Un aggressore crea un sito esca. Questo sito funge da esca. Su questa pagina, l'aggressore utilizza codice HTML per caricare la pagina web della vittima all'interno di un iframe.
Il codice potrebbe sembrare innocente, ma il CSS racconta una storia diversa. L'attaccante imposta l'opacità dell'iframe a 0,0. Questo crea un iframe invisibile.
Sebbene il contenuto inquadrato sia tecnicamente presente, l'utente non può vederlo. L'aggressore posiziona quindi questo livello invisibile esattamente sopra un pulsante visibile sul suo sito esca.
Ad esempio, immagina che un aggressore voglia costringerti a eliminare il tuo blog. Carica la pagina "Elimina account" del tuo blog in un iframe invisibile. Posiziona il pulsante invisibile "Elimina" direttamente sopra il pulsante visibile "Vinci un regalo" sul suo sito dannoso.
Quando l'utente clicca sul pulsante "Vinci un regalo", l'evento clic attraversa gli elementi visibili e colpisce la finestra superiore del frame invisibile. Il browser interpreta questo come un clic legittimo sul pulsante "Elimina". Poiché è probabile che l'utente abbia effettuato l'accesso con lo stesso browser, il comando viene eseguito immediatamente senza che l'utente se ne accorga.
In alcuni casi, questo metodo consente agli aggressori di aggirare i token CSRF (Cross-Site Request Forgery), poiché il browser invia la richiesta come se l'utente avesse fisicamente cliccato sul pulsante nella pagina legittima.
Per approfondire: Come utilizzare la protezione antimalware per salvaguardare efficacemente il tuo sito web
Principali tipi di attacchi di clickjacking e varianti comuni
Sebbene l'overlay di base sia il metodo più comune, esistono diverse varianti del clickjacking progettate per sfruttare comportamenti specifici o vulnerabilità del browser.

Likejacking: sfruttare le interazioni sui social media
Il likejacking è una forma specifica di clickjacking che prende di mira i social network. L'attaccante cerca di manipolare l'utente inducendolo a mettere "mi piace" o a condividere una pagina senza il suo consenso.
In questo scenario, l'iframe invisibile contiene un di Facebook o un di Twitter . L'attaccante posiziona questo livello trasparente sopra un video o un'immagine su una pagina dannosa.
Quando l'utente prova a cliccare su play per riprodurre il video, inavvertitamente mette "Mi piace" alla pagina dell'aggressore. Questo aumenta la credibilità sociale dei siti dannosi e facilita la diffusione di spam o truffe tra gli amici dell'utente.
Vulnerabilità di clickjacking annidato e opzioni X-Frame
Il clickjacking annidato prende di mira le pagine web che tentano di utilizzare script di frame-busting ma non riescono a implementarli correttamente. Alcuni browser legacy o configurazioni specifiche consentono agli aggressori di bloccare questi script.
In questa variante, l'aggressore annida l'iframe di destinazione all'interno di due frame diversi. Manipolando il modo in cui il browser gestisce la posizione della finestra e la navigazione, l'aggressore impedisce al sito legittimo di "uscire" dal frame.
Ciò evidenzia perché affidarsi esclusivamente agli script lato client non è una buona pratica; sono necessarie intestazioni lato server robuste.
Per approfondire: Prevenire gli attacchi di forza bruta contro i siti web WordPress
CursorJacking, MouseJack e altre tecniche ingannevoli
Il CursorJacking è una variante altamente ingannevole. In questo caso, l'attaccante sostituisce il cursore del mouse con un cursore personalizzato falso. Utilizzando CSS e JavaScript, l'attaccante distingue il cursore reale da quello falso.
L'utente percepisce che il mouse sta passando sopra un link sicuro. Tuttavia, il cursore reale (che potrebbe essere invisibile o spostato) sta passando sopra un elemento dannoso. Quando l'utente clicca, l'azione si verifica nella posizione reale del cursore, non in quella visibile e fittizia.
Analogamente, altre tecniche prevedono lo spostamento rapido del frame invisibile per seguire il mouse (MouseJack), assicurando che il pulsante dannoso sia sempre sotto il cursore, indipendentemente da dove lo sposta l'utente.
Per saperne di più: Patching virtuale in WordPress: come funziona e perché è importante
Come rilevare le vulnerabilità di clickjacking sulle tue pagine web?
Prima di poter prevenire il clickjacking, devi verificare se il tuo sito web è vulnerabile. Fortunatamente, verificare questa vulnerabilità è semplice.
Il controllo principale consiste nel verificare se la tua pagina web può essere caricata all'interno di un iframe su un'origine diversa. Puoi farlo creando un semplice file HTML sul tuo computer locale:
<html> <body> <iframe src="https://yourwebsite.com" width="500" height="500"></iframe> </body> </html>
Apri questo file con un browser moderno, come Chrome o Firefox. Se il tuo sito web si carica correttamente all'interno del box, sei vulnerabile al clickjacking.
Un sito sicuro dovrebbe rifiutarsi di connettersi o visualizzare uno spazio vuoto, indicando che il browser ha bloccato il contenuto in frame.
Puoi anche utilizzare scanner di sicurezza online o componenti aggiuntivi del browser progettati per i penetration test. Questi strumenti analizzano l'intestazione della risposta HTTP del tuo sito.
Verificano specificamente l'assenza dell'intestazione X-Frame-Options o dell'intestazione Content Security Policy. Se queste intestazioni sono mancanti, lo strumento contrassegnerà il tuo sito come ad alto rischio.
Prevenzione lato server: utilizzo di X-Frame-Options per limitare il framing
La difesa più tradizionale e ampiamente supportata contro il clickjacking è l'intestazione X-Frame-Options (XFO). Si tratta di un'intestazione di risposta inviata dal server web che indica al browser se una pagina può essere visualizzata in un formato<frame> ,<iframe> ,<embed> , O<object> .

Quando un browser carica una pagina, controlla questa intestazione. Se la policy viene violata, il browser garantisce la sicurezza dell'utente non visualizzando il contenuto.
In genere vengono utilizzati tre valori con l'intestazione X-Frame-Options:
- NEGA: Questa è l'impostazione più restrittiva. Impedisce a qualsiasi dominio di inquadrare la pagina richiesta. Anche se la pagina tenta di inquadrare se stessa, l'operazione fallirà. Questa è l'ideale per una pagina sensibile che non deve mai essere incorporata.
- SAMEORIGIN: questa opzione consente di inquadrare la pagina solo tra pagine con la stessa origine (stesso dominio, protocollo e porta). Questo è il metodo più comune per proteggere i siti WordPress, poiché consente di incorporare i propri contenuti bloccando al contempo gli aggressori esterni.
- ALLOW-FROM uri: questa direttiva è obsoleta e aveva lo scopo di consentire il framing da un URI specifico. Tuttavia, non è supportata da molti browser moderni e dovrebbe essere generalmente evitata a favore di standard più recenti.
Impostare X-Frame-Options su SAMEORIGIN è spesso sufficiente per bloccare la stragrande maggioranza degli attacchi di clickjacking. Garantisce che un aggressore non possa caricare la tua pagina di accesso sul suo sito esca.
Tuttavia, XFO presenta delle limitazioni. Di fatto, consente l'utilizzo di un solo dominio (lo stesso dominio) o di nessuno. Manca di granularità se è necessario consentire a più partner specifici di inquadrare i propri contenuti. Per questo, abbiamo bisogno di una soluzione più moderna.
Scopri di più: Come creare una pagina protetta da password su WordPress
Protezione avanzata: Content Security Policy (CSP) e Frame-Ancestors
Sebbene X-Frame-Options sia efficace, la Content Security Policy (CSP) rappresenta il futuro della difesa contro il clickjacking. La CSP è un livello di sicurezza che aiuta a rilevare e mitigare vari tipi di attacchi, tra cui Cross-Site Scripting (XSS) e l'iniezione di dati.
Per prevenire il clickjacking, utilizziamo la direttiva frame-ancestors. Questa direttiva specifica i genitori che possono incorporare una pagina.
Implementazione della direttiva Frame-Ancestors per il controllo granulare
La direttiva frame-ancestors offre molta più flessibilità rispetto a X-Frame-Options. Permette di definire un elenco di domini autorizzati a inquadrare i contenuti.
Ad esempio, l'intestazione CSP di una Content Security Policy potrebbe apparire così:
Content-Security-Policy: frame-ancestors 'self' https://trusted-partner.com;
In questo esempio:
- 'self' si comporta come la direttiva XFO SAMEORIGIN, consentendo allo stesso dominio di inquadrare il contenuto.
- https://trusted-partner.com consente a uno specifico sito esterno di inquadrare il contenuto.
È anche possibile utilizzare caratteri jolly o consentire tutti HTTPS tramite "allow from https", sebbene l'elenco rigoroso sia più sicuro. Questo controllo granulare è fondamentale per i siti web aziendali che si basano su integrazioni tra siti.
Perché i Frame-Ancestors CSP sono superiori agli script Frame-Busting?
In passato, gli sviluppatori utilizzavano JavaScript per il frame-busting. Questi script venivano eseguiti sul lato client e controllavano se la posizione della finestra superiore corrispondeva a quella corrente. In caso contrario, cercavano di uscire dal frame.
Gli aggressori hanno trovato rapidamente il modo di neutralizzare questi script. Browser come Internet Explorer (nelle versioni precedenti) o funzionalità come l'attributo sandbox HTML5 sugli iframe potevano bloccare l'esecuzione dello script di frame-busting, rendendo inutile la difesa.
Frame Ancestors e X-Frame-Options sono controlli lato server. L'attaccante non può disattivarli perché il browser applica la regola prima di visualizzare il contenuto. Il browser legge l'intestazione della risposta e si rifiuta semplicemente di visualizzare l'elemento della pagina dannoso.
L'utilizzo di frame-ancestors CSP è attualmente la migliore pratica perché è standardizzato nei browser moderni. Sebbene X-Frame-Options sia ancora utile per i browser legacy, frame-ancestors ha la precedenza nei browser che supportano entrambi.
Passo dopo passo: proteggere il tuo sito WordPress dal clickjacking
Per proteggere un sito WordPress è necessario aggiungere le intestazioni corrette. Non è necessario essere uno sviluppatore per implementare queste modifiche, ma si consiglia di eseguire sempre un backup del sito prima di modificare i file del server.

Passaggio 1: configurazione delle intestazioni in .htaccess o functions.php
Se il tuo sito WordPress è eseguito su un server web Apache, puoi modificare il file .htaccess che si trova nella directory principale.
Per implementare l'intestazione X-Frame-Options, aggiungere questa riga:
<IfModule mod_headers.c>L'intestazione aggiunge sempre X-Frame-Options SAMEORIGIN</IfModule>
Per implementare la Content Security Policy con frame-ancestors:
<IfModule mod_headers.c>L'intestazione aggiunge sempre Content-Security-Policy "frame-ancestors 'self';"</IfModule>
Questa configurazione garantisce che solo il tuo sito possa includere le tue pagine nel frame. Per consentire a un partner di inserire il suo URL, è sufficiente aggiungere il suo URL dopo "self".
In alternativa, è possibile aggiungere le intestazioni tramite il file functions.php di WordPress nel tema attivo. Questo metodo funziona indipendentemente dal tipo di server (Apache o Nginx) purché PHP gestisca le intestazioni:
funzione add_security_headers() { header('Opzioni X-Frame: SAMEORIGIN'); header("Criterio di sicurezza del contenuto: antenati dei frame 'self';"); } add_action('invia_headers', 'add_security_headers');
Questo codice si aggancia al di generazione dell'intestazione di WordPress e inserisce le direttive di protezione per ogni pagina web servita.
Passaggio 2: utilizzo dei plugin di sicurezza di WordPress per la difesa lato client
Se modificare il codice ti sembra troppo rischioso, puoi utilizzare i plugin di sicurezza di WordPress. Molte suite di sicurezza complete aggiungono automaticamente queste intestazioni.
- All-In-One Security (AIOS): questo plugin offre impostazioni specifiche per la protezione degli iframe. È possibile abilitare l'opzione "Nega query non valide" e regole firewall specifiche che spesso includono la gestione delle opzioni dei frame.
- Headers Security Advanced & HSTS WP: Questo plugin dedicato consente di configurare specifiche intestazioni HTTP senza richiedere modifiche al codice. È possibile selezionare X-Frame-Options da un menu a tendina e impostarlo su SAMEORIGIN.
Sebbene i plugin siano comodi, assicurati che configurino correttamente l'intestazione della risposta.
Alcuni plugin potrebbero aggiungere solo meta tag, che sono meno efficaci per i frame-ancestor (CSP tramite meta tag non supporta i frame-ancestor). Verifica sempre il risultato utilizzando un verificatore di intestazioni online.
Conclusione
La minaccia del clickjacking è persistente perché sfrutta la percezione visiva dell'utente piuttosto che un bug del software. Finché i browser supporteranno gli iframe, gli aggressori tenteranno di modificare l'interfaccia utente.
Per un proprietario di un sito web, ignorare questa vulnerabilità significa mettere a rischio la sicurezza degli utenti e la reputazione del sito. Un utente che scarica malware o perde denaro a causa di un pulsante sul tuo sito perderà fiducia nel tuo brand.
La soluzione è una difesa a più livelli.
- Audit: analizza regolarmente le tue pagine web per verificare se possono essere inquadrate.
- Implementare XFO: utilizzare l'intestazione X-Frame-Options impostata su SAMEORIGIN per proteggere gli utenti sui browser legacy e altri browser che potrebbero non supportare completamente CSP.
- Implementare CSP: adottare la direttiva frame-ancestors della Content Security Policy per un controllo granulare e affidabile sui browser moderni.
- Monitoraggio: utilizzare plugin di sicurezza per garantire che le intestazioni rimangano attive dopo gli aggiornamenti del tema o del server.
Assumendo il controllo su come vengono strutturati i tuoi contenuti, smantelli efficacemente gli strati invisibili su cui fanno affidamento gli hacker. Garantisci che quando un utente clicca, stia eseguendo le azioni che desidera, proteggendolo dal cadere vittima di uno degli attacchi più ingannevoli del web.
Domande frequenti su un attacco di clickjacking
Qual è il metodo più comune utilizzato in un attacco di clickjacking?
Il metodo più comune consiste nell'inserire livelli nascosti su una pagina web legittima. Un aggressore crea iframe invisibili che inducono gli utenti a cliccare su elementi che non possono vedere. Questi livelli nascosti consentono agli aggressori di attivare azioni senza che l'utente ne sia consapevole, facilitando potenzialmente il loro accesso a funzionalità sensibili.
In che modo le opzioni X Frame della stessa origine aiutano a prevenire il clickjacking?
Same-origin X-Frame-Options è un'intestazione di risposta che consente a una pagina di essere inserita in frame solo da pagine provenienti dalla stessa origine. Questo impedisce a domini esterni di incorporare il tuo sito in frame dannosi e contribuisce a bloccare interazioni non autorizzate.
Qual è la policy frame-ancestors nella Content Security Policy?
La policy "frame antenati" definisce quali domini sono autorizzati a incorporare le tue pagine web. Fa parte della Policy di Sicurezza dei Contenuti e offre un controllo maggiore rispetto alle vecchie intestazioni. Questa policy è altamente efficace nel prevenire gli attacchi di clickjacking.
Gli attacchi di clickjacking possono consentire agli aggressori di accedere agli account degli utenti?
Sì, il clickjacking può aiutare gli aggressori ad accedere indirettamente agli account. Mascherando pulsanti e azioni, gli aggressori possono indurre gli utenti a modificare le impostazioni, approvare autorizzazioni o inviare moduli a loro insaputa.
Qual è il modo migliore per prevenire il clickjacking su un sito web WordPress?
Il modo più efficace per evitare il clickjacking è adottare più misure di difesa. Impostare l'intestazione di risposta X-Frame-Options, applicare una policy frame-ancestors e mantenere attivi i plugin di sicurezza di WordPress. Combinando queste misure si bloccano gli attacchi alla fonte.