PHP2Shell: waarom zelfs DigiD offline ging, en wat jij nu moet doen

WordPress22 oktober 20267 min leestijd

Laatst bijgewerkt: 22 oktober 2026

PHP2Shell is een ernstig lek in PHP, de programmeertaal waar vrijwel elke WordPress-website op draait. Een aanvaller kan via het lek zonder inloggen code uitvoeren op de server. De oplossing is een PHP-update van je hoster: controleer of je website draait op PHP 8.2.35, 8.3.36, 8.4.27 of 8.5.12 (of nieuwer), en vraag je hoster om bevestiging als je het niet zeker weet.

Een WordPress-update of een securityplugin helpt hier niet. Het lek zit niet in WordPress, maar in de laag eronder. Daarom moet de oplossing ook daar vandaan komen.

Wij hebben op 21 en 22 oktober de WordPress-sites die wij beheren door dit lek geloodst. In dit artikel lees je wat er aan de hand is, hoe wij het hebben aangepakt en wat je zelf kunt controleren.

Wat is PHP2Shell?

PHP2Shell is de naam voor twee kritieke kwetsbaarheden in PHP zelf, met de officiële codes CVE-2026-109618 en CVE-2026-109619. Een CVE-code is een soort registratienummer voor een beveiligingslek, zodat iedereen weet over welk lek het gaat.

De belangrijkste feiten:

Het PHP-team kondigde de update op 20 oktober vooraf aan, zodat hosters zich konden voorbereiden. Op 21 oktober meldden beveiligingsonderzoekers al aanvalspogingen. Hoe serieus het lek was, bleek diezelfde dag: ook DigiD, MijnOverheid, de Tweede Kamer en het Nationaal Cyber Security Centrum haalden hun websites uit voorzorg tijdelijk offline. Lees de officiële melding in de beveiligingsaankondiging van PHP.

Wat betekent dit voor je WordPress-website?

WordPress is geschreven in PHP. Elke keer dat iemand je website bezoekt, start de server PHP op om de pagina te maken. Zit het lek in PHP, dan staat de deur open voordat WordPress, je thema of je plugins ook maar iets kunnen doen.

Dat heeft drie gevolgen:

Heb je een oude PHP-versie, zoals 8.1 of ouder? Dan krijg je van het PHP-project zelf geen update meer. Sommige hosters en Linux-distributies leveren wel een eigen oplossing voor oude versies. Vraag dat na bij je hoster, of laat je website upgraden naar een nieuwere PHP-versie.

Zo hebben wij het aangepakt

Wij beheren een groot aantal WordPress-sites voor Nederlandse mkb-bedrijven. Dit zijn de keuzes die we maakten, en wat we daarvan leerden.

We hebben gericht offline gehaald, niet alles

Alle sites offline halen voelt veilig, maar kost klanten omzet en zichtbaarheid. Wij hebben daarom gekozen op risico. Eerst webshops, sites met klantgegevens en sites op een oude PHP-versie. De rest bleef online en volgden we nauwgezet tot de hoster de update had geïnstalleerd.

Een onderhoudsplugin beschermt niet

Veel mensen denken bij “offline halen” aan een onderhoudsplugin in WordPress. Die toont bezoekers een nette melding, maar PHP blijft gewoon draaien. Het lek blijft dan bereikbaar. Afschermen moet daarom op serverniveau, bij de hosting of de firewall.

Gebruik een 503-melding, geen 403 of 404

Haal je een site tijdelijk offline, dan maakt de manier uit voor je plek in Google. Een 503-melding betekent “tijdelijk niet beschikbaar”. Google komt dan later terug en laat je posities bij een korte onderbreking met rust. Een 403 (geen toegang) of 404 (niet gevonden) kan Google lezen als een pagina die weg is.

Let op je e-mail

Een site “suspenden” in een hostingpaneel zoals DirectAdmin zet vaak ook de e-mail op dat domein uit. Loopt de e-mail via Microsoft 365 of Google Workspace, dan merk je daar meestal niets van. Bij mail via de hoster wel. Check dit vooraf, zodat je klant niet ineens onbereikbaar is.

Een PHP-versie kiezen is niet hetzelfde als patchen

In je hostingpaneel kies je een PHP-versie, bijvoorbeeld 8.3. Maar of dat ook 8.3.36 is, met de oplossing erin, bepaalt de hoster. Controleer daarom altijd het volledige versienummer. Sommige hosters verwerken de oplossing in hun eigen pakketten zonder het versienummer te veranderen. Twijfel je, vraag het dan na.

Na de update: scannen

Met de update is het lek dicht. Maar er blijft één vraag over: is er misbruik gemaakt vóór de update? Daarom hebben we de sites na de update gescand op verdachte bestanden en wijzigingen. Dat is geen paniekmaatregel, maar gewoon de laatste stap van het werk.

