Kwetsbaarheden in WordPress treffen miljoenen sites

Kwetsbaarheden WordPress

WordPress heeft in de nieuwste 5.3.8 versie vier kwetsbaarheden opgelost die in de core van WordPress zelf aanwezig waren. De Amerikaanse Overheids Vunerability database heeft deze kwetsbaarheden een score van 8 op een schaal van 10 gegeven. De kwetsbaarheden blijken sinds versie 3.7 in WordPress aanwezig te zijn.

De vier kwetsbaarheden:

  • SQL-injectie vanwege gebrek aan gegevensopschoning in WP_Meta_Query (ernstniveau hoog, 7,4)
  • Geauthenticeerde objectinjectie in multisites (ernstklasse gemiddeld 6,6)
  • Stored Cross Site Scripting (XSS) via geverifieerde gebruikers (ernstniveau hoog, 8,0)
  • SQL-injectie via WP_Query vanwege onjuiste opschoning (ernstniveau hoog, 8,0)

Drie van de vier kwetsbaarheden werden ontdekt door beveiligingsonderzoekers buiten WordPress. WordPress had geen idee totdat ze op de hoogte werden gebracht.

SQL-injectie is een van de meest voorkomende technieken voor het hacken van websites.

WordPress malware door gebrek aan gegevensopschoning

Het opschonen van gegevens is een manier om te bepalen wat voor soort informatie in de database terechtkomt. De database bevat informatie over de site,  wachtwoorden, gebruikersnamen, gebruikersinformatie en informatie die nodig is om de site te laten functioneren.

Wanneer gegevens niet gecontroleerd worden voordat ze opgeslagen worden in de database, kan de gebruiker bijvoorbeeld in een opmerkingen veld de volgende code plaatsen:

“>window.open(“http://hacksite.com”);

Als in de website bijvoorbeeld bij de reviews van een product het bericht wordt getoond, dan doet deze regels iets stiekems. Het sluit de HTML input tag en voegt een JavaScript regel toe die een popup opent met de url http://hacksite.com. Alle bezoekers van je site krijgen deze popup met reclame of andere informatie. Dit is een manier om een site van malware te voorzien.

Site hacken door SQL injectie

Als bijvoorbeeld het inloggen niet nagekeken wordt wat de gebruiker invoert, is eenvoudig een wachtwoord aan te passen. Dit controleren wordt data sanitization of SQL injectie genoemd.

Inlognaam: ICTP
Wachtwoord: Onderhoud

De database voert de volgende zoekopdracht uit:
SELECT * FROM Gebruikers WHERE Inlognaam =”ICTP” AND Wachtwoord =”Onderhoud”

Als de volgende gegevens worden ingevoerd zonder controle:

Inlognaam: or “”=”
Wachtwoord:
or “”=”

De database voert nu de volgende zoekopdracht uit
SELECT * FROM Gebruikers WHERE Inlognaam = “” or “”=”” AND Wachtwoord = “” or “”=””

Het resutlaat is altijd TRUE en de hacker is ingelogd en kan de inhoud van de site aanpassen en bijvoorbeeld privégegevens van klanten kopiëren.

Niet verwijderen van oude plugins of theme

WordPress heeft de mogelijkheid om plugins en themes automatisch te updaten. Aangeraden wordt om deze functie aan te zetten. Het risico kan zijn dat een plugin na een update andere HTML genereert en je site niet meer de gewenste layout heeft.

Wat WordPress niet controleert is wanneer een plugin of theme voor het laatst is geupdate. WordPress controleert ook niet automatisch of de plugin nog wel in de WordPress.org store wordt aangeboden. Als een plugin na controle en klachten niet voldoet, of lange tijd niet is geupdate, wordt de plugin uit de WordPress store gehaald. Alleen blijft deze plugin nog wel geïnstalleerd in de verschillende websites. Vaak zijn dit de ingangen van hackers en automatische scripts om toegang tot de site te krijgen.