PHP2Shell: waarom het internet vandaag in brand staat en waarom PixelUnion geen last heeft

Werk je ergens in de buurt van een webserver, dan is het vandaag geen rustige woensdag. Twee kritieke kwetsbaarheden in PHP, bijgenaamd PHP2Shell, lekten online uit voordat het PHP-team een fix kon uitbrengen. Beheerders over de hele wereld wachten nu op een patch die vandaag om 14:00 UTC gepland staat, en aanvallers wachten net zo goed.
Korte versie voor PixelUnion-gebruikers: je foto’s zijn niet in gevaar. De lange versie lees je hieronder.
Wat PHP2Shell is
PHP2Shell is de naam voor twee lekken, CVE-2026-109618 en CVE-2026-109619. Beide scoren 9,2 van de 10 op de CVSS v4.0-schaal. Die score betekent dat een aanvaller zonder in te loggen eigen code kan draaien op een kwetsbare server. In de praktijk: stuur het juiste verzoek naar een website en je hebt een shell op de machine erachter. Vandaar de naam.
De exacte oorzaak is nog niet gepubliceerd. Onderzoekers vermoeden een geheugenfout (een zogeheten use-after-free) in het deel van PHP dat bestandsuploads afhandelt, maar dat is nog niet bevestigd en minstens één audit spreekt het tegen. Wat wel vaststaat: beveiligingsbedrijf watchTowr zegt een van de twee bugs te hebben nagebootst en stelt dat “these vulnerabilities are indeed real.” Ook welke PHP-versies getroffen zijn, is nog onduidelijk. Eerste berichten noemen alles terug tot PHP 5.4, en PHP heeft geen officieel bereik gepubliceerd.
Waarom het internet vandaag in brand staat
Drie dingen maken dit erger dan een gemiddeld beveiligingsbericht.
Ten eerste het bereik. PHP draait op ongeveer driekwart van alle websites waarvan de servertaal bekend is. WordPress, de meeste webwinkels, talloze hostingpanelen en forums draaien erop. Een remote code execution-bug in PHP zelf, niet in één plugin of app, raakt in één klap een enorm deel van het web.
Ten tweede het uitlekken. Normaal verschijnt eerst de fix en volgen de details later, zodat verdedigers een voorsprong hebben. Nu kwamen de details naar buiten voor de patch er was. De workaround die eerst rondging, het uitschakelen van de upload-voortgangsfunctie van PHP, bleek onvolledig. Er was dus een periode waarin iedereen wist dat de deur openstond en niemand een slot had.
Ten derde wordt de patch zelf een routekaart. Zodra de gefixte versies openbaar zijn, kunnen aanvallers de oude en nieuwe code vergelijken en precies zien wat er is veranderd. Beveiligingsbedrijf Sansec verwacht massale uitbuiting binnen ongeveer 15 minuten na de release. Daar komt bij dat scans laten zien dat zo’n 884.000 servers die vanaf internet bereikbaar zijn nog steeds PHP 8.1 of ouder melden. Die takken zijn end of life en krijgen waarschijnlijk nooit een fix.
Vandaag staren dus veel mensen naar een releasepagina, klaar om te upgraden zodra die live gaat. Sommigen van hen zijn te laat.
Waarom PixelUnion geen last heeft
PixelUnion draait op Immich, en Immich is niet in PHP geschreven. De server is TypeScript op Node.js, met een aparte machine learning-service in Python. Er zit nergens een PHP-interpreter tussen je telefoon en je foto’s. Een bug in de uploadafhandeling van PHP kan niet worden misbruikt op een server waar geen PHP draait.
Voor de volledigheid: we draaiden wel één kleine randservice op PHP. Die stond buiten het fotoplatform, op aparte infrastructuur, en had geen toegang tot je bibliotheek. We wilden niet gokken op een onbekende patch die op tijd zou komen, dus hebben we de service voor het releasemoment uitgezet. Hij blijft uit tot we een gefixte versie hebben gecontroleerd.
Dit betekent niet dat we denken immuun te zijn voor beveiligingsproblemen. Elke stack heeft bugs, de onze ook. Waar het om gaat: precies weten wat waar draait, het aanvalsoppervlak klein houden en snel handelen als zoiets binnenkomt. Dat is het werk, en dat blijven we doen.
Draai je zelf PHP-sites, kijk dan op de PHP security announcements en patch zodra de release er is. Zoek je een plek voor je foto’s die met dit soort zorg is gebouwd, dan heten we je graag welkom.
Begin gratis met PixelUnion →
Omslagfoto door Ricardo Gomez Angel op Unsplash.