Tech & GadgetsNieuwsAI-generated

Kritiek lek in PHP: MijnOverheid, DigiD en Tweakers gaan uit de lucht

Een flink deel van het Nederlandse web staat vandaag uit. MijnOverheid, DigiD, de site van de Tweede Kamer en Tweakers zijn offline gehaald vanwege twee kritieke lekken in PHP, meldt de NOS. Het NCSC en de Autoriteit Persoonsgegevens deden hetzelfde met hun eigen sites. Update 16:20: de patch is er. PHP 8.5.12, 8.4.27, 8.3.36 en 8.2.35 dichten beide lekken. Onderaan staat wat er nu bekend is.

Wat er aan de hand is

Dinsdag kondigde het securityteam van PHP een beveiligingsrelease aan voor woensdag 21 oktober om 14:00 UTC. Die release dicht twee kwetsbaarheden, CVE-2026-109618 en CVE-2026-109619, die allebei een CVSS v4.0-score van 9.2 hebben. PHP zelf geeft nog geen technische details. In de aankondiging staat alleen dat de getroffen en de gerepareerde versies samen met de release bekend worden gemaakt.

Wat er verder rondgaat, komt van buiten het PHP-project. Beveiligingsbedrijf watchTowr en onderzoeker Kevin Beaumont spreken van remote code execution: een aanvaller kan dan van buitenaf eigen code op de server laten draaien. Volgens Beaumont zou het om alle versies vanaf PHP 5 gaan. CERT-EU, het securityteam van de Europese instellingen, neemt dat over in een advies, maar baseert het op die berichten en niet op informatie van PHP. Het is dus aannemelijk, maar nog niet bevestigd. (Inmiddels wel: zie de update onderaan.)

Waarom zoveel sites tegelijk uit de lucht gaan

Een aangekondigd lek zonder patch zet beheerders klem. Het team gaf zelf aan eerder te zullen publiceren als de details uitlekken of als er misbruik opduikt. Dat er een zeer ernstig lek in PHP zit, weet inmiddels iedereen, aanvallers ook. Cloudflare meldt dat het de eerste aanvalspogingen al ziet en ze met zijn firewall tegenhoudt. Waterdicht is dat niet. Het NCSC heeft zelf nog geen actief misbruik gezien, maar schrijft dat "ieder systeem dat PHP bevat en vanaf het publieke internet bereikbaar is vermoedelijk kwetsbaar" is zolang er niet is bijgewerkt. Ook de PHP Foundation zegt tegen persbureau ANP geen aanwijzingen voor misbruik te hebben.

CERT-EU adviseert organisaties hun PHP-toepassingen nu al in kaart te brengen. Waar direct patchen niet lukt, raadt het aan internetgerichte toepassingen tijdelijk van het publieke net te halen. Veel organisaties volgen dat advies. Naast de overheidssites gaat het volgens de NOS om systemen in het hoger onderwijs, het vergadersysteem Notubiz dat honderd gemeenten gebruiken, persbureau ANP, busmaatschappij EBS en de abonnementenomgeving van DPG Media. Omroep Flevoland publiceert tijdelijk niets nieuws.

In de loop van de middag werd de lijst langer. RTL haalde rond 13:00 uur zijn website en app offline, net als de KNVB en clubs als FC Twente, Fortuna Sittard en Willem II. De Unie van Waterschappen ging op zwart en de Schiphol-app toont geen actuele vluchtgegevens meer. Ook meerdere ziekenhuizen zijn onbereikbaar, waaronder het Jeroen Bosch Ziekenhuis, het Haaglanden MC en het St. Antonius. Omdat Notubiz uit staat, kunnen provincies als Groningen en Gelderland hun vergaderingen en stukken niet online tonen.

Ook kleinere sites merken het. Hostingpartijen sturen hun klanten waarschuwingen, en wie een WordPress-site of een eigen VPS heeft, kreeg vandaag waarschijnlijk zo'n mail.

Wat je nu kunt doen

Zoek uit waar PHP draait

Op een server zie je de versie met php -v. Een WordPress-, Joomla- of Drupal-site draait vrijwel altijd op PHP, ook als je dat zelf nooit hebt ingesteld. Kijk ook naar beheertools zoals phpMyAdmin en naar oude testomgevingen die je vergeten bent.

Gedeelde hosting of managed WordPress

Dan moet je hoster updaten, niet jij. Lees de mail van je hoster en kijk of je PHP-versie nog ondersteund wordt. Draai je nog op een versie die officieel geen updates meer krijgt, zoals PHP 7.4, dan hangt het van je hoster af of de fix er komt. Overstappen naar een ondersteunde versie is hoe dan ook verstandig.

