XSS-aanvallen: hoe bescherm je jezelf, je klanten en je bedrijf.

Tobias Schüring Laatst bijgewerkt op 23.01.2020
5 Min.
Op deze manier kunnen websitebeheerders en gebruikers zich beschermen tegen cross-site scripting-aanvallen.
Laatst bijgewerkt op 23.01.2020

XSS-aanvallen zijn bijzonder sluw. En vooral populair bij hackers. We laten zien hoe je zich kunt beschermen tegen het kapen van jouw site - als websitebeheerder en als gebruiker.

1599 WordPress -Plugins werden over een periode van 14 maanden geanalyseerd door de beveiligingsprovider Wordfence , en de meest voorkomende kwetsbaarheden van allemaal waren zogenaamde XSS-kwetsbaarheden. Bijna 47 procent van de gevonden leemten had te maken met cross-site scripting - afgekort XSS. Reden genoeg om dit type aanval, waarbij hackers kwaadaardige code in uw site injecteren en deze virtueel kapen, eens nader te bekijken. Op die manier gebruiken de aanvallers uw blog, uw winkel of uw bedrijfswebsite als vehikel voor hun illegale activiteiten.

Deze grafiek laat zien dat XSS de meest voorkomende kwetsbaarheid is die wordt aangetroffen in Plugins , volgens wordfence .
XSS is de kwetsbaarheid die het vaakst wordt aangetroffen in Plugins , volgens wordfence .

XSS-kwetsbaarheden zijn altijd gevaarlijk wanneer gebruikersinvoer naar de webserver wordt doorgestuurd zonder te worden gecontroleerd, bijvoorbeeld in contactformulieren of commentaarvelden. Eenmaal uitgebuit, kunnen de hackers gegevens stelen, uw site in een botnet integreren of de computers van uw bezoekers infecteren. Gelukkig zijn er enkele zeer eenvoudige beschermingsmaatregelen tegen XSS-aanvallen.

XSS is even relevant voor bezoekers als voor websitebeheerders 

Het is belangrijk om te begrijpen dat de kwetsbaarheden van XSS op pagina'WordPress s even relevant zijn voor de beheerders van de pagina's als voor de bezoekers. Websitebeheerders worden uitgebuit om de lage doelen van hackers te bereiken en bezoekers van sites zijn vaak het slachtoffer, bijvoorbeeld door het stelen van gegevens of het verspreiden van kwaadaardige code.

In principe beginnen XSS-aanvallen wanneer gebruikers gegevens naar de webserver van de websitebeheerder sturen. Op deze neuralgische punten wordt code geïnjecteerd, die - indien de invoer van de gebruiker niet kritisch wordt gecontroleerd, b.v. door een firewall - de pagina kan infecteren. De verschillende soorten XSS-aanvallen worden samengevat in ons achtergrondartikel over dit onderwerp.

Het belangrijkste: regelmatige WordPress updates

De kwetsbaarheden die hackers gebruiken om kwaadaardige code te injecteren bevinden zich ofwel in de WordPress core, in Plugins of in Themes. Dit is precies waarom regelmatige updates van al deze onderdelen zo belangrijk zijn. De kwetsbaarheden die tot nu toe zijn gevonden, zijn in deze updates verholpen.

Het is ook zinvol regelmatig de updategegevens van de respectieve fabrikanten te lezen om een gevoel te krijgen voor welke veiligheidslekken regelmatig via de updates worden gedicht. Voor de onderhouds- en beveiligingsupdates van de WordPress core, wordt deze informatie bijvoorbeeld gedocumenteerd in de WordPress blog. Het beste voorbeeld hiervan is de laatste beveiligingsupdate, WordPress 4.7.5.

Firewalls en whitelists tegen eenvoudige XSS-aanvallen

Een andere eenvoudige beschermingsmaatregel tegen XSS-aanvallen zijn zogenaamde web application firewalls, of WAF. Deze firewalls vormen het hart van grote beveiligingsprojectenPlugins en worden door het onderzoeksteam van de fabrikant gevoed met de meest recente kwetsbaarheden. Een WAF is in het algemeen een procedure die webtoepassingen beschermt tegen aanvallen via het Hypertext Transfer Protocol (HTTP).

Maar zelfs deze beschermingsmechanismen hebben hun grenzen. Bij sommige XSS-aanvallen vindt de aanval plaats via de database. Daarom is het controleren van gebruikersinvoer op kwaadaardige code een van de centrale beveiligingsmechanismen in de strijd tegen XSS-aanvallen. De inhoud van commentaren wordt bijvoorbeeld gescand op verdachte tekenreeksen en zo nodig gesorteerd.

De gegevensuitvoer moet ook worden beveiligd

