Wat is cross-site scripting (XSS)? Een volledige uitleg
Cross-Site Scripting (XSS) is een kwetsbaarheid in een website of app, waarmee een hacker de interacties van een gebruiker met de website of app kan compromitteren. De hacker doet dit door een kwaadaardig script in een vertrouwde website te injecteren. De kwaadaardige code wordt uitgevoerd wanneer het slachtoffer de website of toepassing gebruikt, met alle gevolgen vandien. Lees verder om te leren hoe cross-site scripting werkt, welke soorten aanvallen er zijn en wat je kunt doen om XSS te voorkomen.
Inhoud
Wat is cross-site scripting (XSS)?
Cross-site scripting, meestal XSS genoemd, is een cyberaanval waarbij hackers schadelijke code in een website of applicatie injecteren, met als doel deze in de browser van het slachtoffer uit te voeren.
De aanvaller injecteert de code via invoervelden. Populaire doelwitten voor XSS-aanvallen zijn daarom websites of apps waar gebruikers zelf input in kunnen voeren, bijvoorbeeld via een zoekfunctie, formulier of message board. Als de website de input in invoervelden niet goed valideert, wordt de kwaadaardige code teruggestuurd en in de browser van het slachtoffer uitgevoerd. Een succesvolle XSS-aanval kan leiden tot het overnemen van gebruikersaccounts, het stelen van persoonlijke of financiële gegevens of de installatie van malware.
Cross site-scripting verwees oorspronkelijk alleen naar JavaScript, maar XSS-aanvallen kunnen met elke client-side programmeertaal worden uitgevoerd, zoals ActiveX, Flash en HTML.
Hoe werkt cross-site scripting (XSS)
Cross-site scripting werkt door een kwetsbare website zo te manipuleren dat deze kwaadaardige code terugstuurt naar gebruikers. Deze kwaadaardige code wordt ingevoerd in velden die gebruikersinput toestaan, zoals zoekfuncties, commentaarvelden of formulieren.
Voor XSS-aanvallen worden client-side programmeertalen gebruikt, zoals JavaScript, die grote controle over een site kunnen uitoefenen. Een aanvaller kan JavaScript-code met scripttags invoegen in een invoerveld op de website, waarna de website het script uitvoert in de browser van het slachtoffer. Op deze manier kan een aanvaller vertrouwelijke informatie stelen en zelfs de account van de gebruiker overnemen.
Een typische XSS-aanval bestaat uit twee fases:
1. Om schadelijke JavaScript-code in de browser van een slachtoffer uit te voeren, moet een aanvaller eerst een manier vinden om kwaadaardige code (payload) te injecteren in een webpagina die het slachtoffer bezoekt.
2. Daarna moet het slachtoffer de webpagina met de kwaadaardige code bezoeken. Als de aanval op een bepaald persoon is gericht, kan de aanvaller social engineering en/of phishing gebruiken om een schadelijke URL naar het slachtoffer te sturen.
Oorzaken van cross-site scripting (XSS)
Cross-site scripting kan voorkomen wanneer aanvallers de kans hebben om kwaadaardige code in een website te injecteren. Een webpagina of toepassing is kwetsbaar voor XSS als de invoer van de gebruiker niet gecontroleerd of gevalideerd wordt, maar rechtstreeks in de gegenereerde output terechtkomt. Hierdoor wordt de code als het ware in de code van de website zelf opgenomen, waardoor deze zeer moeilijk detecteerbaar is. Vervolgens wordt de code tijdens websitebezoek of appgebruik in de browser van nietsvermoedende gebruikers uitgevoerd.
Jammer genoeg is er geen wondermiddel om XSS in webtoepassingen op te sporen. In plaats daarvan vereist het vinden van XSS-kwetsbaarheden een combinatie van menselijke inspanning (handmatige codecontrole) en technologische ondersteuning (geautomatiseerde code scanning tools).
Soorten cross-site scripting-aanvallen
Dit zijn de meestvoorkomende XSS-aanvallen:
Reflected XSS
Reflected XSS is de meest voorkomende en eenvoudigste vorm van XSS. Het ontstaat wanneer een gebruiker een HTTP-verzoek naar de server van een website stuurt en deze input op een onveilige manier in het antwoord naar de gebruiker worden opgenomen. Het kwaadaardige script wordt op het scherm van het slachtoffer weergegeven als een foutmelding of een zoekresultaat.
Omdat het lijkt alsof de foutmelding of zoekresultaten door de vertrouwde website worden gegenereerd, klik je nietsvermoedend op de prompt of link. Hierdoor wordt het kwaadaardige script van de aanvaller in de browser van de gebruiker uitgevoerd Nu kan het script elke actie uitvoeren en alle gegevens opvragen waartoe de gebruiker toegang heeft.
Persistent XSS
Een Persistent XSS (of Stored XSS)-aanval is mogelijk wanneer een website of toepassing gebruikersinvoer opslaat en dit aan andere gebruikers toont. Een toepassing is kwetsbaar als de gebruikersinvoer niet wordt gevalideerd voordat de inhoud wordt opgeslagen en in een HTML-responspagina’s wordt opgenomen.
Een voorbeeld hiervan is een blog waarop gebruikers reacties kunnen achterlaten die aan andere gebruikers worden getoond. De payload wordt automatisch aan gebruikers voorgeschoteld die de website bezoeken en in hun browser uitgevoerd. Ze hoeven hiervoor niet eerst op een kwaadaardige link te klikken. Dit wordt als het schadelijkste type XSS-aanval gezien, omdat het gebruikers op grote schaal kan treffen.
DOM Based XSS
Een DOM Based XSS-aanval wordt aan de clientzijde uitgevoerd na het laden van de pagina. DOM staat voor Document Object Model en geeft gebruikers toegang tot de inhoud, structuur en stijl van een webpagina zonder interactie met de server. Daarnaast bevat het DOM van een webpagina informatie over eigenschappen als de pagina-URL en meta-informatie.
Een DOM Based XSS-aanval wordt ook uitgevoerd door een slachtoffer ertoe te verleiden op een schadelijke URL te klikken. In tegenstelling tot alle andere soorten cross-site scripting is DOM-gebaseerde XSS puur een kwetsbaarheid aan de clientzijde. Dit betekent dat de payload de server nooit bereikt en de hele aanval in de webbrowser plaatsvindt. Hierdoor is het zeer moeilijk om een DOM XSS-aanval te detecteren. DOM-objecten die vaak worden gebruikt als locatie van kwaadaardige invoer zijn onder andere document.URL, document.referrer en location.search.
Impact van XSS-aanvallen
De impact van een XSS-aanval hangt af van de aard van het script, de effectiviteit ervan en de status van de gecompromitteerde gebruiker. Dit zijn een aantal schadelijke acties waar een XSS-aanval toe kan leiden:
Sessiekaping
Met een XSS-aanval kunnen hackers sessiecookies in de browser stelen om legitieme gebruikersaccounts te kapen. Zodra de aanvaller de sessie-ID van de gebruiker in handen heeft, kan hij zich voordoen als de gebruiker en kan hij alles doen waartoe de gebruiker op het netwerk gemachtigd is.
Sessiekaping is vaak gericht op specifieke personen. Als een cybercrimineel de sessiecookies van een administratief account weet te stelen, heeft hij algemene toegang tot de gehele applicatie of website. Regelmatig cookies verwijderen kan dit helpen voorkomen.
Lekken van gevoelige informatie
Persoonlijke informatie is altijd een gewild doelwit. Aanvallers gebruiken specifieke scripts om gevoelige gegevens, zoals sofi-nummers, persoonlijk identificeerbare informatie (PII) of creditcardgegevens te exfiltreren en hier hun voordeel mee te doen.
Zodra de aanvaller toegang heeft tot de persoonlijke of gevoelige informatie van gebruikers, kan hij banktransacties uitvoeren, losgeld eisen van een organisatie om de gegevens te wissen of de informatie op het dark web verkopen.
Website defacement
Website defacement is een aanval waarbij hackers een website binnendringen en de inhoud van de site vervangen door hun eigen inhoud. Als gevolg van deze sabotage worden vaak niet alleen de diensten verstoord, maar worden gebruikers ook omgeleid naar andere websites die zijn opgezet om hun apparaten met malware te infecteren.
Voorbeelden van cross-site scripting (XSS)
Om je een idee te geven van de (potentiële) schade die cross-site scripting aan kan richten, hebben we een paar incidenten op een rijtje gezet:
- PayPal. In 2015 werd een kritieke kwetsbaarheid ontdekt waardoor PayPal-betaalpagina’s direct konden worden herschreven. Gelukkig loste PayPal de bug kort na het melden van de kwetsbaarheid op, voordat er schade kon worden aangericht.
- YouTube. In 2010 werd cross-site scripting misbruikt in de reactiefunctie van YouTube in de Verenigde Staten, wat resulteerde in pop-ups met nepnieuws en omleidingen naar schadelijke websites.
- Amazon Alexa. In 2020 werd een XSS-kwetsbaarheid ontdekt in Amazon’s slimme luidspreker ‘Amazon Alexa’, waarmee persoonlijke informatie en spraakinvoer van gebruikers konden worden gelekt. Experts zeggen dat de aanval de installatie of deïnstallatie van Alexa-functies kon forceren, wat tot de diefstal van persoonlijke informatie kon leiden.
Gebruik NordVPN’s Threat Protection Pro om schadelijke websites te blokkeren en Dark Web Monitor om je digitale veiligheid te verbeteren.
Cross-site scripting voorkomen
De beste manier om te voorkomen dat je slachtoffer van een XSS-aanval wordt, is door jezelf goed te informeren. Leer tekenen van gevaar te herkennen voordat je per ongeluk schadelijke code uitvoert. Dit zijn enkele tips om XSS te voorkomen:
Zo kunnen gebruikers zich tegen XSS beschermen
Volg deze tips om te voorkomen dat je slachtoffer van een XSS-aanval wordt:
- Wees voorzichtig. Ben je op een website of in een applicatie en zie je iets vreemds of iets wat je niet verwacht? Een vreemde link of een onverwachte prompt. Neem het zekere voor het onzekere en klik er niet op.
- Gebruik een veilige browser. De meeste veilige browsers zoals Google Chrome, Safari en Internet Explorer hebben ingebouwde beveiligingsfuncties om Reflected XSS te detecteren en te blokkeren. Maak hier gebruik van.
- Vermijd schadelijke websites. De Threat Protection Pro-functie van NordVPN kan je cyberbeveiliging verbeteren door je voor schadelijke websites en links te waarschuwen. Zo loop je minder risico op een site terecht te komen waar een XSS-aanval plaats kan vinden.
Zo kunnen bedrijven en IT-managers zich tegen XSS beschermen
Ben je verantwoordelijk voor de beveiliging binnen een bedrijf? Neem deze voorzorgsmaatregelen om XSS te voorkomen:
- Installeer uitgebreide beveiligingssoftware op endpoints.
- Blokkeer e-mails die naar frauduleuze of kwaadaardige sites leiden.
- Blokkeer de toegang tot ongeautoriseerde sites vanuit het netwerk.
Zo kunnen webontwikkelaars en website-eigenaars zich beschermen
Als je webontwikkelaar of eigenaar van een website bent, kun je de volgende maatregelen nemen:
- Houd je applicaties up-to-date. Zorg ervoor dat je webserver en applicaties altijd bijgewerkt zijn.
- Filter en valideer input en output. Filter gebruikerinput en output zo strikt mogelijk op basis van de verwachte of geldige invoer.
- Stel HttpOnly in. Het instellen van HttpOnly voor cookies helpt de effecten van een mogelijke XSS-kwetsbaarheid te beperken. Hierdoor zijn cookies niet toegankelijk via client-side JavaScript.
- Laat een whitebox audit uitvoeren. Hierbij wordt de broncode van een website of toepassing door een ethische hacker op kwestbaarheden gecontroleerd.
Online beveiliging begint met een klik.
Blijf veilig met ‘s werelds toonaangevende VPN