Wat is clickjacking?

Clickjacking, soms ook wel “UI redressing” genoemd, is een manier om een gebruiker onbedoeld een actie uit te laten voeren waar een hacker voordeel bij heeft, zoals een wachtwoord veranderen. Clickjacking gaat meestal gepaard met social engineering en (kleine) security fouten.

Een voorbeeld van clickjacking

Andries de Vries* is een bekende blogger op superblog.com. Omdat het account van Andries zo succesvol is wil een hacker het account stelen. Als superblog.com kwetsbaar is voor clickjacking, dan kan een hacker een nep-domein aanmaken die bijvoorbeeld het wachtwoord van Andries veranderd. De hacker maakt in dit voorbeeld de website wineengratisvakantie.nl aan waarop je alleen maar 2x je mail adres hoeft in te voeren en op de knop te drukken.

* Deze naam is willekeurig gekozen

clickjacking voorbeeld

Wat Andries niet ziet, is dat superblog.com op de achtergrond is ingeladen. De hacker doet dit door superblog in te laden met een iframe. Een iframe is een html instructie die de browser vertelt dat een andere website in de pagina ingeladen moet worden. De iframe wordt vervolgens onzichtbaar gemaakt, zodat je niet ziet dat je eigenlijk op de pagina van superblog bezig bent. In feite heeft de hacker nu een lege witte pagina: superblog is nu namelijk onzichtbaar (maar aanwezig) en voor de rest is er nog niets. Nu maakt de hacker een formulier wat precies past op het wachtwoord veranderen formulier van superblog. De “Nu winnen” knopt valt precies op de “change password” knop. Hierdoor lijkt het alsof je meedoet om een vakantie te winnen, maar in feite wijzig je je wachtwoord bij superblog.

De hacker stuurt Andries een mail met de website, dit noemen we phising of ook wel social engineering. Andries dénkt dat hij een vakantie wint, maar in werkelijkheid veranderd hij zijn wachtwoord op superblog.com naar zijn e-mail adres. Omdat de hacker het e-mail adres van Andries weet, kan hij hierna inloggen op het account van Andries. Andries is nu slachtoffer van clickjacking.

Clickjacking voorkomen

In het bovenstaande voorbeeld gaan verschillende dingen mis. Allereerst, Andries klikt op een link uit de phishing-mail. Vervolgens staat superblog.com staat toe dat deze pagina ingeladen wordt middels een iframe. Daarbovenop is Andries altijd ingelogd, en wordt er niet gevraagd om het oude wachtwoord eerst in te voeren.

Tegelijkertijd is de oplossing heel simpel. Met een Content Security Policy (CSP) kan worden voorkomen dat superblog ingeladen kan worden door een andere website. De CSP header vervangt de x-frame-options header die vroeger gebruikt werd om clickjacking te voorkomen. De header die superblog hiervoor moet meesturen is als volgt:

Content-Security-Policy: frame-ancestors 'none';

Daarnaast kan superblog natuurlijk ook vragen om een wachtwoord voor gevoelige acties zoals het wijzigen van een wachtwoord, maar dit lost het probleem niet helemaal op, omdat er ook andere acties mogelijk zijn, zoals bijvoorbeeld het verwijderen van een blog bijvoorbeeld.

Meer informatie over het voorkomen van clickjacking staat op de website van OWASP: https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html

Samenvatting

Als je website niet goed geconfigureerd is kunnen andere websites deze inladen. Als gebruikers op je website in kunnen loggen, en ingelogd zijn, dan kunnen ze slachtoffer worden van clickjacking. Om dit te voorkomen kun je:

  • De CSP header meesturen
  • Voorkomen dat gebruikers lang ingelogd zijn, log ze bijvoorbeeld automatisch uit na 2 uur inactiviteit
  • Gevoelige functies zoals het wijzigen van een wachtwoord extra beschermen, bijvoorbeeld door het huidige wachtwoord te vragen

Wilt u testen of uw website kwetsbaar is voor clickjacking? Onze quickscan checkt of uw website kwetsbaar is voor clickjacking.

clickjacking

Meer informatie over onze diensten

Wilt u er zeker van zijn dat uw websites, apps of systemen vrij zijn van lekken of kwetsbaarheden? Onze experts gaan graag voor u aan de slag. Voor meer informatie over onze pentests of andere diensten kunt u vrijblijvend contact opnemen via onderstaand contactformulier. We vertellen u graag wat we voor u kunnen betekenen.

    Contact

    Randstad 22 147
    1316BM Almere

    info@cyberant.com
    +31 (0)85 047 1590