“Zorg ervoor dat je programma’s up-to-date zijn”, “Update Windows”, en: “Klik nooit op vreemde links in e-mails”: we kennen de adviezen, maar wat gebeurt er eigenlijk als je deze negeert? Ik besloot mijn WordPress-updates een tijdje niet te doen. Het duurde – en dit is géén clickbait – 6 dagen voordat mijn complete site was gehackt. In dit artikel lees je welke lessen je kunt trekken uit dit experiment, welke stappen je niet mag vergeten als je website gehackt is én hoe je kunt voorkomen dat je slachtoffer wordt van cybercriminelen.
Ik kan iedereen een miljoen-miljard keer op het hart drukken dat het belangrijk is om updates te doen. Ik heb dit artikel geschreven om, aan de hand van een praktijkvoorbeeld, te laten zien wat het gevolg kan zijn van het vergeten of overslaan van software-updates. Dit artikel is bedoeld voor eigenaren en beheerders van (WordPress-)websites.
Wat je kunt vinden in dit artikel
- Inzicht in hoe een echte WordPress-hack verloopt.
- Antwoord op de vraag: "Hoe vaak moet ik mijn site updaten?"
- Wat je moet doen als je site gehackt is.
- Waarom een gehackte website vrijwel altijd een datalek met zich meebrengt.
- Hoe je voor minder dan de prijs van een kopje koffie per dag je site veilig houdt.
De opzet van het onderzoek
Om openheid van zaken te geven: dit experiment is door puur toeval ontstaan. Als onderdeel van mijn programma Duurzaam Ondernemen zit ik in het webteam bij enkele verenigingen. Het webteam van een van die verenigingen had de eer om een nieuw lid te verwelkomen. In dat soort gevallen maak ik altijd een kopie van de website, zodat het nieuwe lid wegwijs kan worden in de webomgeving, zonder schade aan te richten. Zo’n kopie heet een stagingwebsite.
Het is goed om het onderscheid te kennen tussen staging en productie. Een stagingwebsite of stagingomgeving is een plek die speciaal is ingericht om (nieuwe functionaliteit) te kunnen testen. Bezoekers hebben geen toegang tot de stagingwebsite. Een productiewebsite of productie-omgeving is de website zoals deze wordt getoond aan bezoekers.
Ik zorgde dagelijks dat de desbetreffende productiewebsite werd voorzien van core-, plugin-. en thema-updates. De stagingwebsite nam ik hier niet in mee. Daar zag ik geen reden voor: de stagingwebsite werd immers toch alleen gebruikt om wegwijs te worden in het systeem. Of dit verstandig was, bespreek ik aan het einde van dit artikel.
Ter geruststelling van de bezorgde lezer:
- De productieservers van Stach Redeker zijn nooit aangevallen geweest. De desbetreffende stagingwebsite stond niet op een server van Stach.
- Alleen deze stagingwebsite heeft gedurende een periode geen updates ontvangen. Alle websites in mijn WP-netwerk zijn gedurende de beschreven periode dagelijks voorzien van updates.
-
De stagingwebsite stond gedurende de hele tijd geïsoleerd van zijn productiewebsite.
Dit is een best practise waar ik later in het artikel op terug zal komen. -
Er zijn geen persoonsgegevens buitgemaakt. Er werden geen persoonsgegevens opgeslagen op de stagingwebsite.
Ook dit is een best practise waar ik later op terug zal komen.
Tijdspad
Het volgende deel van dit artikel beschrijft een gereconstrueerde versie van het tijdspad van de hack. Voor de liefhebber bevat dit onderdeel ook wat juicy, technische details.
11 mei: kritieke kwetsbaarheid in Essential Addons for Elementor
Patchstack, een bedrijf gespecialiseerd in WordPress-beveiliging, slaat groot alarm. Er zit een kritieke kwetsbaarheid in de Essential Addons for Elementor plugin. Meer dan 1 miljoen websites zijn getroffen. De kwetsbaarheid stelt buitenstaanders in staat om adminrechten te verkrijgen op iedere site die de plugin gebruikt. Ik voorzie alle websites in mijn onderhoudsnetwerk dezelfde dag nog van de officiële patch. De stagingomgeving was niet opgenomen in mijn onderhoudsnetwerk en kreeg deze patch dus niet. Hier begint het verhaal.
17 mei: eerste succesvolle aanval
Zes dagen later lukt het hackers om het wachtwoord aan te passen van een van de admins van de stagingwebsite. Het aanpassen van een wachtwoord is niet direct verdacht: het kan prima zo zijn dat desbetreffende admin zelf zijn wachtwoord heeft aangepast. Er gaan dan ook geen alarmbellen rinkelen.
25 mei: tweede aanval, backdoor geplaatst
Een tweede aanval wordt uitgevoerd op 25 mei. Het is onduidelijk of deze aanval is uitgevoerd door dezelfde hacker, of door een andere. De aanvaller installeert een backdoor (letterlijk: achteringang). Een backdoor is een manier om de beveiliging in het vervolg te omzeilen.
In dit geval doet de backdoor zich voor als onschuldige ‘File Management’ plugin.
/*
* Plugin Name: File Management
* Description: File Management
* Version: 5.7.1
* Author: jk
* Author URI: https://douniwang.com/
* Plugin URI: https://douniwang.com/
* Text Domain: douniwang
*/
Maar schijn bedriegt: het gaat hier om Gel4y Mini Shell, een gevaarlijke backdoor van Indonesische oorsprong. Dankzij deze backdoor heeft de aanvaller nu 24/7 toegang tot de site, zelfs als we de wachtwoorden van admins zouden aanpassen.
26 mei: database leeggetrokken
Een dag later wordt een tweede plugin geïnstalleerd. Ook deze identificeert zich als File Manager. Nadere inspectie van de broncode wijst uit dat ook deze plugin vrij weinig met het beheren van bestanden te maken heeft.
Wat de plugin doet? De plugin maakt een logfile aan en plaatst daarin alle gegevens die nodig zijn om de centrale database binnen te komen. That’s it. Hele database leeggetrokken.
[...]
echo "db_host:<{$db_host}>";
echo "db_name:<{$db_name}>";
echo "db_user:<{$db_user}>";
echo "db_password:<{$db_password}>";
[...]
31 mei: eerste melding van de anti-virusscanner
Iets minder dan een week later ontvang ik een melding van de virusscanner dat er malware is gevonden in de stagingomgeving. Alhoewel de gebeurtenissen op 25 en 26 mei wel zijn gedetecteerd, is het webteam hier niet op de hoogte van gebracht.
Feit is: de waarschuwing kwam te laat. Toegegeven, de virusscanner stond minder strak afgesteld dan de virusscanners die ik draai op mijn hostingomgevingen, maar dan mag zo’n late waarschuwing eigenlijk alsnog niet voorkomen. De aanvallers hebben toegang tot de database. Hiermee hebben ze praktisch de hele site in handen.
Gehackt! Hoe nu verder?
In het geval van onze stagingwebsite is de oplossing eenvoudig: met één druk op de knop vernietig ik alle gegevens en bestanden. Twee minuten later lijkt het alsof de website nooit heeft bestaan. Voor de zekerheid reset ik de wachtwoorden van alle admin-accounts op de productiewebsite, en ik kan weer gewoon verder met mijn leven.
Deze oplossing werkt alleen omdat het om een stagingomgeving gaat. Een productiewebsite kun je immers niet zomaar verwijderen. Dan kan niemand je website meer bezoeken.
Een productiewebsite hackvrij maken
Als je productiewebsite is gehackt, moet deze hackvrij gemaakt worden. Dit is geen simpel proces. Het reconstrueren van een aanval en het onschadelijk maken van malware kost tijd en moet zorgvuldig gebeuren. Is er op 17 mei bijvoorbeeld echt alleen maar een wachtwoord gewijzigd? Of heeft de aanvaller stiekem een virus geïnstalleerd dat ik niet heb kunnen vinden? Er zijn bedrijven die zich specialiseren in het hackvrij maken van websites. Het hackvrij maken van een website kost al gauw 250 tot 300 euro. En dit bedrag kan oplopen bij complexe zaken. Zonde, want de plugin-patch, die dit allemaal had kunnen voorkomen, was gratis.
Datalekken?!
Met die 300 euro aan opruimkosten is het nog niet afgedaan. Een gehackte WordPress-site levert vrijwel altijd een datalek op. Herinner je nog dat de database werd leeggetrokken? Dat lijkt misschien niet zo’n probleem, maar naast de inhoud van alle pagina’s en berichten bevat een WordPress-database ook alle gebruikers- en klantgegevens. Hieronder vallen bijvoorbeeld (gebruikers)namen, (e-mail)adressen, en versleutelde wachtwoorden.
Als je een webshop hebt, dan staan alle bestellingen in de database. Die zijn dan dus in handen van de hacker. En wist je dat het verplicht is om datalekken te melden bij de Autoriteit Persoonsgegevens? De imagoschade kan enorm zijn.
Feit:
- Een indringer met adminrechten kan vrijwel altijd bij de database komen.
Voorkomen is beter (en goedkoper) dan genezen
Ah, fijn. Je bent nog niet afgeschrikt door de post-hackscenario’s. Er is namelijk ook goed nieuws. Er bestaat een voorzorgsmaatregel die perfect werkt: updaten, updaten, en nog eens updaten. Ik heb in de afgelopen 8 jaar tientallen WordPress-websites beheerd. Deze websites heb ik dagelijks geüpdatet. Onder mijn beheer is er nog nooit een hacker binnengedrongen in een productiewebsite. Updaten werkt.
Waar moet je rekening mee houden als je WordPress-updates doet? Ten eerste is het belangrijk om ze regelmatig uit te voeren. Uit mijn stagingwebsite-casestudie blijkt dat een hacker binnen zes dagen al een eerste succesvolle hackpoging kan doen. Wekelijks een momentje prikken om te updaten is dus eigenlijk niet voldoende, zeker als je een bedrijfskritieke website beheert. Mijn advies is: dagelijks updaten.
Ten tweede: updaten is niet zo eenvoudig als ‘gewoon even klikken op de updateknop’. Wat als je server vastloopt (omdat je hebt bespaard op hosting)? Wat als er iets fout gaat en je site opeens onbereikbaar wordt? Heb je een back-up die je terug kunt zetten? En weet je nog welke plugin de fout heeft veroorzaakt?
En tot slot is het raadzaam om op de hoogte te blijven van de laatste kwetsbaarheden. Ik zou je hier graag één gouden website voor willen aanbevelen die alle kwetsbaarheden als eerste meldt, maar feit is dat deze niet bestaat. Het Nationaal Cyber Security Centrum (NCSC), onderdeel van het Ministerie van Justitie en Veiligheid, meldde de Essential Addons for Elementor exploit pas op 24 mei. Dat zou te laat zijn geweest. Het beste is daarom om diverse cybersecuritywebsites in de gaten te houden.
Schaamteloze zelfpromotie
Dat hele ‘dagelijks updaten’-idee klinkt als een boel werk. En dat is het ook. Maar gelukkig hoef je het niet zelf te doen. Dankzij mijn onderhoudsoplossingen kan ik het updaten en beheren van een WordPress-website uit jouw handen nemen. Zodat jij je 100% kunt focussen op dat waar je goed in bent.
Hoewel een persoonlijke updatebutler klinkt als iets wat alleen de allerrijksten kunnen veroorloven, valt dat wel mee. Voor minder dan 30 cent per dag ben je aangesloten op pakket Brons en doe ik dagelijks je core-, plugin-, en thema-updates. Dan ben je dus volledig beschermd tegen kwetsbaarheden zoals die beschreven in dit artikel. En je hoeft je nooit meer druk te maken over onbereikbare sites en cybersecurity-platformen die je zou moeten volgen.
Wil je ook graag onbeperkt supportvragen aan mij kunnen stellen? Dat kan met Zilver. Zilver kost je slechts 23 cent per dag meer dan Brons, en daarvoor krijg je dan ook wat: naast dagelijkse updates en een WordPress-hulp onder de sneltoets (ook in het weekend!), monitor ik 24/7 de uptime van je website én krijg je een maandelijks rapport met alles wat ik voor je heb gedaan.
Kortom: voor de prijs van een kopje koffie per dag fix ik je onderhoud. En word jij niet gehackt. Dit klinkt allemaal te mooi om waar te zijn, dus bezoek gerust mijn pagina Webbeheer & Onderhoud om meer te lezen over mijn onderhoudsnetwerk. Of bezoek mijn LinkedIn-profiel om recensies van klanten te checken. Meer dan 35 websites gingen je voor. Neem gerust contact op voor vrijblijvend advies. En wil je een beknopt overzicht van de stappen die ik zet om de veiligheid van jouw website te garanderen? Bezoek dan de pagina Veiligheid & responsible disclosure.
Het is niet altijd de moeite waard om een stagingomgeving dagelijks te voorzien van updates en/of aan de sluiten bij een onderhoudsnetwerk. Hier wat best practises:
- Maak per bugfix of nieuwe feature een aparte stagingwebsite aan. Probeer niet-gebruikte stagingomgevingen zo snel mogelijk te sluiten.
- Overweeg stagingwebsites regelmatig te updaten als ze langer dan een week blijven bestaan.
- Verwijder alle privacygevoelige gegevens uit stagingwebsites. Zo voorkom je een datalek.
- Scheid stagingwebsites van de productiewebstie. Gebruik niet dezelfde database.
Let op: niet iedere hostingprovider doet dit automatisch voor je. - Plaats stagingwebsites achter een extra veiligheidsmuur.
Conclusie
Tot slot nog even de belangrijkste drie takeaways op een rijtje:
- Het is een kwestie van dagen voordat een niet-geüpdatete site kan worden gehackt.
- Proactief updaten is de enige remedie om een hack te voorkomen. Update bij voorkeur iedere dag.
- Voor 30 cent per dag kan je het updaten van je website uit handen geven. Dit kan je op de lange termijn een hoop geld en zorgen besparen.
Het voelt misschien overbodig om dit te vermelden: als je Essential Addons for Elementor op je website hebt geïnstalleerd, maar deze nog niet hebt voorzien van de patch, doe dat dan zo snel mogelijk. Als je hier niet uitkomt, stuur dan gerust een berichtje, dan help ik je verder.