Clickjacking
Clickjacking is een van de technieken die aanvallers gebruiken om sitebezoekers om te leiden om gevoelige informatie te verzamelen via gecompromitteerde websites. Als webdevelopers nadenken over het beveiligen van hun website, bedenken ze echter meestal niet dat aanvallers erop kunnen klikken via een andere site. In het artikel:
Clickjacking vindt plaats wanneer een aanvaller een nietsvermoedende gebruiker verleidt tot klikken op een onzichtbaar element. Dat element is verborgen in de gebruikersinterface en moeilijk te herkennen. Clickjacking staat ook bekend als UI-redressing.
Het doel van een clickjacking-aanval is om een sitebezoeker te verleiden om op de gehackte site te klikken, wat een actie op een andere, malafide iframed-website activeert. Deze klikken kunnen het verwijderen van een gebruiker, het bijwerken van machtigingen of andere acties tot gevolg hebben. Het zijn klikken en acties die normaal ook al op de site worden uitgevoerd, nu zit er echter een verborgen laag tussen die ze acties overneemt.
Bovendien kunnen hackers ook toetsaanslagen registreren met vergelijkbare technieken. Door een combinatie van iframes, tekstvakken en stylesheets te gebruiken, kunnen aanvallers een gebruiker bijvoorbeeld laten geloven dat ze een wachtwoord in een legitiem veld voor autorisatie typen – terwijl ze in werkelijkheid via een onzichtbaar kader inloggen op een andere site.
Clickjacking aanvallen voeren hackers meestal uit door de zichtbare interface van de website te veranderen. Dit gebeurt zodanig dat het slachtoffer zich niet bewust is van de aanval.
Deze misleiding kan niets vermoedende gebruikers zo ver krijgen dat ze bijvoorbeeld:
Een van de meest voorkomende clickjacking vormen is het overlappen van kwaadaardige content bovenop de bestaande pagina (content overlays). Hackers kunnen clickjacking op een verschillende manieren realiseren:
Nu we weten wat clickjacking is en enkele van de technieken die aanvallers gebruiken kennen, kijken we naar de manieren waarop we onze site tegen aanvallen kunnen beschermen.
De HTTP-header van X-Frame-Options voorkomt het gebruik van onze website in onzichtbare iframes.
Er zijn twee opties die we kunnen gebruiken:
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
De DENY- optie is het veiligst. Als we echter een van onze pagina’s in een frame willen gebruiken, kunnen we het gebruik van frames beperken tot ons domein met de SAMEORIGIN- optie.
Hoewel de grote browsers de X-Frame-Options- header ondersteunen, doen sommige browsers dat niet. Daarom moeten we deze optie combineren met enkele van de andere oplossingen hieronder.
Met Content Security Policy (CSP) kunnen we een beleid van headers of meta-elementen implementeren dat het laden van content op onze site beperkt.
We kunnen gebruikmaken van de frame-ancestors CSP instructie zodat de browser geen frames van andere domeinen toestaat.
Hier zijn enkele voorbeelden van CSP-beleidsregels voor frame-ancestors die we kunnen gebruiken:
# Disallow embedding. All iframes will be blank or contain a browser specific error page. Content-Security-Policy: frame-ancestors 'none'
# Allow embedding for your own site content only. Content-Security-Policy: frame-ancestors 'self'
Frame-busting, ook bekend als framekiller, kunnen we gebruiken om te voorkomen dat aanvallers onze site zonder toestemming in een frame laden .
Hoewel het in moderne browsers mogelijk is om de framestatus te “verbergen”, kunnen we het volgende JavaScript in heading (<head>) van onze webpagina’s opnemen als verdediging tegen clickjacking.
<!– Frame-Busting Script–>
<script>
if (self == top) {
document.documentElement.style.display = ‘block’;
} else {
top.location = self.location;
}
</script>
Dit kleine stukje javascript voorkomt de weergave van onze webpagina’s in de frames van andere websites.
Ook clickjacking van sessiecookies is te voorkomen. We kunnen namelijk een auth-cookies instellen op SameSite in onze HTTP-responsheader. Hiermee voorkomen we echter niet kwaadaardig iframe-gedrag, maar we voorkomen dat gebruikers op de website kunnen inloggen terwijl deze zich in een iframe bevindt.
Set-Cookie: authorization=secret; samesite
Deze techniek is alleen nuttig voor websites waarbij de inloggegevens van de gebruikers worden vastgehouden met behulp van (sessie) cookies.
Een eenvoudige manier om te testen of onze website kwetsbaar is voor clickjacking, kan met HTML. Dit kan als volgt:
Bij het aanroepen van onze webpagina via het iframe zal blijken of we onze pagina’s goed geconfigureerd hebben.
Clickjacking is voor aanvallers eenvoudig uit te voeren. Elke actie op onze site die gebruikers met één klik kunnen uitvoeren, kan een hacker kapen.
Technische maatregelen tegen Clickjacking hebben altijd betrekking op aanpassingen van onze site:
Om risico’s te beperken, raden we webdevelopers en webmasters ten zeerste aan om X-Frame-Options te gebruiken op webpagina’s die niet bedoeld zijn om binnen een frame uit te voeren. We kunnen ook gebruikmaken van een inhoudsbeveiligingsbeleid om risico’s te beperken en ons te beschermen tegen clickjacking. Het enige wat een bezoeker kan doen is alert blijven.
Mogelijk is dit een vertaling van Google Translate en kan fouten bevatten. Klik hier om mee te helpen met het verbeteren van vertalingen.