Eigen server

Op Debian en Ubuntu komt de fix via de pakketbeheerder, niet als het versienummer van php.net. Distributies passen patches toe op hun eigen PHP-versie. Draai dus vanavond en morgen nog een keer apt update && apt upgrade en houd de beveiligingsberichten van je distributie in de gaten. Gebruik je de pakketten van Ondřej Surý of een Docker-image, dan komt de fix van daar. Bij Surý stonden de nieuwe pakketten er vanmiddag al.

Lukt patchen niet snel

Dan is tijdelijk offline halen geen overdreven reactie. De overheid doet vandaag precies dat. Een firewall zoals die van Cloudflare helpt, maar sluit het lek niet.

En deze site dan?

wallieweb.nl staat gewoon online, en dat is geen overmoed. Hier draait geen PHP. De site is gebouwd met Next.js, een JavaScript-framework dat op Node.js draait, en de posts staan in een PostgreSQL-database. Apache staat er wel voor, maar alleen als doorgeefluik: het neemt de verbinding aan, regelt het certificaat en stuurt elk verzoek door naar de Node-app. PHP is op de server niet eens geïnstalleerd. Dat heb ik vandaag nagekeken: dpkg -l vindt geen enkel PHP-pakket en de map /etc/php bestaat niet.

Dit lek heeft hier dus niets om op aan te grijpen. Onkwetsbaar is de site daarmee niet. Node.js en de npm-pakketten onder Next.js hebben hun eigen lekken, en daar moet ik net zo goed achteraan. Alleen gaat deze ronde aan wallieweb voorbij.

Update: de release is er

Om 16:00 uur heeft PHP de release gepubliceerd. PHP 8.5.12, 8.4.27, 8.3.36 en 8.2.35 dichten beide lekken. Het securityteam bevestigt dat het om remote code execution gaat, waarvoor een aanvaller niet hoeft in te loggen.

Tweakers noemt de lekken samen PHP2Shell. Volgens Tweakers zitten ze al sinds PHP 5.4.0 uit 2012 in de code en is er al werkende aanvalscode in omloop. Een video zou laten zien hoe een script op de inlogpagina van bekende contentmanagementsystemen toegang tot de site geeft. Tweakers zelf, dat vandaag uit voorzorg offline ging, komt nu weer online.

Dit zijn de twee lekken:

  • CVE-2026-109618 zit in de manier waarop PHP omgaat met een tekort aan geheugen. Loopt een verzoek daartegenaan, dan kan PHP halverwege stoppen terwijl interne gegevens nog maar half zijn klaargezet. Bij het opruimen behandelt PHP die halve gegevens daarna als geldig.
  • CVE-2026-109619 draait om gegevens die blijven hangen. Een stukje interne toestand van een verzoek kan blijven bestaan nadat het geheugen eronder al is vrijgegeven. Een volgend verzoek in hetzelfde proces kan die achtergebleven toestand dan gebruiken.

Volgens PHP loopt elke installatie risico die webverzoeken afhandelt: PHP-FPM, Apache met mod_php, php-cgi, FrankenPHP en LiteSpeed. Het grootste risico ziet PHP bij mod_php. Daar is aangetoond dat één verzoek zonder inloggen de aanval kan starten, nog voordat er ook maar een regel code van de site zelf draait.

Voor PHP 8.1 en ouder brengt het project geen officiële versies meer uit. Vanwege de ernst heeft het securityteam toch minimale fixes in de broncode gepubliceerd voor PHP 7.4, 8.0 en 8.1. Distributies en leveranciers met langdurige ondersteuning kregen de patches vooraf. De pakketbron van Ondřej Surý had vanmiddag al nieuwe pakketten klaarstaan, ook voor PHP 7.4, en in de changelog daarvan staan beide CVE's.

PHP noemt ook tijdelijke maatregelen, zoals memory_limit=-1 en een lage post_max_size. Het zegt er wel duidelijk bij dat die een installatie niet veilig maken. Updaten is de enige echte oplossing.

Vooraf aankondigen is gebruikelijk; OpenSSL en curl doen het ook. Het geeft beheerders een dag om zich voor te bereiden. Maar bij software die op zoveel servers draait, geeft het aanvallers ook een reden om alvast te gaan zoeken. Vandaag zie je wat dat betekent: een rij bekende sites die uit voorzorg dichtgaan, nog voordat er iets te patchen valt.

Bronnen: NOS, NOS-liveblog, PHP.net, PHP-securityadvies, Tweakers, CERT-EU.