PHP2Shell: wat het kritieke PHP-lek ons leerde

Op 21 oktober kwam PHP met een noodpatch voor twee kritieke lekken. Wat er gebeurde, hoe we het aanpakten en wat we ervan meenemen over hosting, communicatie en versies.

Het PHP-olifantje tussen serverkasten met rode waarschuwingslampjes

Woensdag 21 oktober bracht het PHP-securityteam noodupdates uit voor twee kritieke kwetsbaarheden in de PHP-engine zelf: CVE-2026-109618 en CVE-2026-109619, inmiddels bekend als PHP2Shell. Beide scoren 9.2 op de CVSS-schaal en maken het mogelijk om zonder in te loggen code uit te voeren op een webserver. Vrijwel elke PHP-versie van de afgelopen tien jaar was kwetsbaar, en een exploit lag al op straat voordat de patch er was.

Het lek zat in de laag die requests afhandelt, nog voordat Magento of WordPress zelf draait. Een onderhoudsmodus in de shop hield aanvallen dus niet tegen. Dit moest op serverniveau worden opgelost.

Voor iedereen die een webshop op PHP draait, en dat is het overgrote deel van de Magento- en WooCommerce-wereld, was dit dus geen gewone woensdag.

Voor onze klanten pakte het goed uit. Dat had vooral te maken met een paar keuzes die we eerder hebben gemaakt, en die op zo’n dag het verschil maken.

Hosting is een vak. Wij hebben het bewust uitbesteed.

Managed hosting is een eigen expertise. Wij hebben die bewust ondergebracht bij Hypernode, de marktleider in Magento-hosting in Nederland. Dat betekent dat er op een dag als deze een team klaarstaat dat niets anders doet dan servers veilig houden.

Hypernode nam op 21 oktober de lead. Ze voerden extra mitigaties door op het hele platform en rolden de gepatchte PHP-versies versie voor versie uit. Om 14:30 haalde Hypernode het hele platform tijdelijk offline, zodat er tot de patch geen aanvalsvenster was. Een bewuste keuze: liever een paar uur offline dan een gehackte shop. Rond 17:00 waren onze shops weer online.

Wij hoefden geen servers te patchen of nachtwerk te plannen. Onze rol was volgen, controleren en schakelen waar nodig. Na het patchen controleerde onze standaard malwarescan elke shop op sporen van misbruik.

Een bureau dat zelf servers beheert, had die dag een heel andere agenda gehad.

Proactief communiceren met klanten

Waar wij die dag wel onze tijd in staken: communicatie. Klanten lezen het nieuws ook, en een bericht als “kritiek lek in PHP” zorgt voor vragen. Wij hebben onze klanten zelf benaderd voordat zij ons belden. Wat er speelt, wat het voor hun shop betekent, wat Hypernode doet en wanneer ze wat kunnen verwachten.

Dat klinkt vanzelfsprekend, maar het is precies wat op zo’n dag onrust voorkomt. Een klant die weet wat er gebeurt, hoeft niet te gissen.

Een klant die weet wat er gebeurt, hoeft niet te gissen.

Recente versies van PHP en Magento

De derde keuze is de minst zichtbare, maar bleek die dag het meest bepalend. Wij houden onze klanten bewust op recente versies van PHP en Magento. Dat kost elk jaar tijd en budget, en het is altijd verleidelijk om een upgrade een kwartaal uit te stellen.

Op 21 oktober betaalde die keuze zich terug. Tijdelijke mitigaties dekten volgens de PHP-developers niet beide lekken af. Alleen een update van PHP loste het echt op. De fixes werden als eerste uitgerold voor de nieuwste PHP-versies, dus shops op een recente versie waren als eerste gepatcht en weer veilig online. Shops op PHP 8.1 of ouder hadden een groter probleem: die versies zijn end-of-life en kregen vanuit het PHP-project geen officiële release, alleen een losse patch op de broncode. Wie daarop draait, is afhankelijk van wat zijn hoster er zelf mee doet.

De grafiek hieronder laat zien hoe lang een aantal webshops die dag offline was, op basis van order- en bezoekersdata. Een van onze shops is gemarkeerd. Waar de meeste vergelijkbare shops drie tot vijf uur offline waren, en één zelfs acht uur, was onze shop na iets minder dan drie uur weer volledig in de lucht.

Dit gaan we vaker zien

PHP2Shell is geen incident dat je afvinkt. De kwetsbaarheden zijn gevonden met behulp van AI, en dat werkt twee kanten op. Dezelfde tools die onderzoekers helpen lekken te vinden, helpen kwaadwillenden ook. Meer lekken, sneller gevonden, sneller misbruikt. De tijd tussen bekendmaking en misbruik wordt korter. Op 21 oktober zag Cloudflare de eerste aanvallen al om 07:43 UTC, uren voordat de officiële patch om 13:00 UTC verscheen. Die kwam zelfs een uur eerder dan gepland, omdat de details waren uitgelekt.

Tegelijk kan tegenwoordig bijna alles zelf gebouwd worden. Een koppeling, een tool, een extra script naast de shop: met AI staat het er in een middag. Dat is waardevol, maar elk los onderdeel is ook iets dat iemand moet bijhouden, updaten en patchen als het erop aankomt.

Daarom verwachten wij dat regie op infrastructuur en techniek alleen maar belangrijker wordt. Weten wat er draait, waar het draait, wie het beheert en op welke versie. Die ontwikkeling zien we nu in een stroomversnelling komen.

Wat dit betekent voor jouw shop

Vier vragen die je jezelf na deze week kunt stellen:

  • Wie patcht jouw server, en hoe snel? Weet je dat zeker, of ga je ervan uit?
  • Op welke PHP-versie draait je shop? Alles onder 8.2 krijgt geen officiële beveiligingsupdates meer, en 8.2 zelf stopt eind dit jaar.
  • Draait er naast je shop nog meer op PHP? Denk aan een WordPress-site, een intranet of een interne tool. Wie patcht dat?
  • Wie belt jou als er iets speelt? Of moet je het zelf uit het nieuws halen?

Benieuwd hoe je shop er technisch voor staat?

Laat een scan doen, vraag ons om advies of plan een vrijblijvende kennismaking.