Cos’è il clickjacking
Il clickjacking è una tecnica di attacco informatico che induce l’utente a cliccare su elementi invisibili o mascherati all’interno di una pagina web. L’utente crede di interagire con contenuti legittimi, ma in realtà sta eseguendo azioni su un contenuto nascosto, spesso dannoso.
Vulnerabilità sfruttate
- IFrame invisibili sovrapposti a contenuti visibili.
- Manipolazione dell’interfaccia utente tramite overlay, ritagli, sostituzioni rapide, riposizionamenti.
- Drag-and-drop invisibile per completare moduli o rivelare dati.
- Scorrimento parziale di finestre di dialogo per ingannare l’utente.
- Uso di JavaScript per creare interazioni dinamiche e ingannevoli.
Difesa e contromisure
Lato server
- Content-Security-Policy (CSP): impedisce l’incorporamento non autorizzato di pagine web.
- Esempio:
Content-Security-Policy: frame-ancestors 'none';
- Esempio:
- X-Frame-Options: blocca il caricamento della pagina in frame.
- Esempio:
X-Frame-Options: DENY
- Esempio:
Lato client
- Script di frame busting: tentano di impedire il caricamento in iframe, ma sono poco affidabili.
- Estensioni browser anti-clickjacking:
- Chrome: ScriptSafe
- Firefox: NoScript
- Safari: JS Blocker
- ⚠️ Queste estensioni possono compromettere la funzionalità di siti basati su JavaScript.
Danni potenziali
- Furto di denaro (es. bonifici bancari non intenzionali).
- Installazione di malware.
- Furto di credenziali e dati sensibili.
- Accesso non autorizzato a risorse (es. webcam, microfono).
- Compromissione della reputazione aziendale.
Prevenzione e rimedi
- Educazione e formazione degli utenti: la consapevolezza è la prima linea di difesa.
- Implementazione di CSP e X-Frame-Options lato server.
- Monitoraggio continuo e test di sicurezza.
- Whitelist di siti affidabili per estensioni anti-JS.
- Design sicuro dell’interfaccia utente per evitare sovrapposizioni ingannevoli.
Il clickjacking è subdolo proprio perché è invisibile.
Tuttavia, ci sono alcuni segnali e comportamenti sospetti che un utente attento può osservare per difendersi, anche senza competenze tecniche avanzate.
Come può accorgersene un utente normale?
Ecco alcuni elementi macroscopici o indizi visivi che possono far sospettare un attacco di clickjacking:
1. Clic che portano a risultati inattesi
- Clicchi su un pulsante e succede qualcosa di completamente diverso da quanto ti aspettavi (es. si apre una finestra di pagamento, parte un download, cambia la pagina).
- Il sito sembra non rispondere al clic, ma in realtà qualcosa è stato attivato in background.
2. Interfaccia utente strana o incoerente
- Elementi sovrapposti o che si muovono in modo anomalo.
- Pulsanti o link che appaiono e scompaiono rapidamente.
- Parti della pagina che sembrano tagliate, trasparenti o non cliccabili.
3. Comportamenti sospetti del browser
- Il browser mostra attività non autorizzate, come accesso alla webcam, microfono, o apertura di finestre pop-up.
- Vedi iframe (finestre incastonate) che non dovrebbero esserci, magari con contenuti di altri siti.
4. Richieste di azioni troppo rapide
- Ti viene chiesto di trascinare, cliccare, o confermare qualcosa senza spiegazioni chiare.
- Moduli che si compilano da soli o che ti chiedono di completare campi in modo strano.
Cosa può fare un utente per difendersi?
✅ Buone pratiche
- Non cliccare impulsivamente: se qualcosa sembra strano, fermati.
- Controlla l’URL: assicurati che il sito sia quello giusto e non un clone.
- Evita siti non HTTPS: se il sito non è sicuro, è più vulnerabile.
- Disattiva JavaScript temporaneamente su siti sospetti (con estensioni come NoScript).
- Usa estensioni anti-clickjacking: proteggono da iframe e script sospetti.
Formazione e consapevolezza
- Imparare a riconoscere interfacce sospette.
- Sapere che non tutto ciò che è visibile è reale: un pulsante può essere solo una maschera.
Conclusione
Il clickjacking è insidioso perché sfrutta la fiducia dell’utente e la trasparenza dell’interfaccia. La miglior difesa è una combinazione di misure tecniche e formazione continua (cybersecurity awareness).
Cosa guardare come hacker etico
✅ Elementi chiave da analizzare
- Uso di iframe invisibili (
opacity: 0
) - Allineamento preciso tra il bottone visibile e quello nascosto
- Query string manipolata per precompilare il modulo (
?destinatario=attaccante
) - Assenza di protezioni server come
X-Frame-Options
oContent-Security-Policy
- Eventuali script JS che forzano il comportamento dell’utente (es.
auto-click
,scroll
,focus
)
Esempio di pagina “trappola”
⚠️ Disclaimer
Questo codice è solo a scopo educativo e simulativo. Non deve essere usato in ambienti reali o per scopi malevoli.
<!DOCTYPE html>
<html>
<head>
<title>Offerta imperdibile!</title>
<style>
iframe {
position: absolute;
top: 100px;
left: 100px;
width: 300px;
height: 100px;
opacity: 0; /* invisibile */
z-index: 2;
}
#fake-button {
position: absolute;
top: 100px;
left: 100px;
z-index: 1;
background-color: orange;
padding: 20px;
font-size: 18px;
cursor: pointer;
}
</style>
</head>
<body>
<div id="fake-button">Scopri l'offerta</div>
<!-- Frame invisibile con il modulo bancario -->
<iframe src="https://banca-vittima.it/bonifico?destinatario=attaccante&importo>
</body>
</html>