Zelf checken: drie stappen

  1. Bekijk je PHP-versie. Log in op WordPress en ga naar Gereedschap, Sitestatus, tabblad Informatie, onderdeel Server. Daar staat de PHP-versie. Staat er 8.2.35, 8.3.36, 8.4.27, 8.5.12 of hoger, dan heb je de nieuwe versie.
  2. Vraag je hoster om bevestiging. Staat er een ouder nummer, of twijfel je? Vraag je hoster of de oplossing voor CVE-2026-109618 en CVE-2026-109619 op je server is geïnstalleerd. Sommige hosters passen de oplossing toe zonder dat het versienummer verandert.
  3. Laat een oude PHP-versie upgraden, via een testomgeving. Draai je op PHP 8.1 of ouder, plan dan een upgrade. Test die eerst op een kopie van je site, want oude plugins en thema’s werken niet altijd met een nieuwe PHP-versie. Pas daarna zet je de echte site over.

Twijfel je of je site al die tijd veilig was? Laat hem scannen op verdachte bestanden. Hoe je je site verder beschermt, lees je in WordPress beveiliging: 7 stappen voor een veilige site.

Wat dit zegt over websiteonderhoud

PHP2Shell laat zien dat een website meer is dan WordPress, een thema en plugins. Eronder draait een server met PHP, en ook die laag moet bijgehouden worden. Eerder was het WordPress zelf, met het wp2shell-lek. Nu is het PHP.

De les is niet dat je in paniek moet raken bij elk lek. De les is dat iemand moet weten welke versies er op je site draaien, wie de updates installeert en wat er gebeurt als het snel moet. Lees meer in je website onderhouden: wat er misgaat als je het niet doet.

Veelgestelde vragen

Is mijn website gehackt?

Dat kun je niet zien aan de buitenkant. Tussen het bekend worden van het lek en de installatie van de update zat een korte periode, en er zijn aanvalspogingen gemeld. Draait je site inmiddels op een bijgewerkte PHP-versie, laat hem dan scannen op verdachte bestanden en wijzigingen. Dan weet je het zeker.

Moet ik mijn site offline halen?

Alleen als je PHP-versie nog niet is bijgewerkt en je site gevoelige gegevens verwerkt, zoals een webshop of klantportaal. Doe het dan op serverniveau met een 503-melding, niet met een onderhoudsplugin. Is de update al geïnstalleerd, dan is offline halen niet nodig.

Moet ik mijn wachtwoorden wijzigen?

Niet standaard. Blijkt uit een scan dat er verdachte bestanden of wijzigingen zijn, wijzig dan wel alle wachtwoorden: van WordPress, je hosting, de database en eventuele koppelingen. Bij twijfel is het wijzigen van je WordPress-beheerderswachtwoord een kleine moeite.

Helpt een securityplugin tegen PHP2Shell?

Nee. Een securityplugin draait binnen WordPress, en het lek wordt misbruikt voordat WordPress start. Een firewall vóór je server, zoals bij je hoster of via een dienst als Cloudflare, kan bekende aanvallen wel tegenhouden. De echte oplossing blijft de PHP-update.

Welke PHP-versie moet ik kiezen?

Kies een versie die nog door het PHP-project wordt ondersteund en die je plugins aankunnen, bij voorkeur PHP 8.3, 8.4 of 8.5. PHP 8.2 krijgt na 31 december 2026 geen beveiligingsupdates meer. Test een overstap altijd eerst op een kopie van je site.

Hoe weet ik welke PHP-versie mijn site gebruikt?

In WordPress via Gereedschap, Sitestatus, tabblad Informatie, onderdeel Server. Je ziet daar het volledige versienummer. Je hoster kan het ook voor je opzoeken, en kan bevestigen of de beveiligingsupdate al is geïnstalleerd.

Hulp nodig?

Wil je niet zelf achter PHP-versies, hosters en scans aan? Lees in WordPress beheer uitbesteden welke opties er zijn en wat je kunt verwachten.

Benieuwd naar een AI-collega op jouw website?

Op dit moment werken we de AI-collega in bij een beperkt aantal bedrijven, als pilot. Bekijk wat hij doet en meld je aan.

Bekijk de pilot
Fyrst is online partner van 100+ bedrijven
Beauty-by-Roos-Logo-2023-kleinHertzinger_logo-e1714730251159Logo-Wordmark-Dark-Horizontal-small-sizeWildenberg_logo-met-beeldmerkCollegamento_logo-cmDoornekamp-logoDTT_logoHuurdeman_logoLogo-Bras-web-1MIA_logoMidlandtourslogo (2)Redmatters_LogoTagline_RGBWSB_logo_zwartBeauty-by-Roos-Logo-2023-kleinHertzinger_logo-e1714730251159Dierenhotel-Marijke-LogoJobs-witDM_Group-707Beauty-by-Roos-Logo-2023-kleinHertzinger_logo-e1714730251159Logo-Wordmark-Dark-Horizontal-small-sizeWildenberg_logo-met-beeldmerkCollegamento_logo-cmDoornekamp-logoDTT_logoHuurdeman_logoLogo-Bras-web-1MIA_logoMidlandtourslogo (2)Redmatters_LogoTagline_RGBWSB_logo_zwartBeauty-by-Roos-Logo-2023-kleinHertzinger_logo-e1714730251159Dierenhotel-Marijke-LogoJobs-witDM_Group-707