Regelmäßige Updates schließen vorhandene XSS-Sicherheitslücken und Firewalls sowie Whitelists versuchen Schadcode auszufiltern, bevor dieser den Webserver erreicht und die Seite infizieren kann. Doch sollte auch die Datenausgabe entsprechend gesichert werden. Die meisten Programmier- und Skriptsprachen, wie PHP, Perl oder JavaScript, besitzen hierfür bereits vordefinierte Funktionen zur Zeichenersetzung bzw. -maskierung. Diese sorgen dafür, dass “problematische” HTML-Metazeichen (z. B. <, > und &) durch harmlose Zeichenreferenzen ersetzt werden. So wird verhindert, dass der Schadcode aktiv werden kann. Auch sollte der Code mithilfe von sog. sanitization libraries bereinigt werden. Hierfür wird ein Plugin auf dem Server installiert und zusätzlicher Code in deinen Seitenquellcode eingebunden. Der folgende Code-Schnipsel sorgt dann zum Beispiel dafür, dass <class> zu den erlaubten Attributen hinzugefügt wird:

Zo kan de configuratiecode die je nodig hebt om code sanitization uit te voeren eruit zien.
Zo kan de code die je nodig hebt om code sanitization uit te voeren eruit zien.

Programmeervaardigheden zijn vereist om dit uit te voeren. Deze bescherming van de gegevensuitvoer kan gemakkelijk worden geïmplementeerd door bijvoorbeeld een ontwikkelaar of CTO.

Een gezonde dosis scepsis: hoe gebruikers zichzelf beschermen

Maar niet alleen beheerders van pagina's, ook bezoekers van pagina's worden getroffen door XSS-aanvallen. Veel XSS-aanvallen kunnen al worden voorkomen door kritisch en zorgvuldig om te gaan met "vreemde" links. Gebruikers hebben bijvoorbeeld de mogelijkheid om NoScript add-ons tegebruiken. Deze voorkomen de uitvoering van scripts, d.w.z. de schadelijke coderegels die bijvoorbeeld gegevens stelen.

Als u het zekere voor het onzekere wilt nemen, kunt u ook client-side cross-site scripting voorkomen door de JavaScript-ondersteuning in de browser uit te schakelen. Want als deze zogenaamde actief scripting is gedeactiveerd, maken bepaalde soorten XSS-aanvallen geen kans meer, aangezien de kwaadaardige toepassingen niet eens worden opgestart. De meeste moderne websites "werken" dan echter niet meer naar behoren - of in het ergste geval, helemaal niet meer. Hier moet dus een afweging worden gemaakt tussen de veiligheids- en de bruikbaarheidsaspecten.

Hoe schakel je JavaScript uit met één klik in de Chrome browserinstellingen.
Hoe schakel je JavaScript uit met één klik in de Chrome browserinstellingen.

Conclusie: XSS-aanvallen zijn soms zeer complex, maar bescherming is soms vrij eenvoudig.

XSS is een gevaar voor u als websitebeheerder, maar ook voor uw bezoekers en klanten. Telkens weer worden kwetsbaarheden in Plugins of Themes bekend. Bijvoorbeeld de Plugin WP Statistieken, met meer dan 400.000 actieve installaties, of WooCommerce en Jetpack, elk met meer dan drie miljoen actieve installaties.

Als u uw Plugins en Themes up to date houdt en een WAF gebruikt, hebt u al een grote stap in de goede richting gezet. Als u ook whitelists gebruikt voor inkomende en uitgaande code, hebt u uw site al uitstekend beveiligd. Met name de laatste twee maatregelen zijn echter niet gemakkelijk uit te voeren zonder kennis van programmeren.

Vergeleken met de vrij primitieve Brute Force aanvallen de complexere XSS-aanvallen zijn helaas nog relatief vaak succesvol. Er zijn echter aanzienlijk minder van deze zogenaamde complexe aanvallen dan er Brute Force aanvallen zijn op WordPress pagina's.. Toch moet je het aanvallers zo moeilijk mogelijk maken. Een succesvolle hack kost niet alleen tijd en geld voor het verwijderen van de scripts, maar kan ook uw positie in zoekmachines in gevaar brengen.

Misschien heeft u al ervaringen met XSS aanvallen? Wat doe je om jezelf tegen hen te beschermen?

Als systeembeheerder waakt Tobias over onze infrastructuur en vindt hij alle mogelijke manieren om de prestaties van onze servers te optimaliseren. Door zijn onvermoeibare inzet is hij vaak 's nachts bij Slack te vinden.

Gerelateerde artikelen

Reacties op dit artikel

Laat een opmerking achter

Jouw e-mailadres zal niet worden gepubliceerd. Verplichte velden zijn met een * gemarkeerd.