Cloudflare-CEO Matthew Prince meldt dat het aantal PHP2Shell-exploitpogingen op zijn netwerk na de bekendmaking tot miljoenen opliep, nadat het binnen twee uur al tot honderdduizenden was gestegen.
Een PHP-website die na een patch weer online staat, zegt nog niet of er vóór die update aanvallen zijn aangekomen. Naast de runtimeversie zijn daarom ook de server- en eventuele WAF-logboeken van de bedrijfswebsite, het klantportaal of de interne webapp nodig. De telling van Cloudflare beantwoordt die vraag niet voor een specifieke Nederlandse site.
De meetreeks springt na de bekendmaking
Prince zette de tijdlijn op 22 oktober op X. In de tien uur vóór de bekendmaking zag Cloudflare duizenden pogingen op zijn netwerk. Voor de 45 minuten erna noemt hij tienduizenden pogingen, binnen twee uur honderdduizenden en op het moment van posten miljoenen. De post zegt niet of de aantallen per tijdvak gelden of cumulatief zijn. Ook geeft Prince geen telmethode of uitsplitsing naar unieke afzenders, servers of geblokkeerde verzoeken.
De telling geldt voor Cloudflare-verkeer en zegt dus niet hoeveel pogingen het hele internet zag. Evenmin blijkt of een verzoek een kwetsbare PHP-installatie bereikte of daar code kon uitvoeren.
De tijdlijn begint vóór de patch. De eerste PHP-berichtgeving ging over de vier herstelde versies en de pogingen die Cloudflare al vóór de update zag. Deze nieuwe meting gaat over de sterke toename na de bekendmaking. Samen laten de perioden zien dat er vóór de patch en na de bekendmaking pogingen liepen; hoeveel daarvan tot toegang leidden, blijft onbekend.
Pogingen zijn geen bevestigde inbraken
NU.nl meldde op 22 oktober dat het NCSC nog geen signalen had dat aanvallers toegang tot servers hadden gekregen of gegevens waren gestolen. Een dag eerder meldde het NCSC zelf nog geen actief misbruik te hebben gesignaleerd. Beide uitspraken zijn momentopnamen en bewijzen niet dat nergens een aanval slaagde. Een teller met exploitpogingen en een bevestigde inbraak zijn twee verschillende maatstaven.
Cloudflare beschreef al vóór de openbare bekendmaking dat aanvallers hun verzoeken aanpasten om WAF-regels te omzeilen. Vanaf 03.02 UTC gold PHP2Shell-bescherming standaard voor klanten met de Cloudflare-WAF, op gratis en betaalde plannen. De detectie kijkt naar zowel verzoek als reactie van de server. Cloudflare noemt die laag een extra bescherming en adviseert alsnog direct te patchen. De firewallcijfers kunnen dus pogingen omvatten die zijn tegengehouden, terwijl de X-post niet laat zien hoeveel daarvan een achterliggende server bereikten.
Wordfence zag een vergelijkbaar verloop bij Elementor Pro, een WordPress-plug-in met meer dan zes miljoen actieve installaties. De firewall blokkeerde ruim 190.000 pogingen sinds de bekendmaking op 19 augustus. Bij Elementor kon het uploadlek via een openbaar formulier tot code-uitvoering leiden. De PHP-teller noemt geen bereik of resultaat per server. Dat cijfer telt geblokkeerde pogingen, niet hoeveel organisaties toegang verloren.
De patch moet de PHP-runtime bereiken
De fout zit in de PHP-runtime die onder het CMS of de webapplicatie draait. De officiële PHP-waarschuwing geldt voor alle installaties die webverzoeken verwerken, waaronder PHP-FPM, Apache met mod_php, php-cgi, FrankenPHP en LiteSpeed. De genoemde fixes zijn PHP 8.5.12, 8.4.27, 8.3.36 en 8.2.35. PHP 8.1 en ouder krijgen geen reguliere updates van het PHP-project; Linux-distributies en LTS-leveranciers kunnen wel eigen teruggeplaatste fixes aanbieden.
Dat maakt de beheergrens belangrijk. Een WordPress-plug-in bijwerken verhelpt geen fout in de PHP-runtime. Bij een gehoste website kan de hoster de versie beheren; bij software van een leverancier kan de update via diens pakket of onderhoudsvenster komen. De organisatie moet daarom weten wie de runtime bijwerkt en hoe die update is bevestigd. De PHP-fixes voor 8.5.12, 8.4.27, 8.3.36 en 8.2.35, naast de eerdere aanvalsmeldingen zijn alleen relevant voor systemen waarop de juiste runtimeversie ook echt draait.

De wereldwijde cijfers hebben een blinde vlek
De reactie verschilt per organisatie. Het Japanse ministerie van Financiën schortte tijdelijk delen van zijn website en diensten op terwijl het servers controleerde en patches toepaste. Zuid-Korea verhoogde het cyberalarm voor private organisaties van ‘attention’ naar ‘caution’ en zette extra noodploegen paraat, blijkt uit de berichtgeving van Korea JoongAng Daily en The Korea Daily. Reuters beschrijft de bredere patchrace bij overheden in Azië.
Een aparte inventarisatie van CybelAngel telde ongeveer 2,24 miljoen internetgerichte hosts die PHP aankondigden. Van de circa 1,5 miljoen hosts die ook een versie toonden, draaide 59 procent op een versie zonder officiële release van het PHP-project. De cijfers zijn gebaseerd op Shodan-banners die Mallory publiceerde. Het gaat om internetgerichte systemen, geen telling van organisaties, websites of succesvolle aanvallen. De schatting laat wel zien waarom een beheerder niet alleen op het CMS-dashboard kan vertrouwen: PHP kan ook in hosting, beheersoftware of een product van een leverancier zitten.
Voor Nederlandse organisaties is de wereldwijde teller daarom vooral een tijdlijn, geen risicoscore voor de eigen website. De patch sluit de bekende fout pas als de juiste runtime draait. De relevante server- en WAF-logboeken moeten uitwijzen wat er rond de bekendmaking op jouw servers gebeurde en of verzoeken verder kwamen dan de firewall. Zonder een actuele inventaris en die controle blijft de toestand van een afzonderlijke dienst onbekend, ook wanneer de website alweer bereikbaar is.
Veelgestelde vragen
Bestaande software bijwerken
Ik denk mee over hoe je bestaande software beheert, ontwerp een haalbare route en realiseer de aanpassingen en automatisering. Waar het kan, draait de oplossing op je eigen infrastructuur.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.
