Op 21 oktober 2026 heeft het PHP-project fixes uitgebracht voor twee kritieke kwetsbaarheden, en CERT-EU publiceerde dezelfde dag waarschuwing 2026-018. Beide kwetsbaarheden zijn beoordeeld met 9,2 en beide worden beschreven als code-uitvoering op afstand zonder authenticatie. Als u een WordPress-site, een webwinkel of een andere PHP-toepassing beheert, geldt dit voor u, en de oplossing is een update, geen instelling. Dit artikel legt uit wat er bekend is, hoe de aanval binnenkomt en wat u moet doen. Stand van zaken: 22 oktober 2026, op basis van versie 1.1 van de CERT-EU-waarschuwing.
Wat er is gebeurd
- Beveiligingsrelease aangekondigdPHP kondigt vooraf een beveiligingsversie aan
- Fixes gepubliceerd8.5.12, 8.4.27, 8.3.36 en 8.2.35
- CERT-EU-waarschuwing 2026-018Beide kwetsbaarheden beoordeeld met 9,2
- Voorbeeldcode in omloopAanvallen niet bevestigd, maar waarschijnlijker
PHP kondigde op 20 oktober een beveiligingsrelease aan en publiceerde de fixes op 21 oktober om 13:30 UTC. CERT-EU gaf zijn waarschuwing de titel “Critical Vulnerabilities in PHP” en noemt twee CVE’s: CVE-2026-109618 en CVE-2026-109619, elk met een score van 9,2. CERT-EU schrijft er ook bij dat de technische details inmiddels openbaar worden besproken en dat de eerste voorbeeldcode die de aanval aantoont (proof of concept) in omloop is. De waarschuwing bevestigt geen aanvallen in het wild, maar stelt dat het hierdoor waarschijnlijker wordt dat aanvallers de kwetsbaarheden al uitbuiten. Behandel dit als dringend.
Wie getroffen is
Getroffen is elke PHP-versie onder de verholpen versie in een ondersteunde tak, en elke tak die het einde van zijn levensduur heeft bereikt.
| Tak | Getroffen onder | Verholpen in |
|---|---|---|
| PHP 8.5 | 8.5.12 | 8.5.12 |
| PHP 8.4 | 8.4.27 | 8.4.27 |
| PHP 8.3 | 8.3.36 | 8.3.36 |
| PHP 8.2 | 8.2.35 | 8.2.35 |
| PHP 8.1 en ouder | alle versies | geen reguliere update; het PHP-beveiligingsteam heeft minimale terugportering van de broncode gepubliceerd voor 7.4, 8.0 en 8.1 |
CERT-EU noemt PHP-FPM, Apache met mod_php, php-cgi, FrankenPHP en LiteSpeed. Volgens het PHP-team brengt mod_php het grootste risico met zich mee. Ook producten waarin PHP is ingebouwd, kunnen getroffen zijn; CERT-EU verwijst daarvoor naar een lijst van het Nederlandse NCSC aan het eind van dit artikel. Elke installatie die webverzoeken afhandelt, telt mee, met of zonder uploadformulier.
Hoe een aanvaller bij de eerste kwetsbaarheid komt
Niemand hoeft in te loggen. Volgens CERT-EU toont een gedemonstreerde aanval aan dat één enkel verzoek zonder authenticatie volstaat om de aanval te starten, voordat er enige toepassingscode draait. Dat is het punt dat de meesten missen: het maakt niet uit of uw WordPress actueel is, of uw plug-ins gepatcht zijn of dat uw contactformulier beschermd is. Het verzoek bereikt eerst de PHP-engine.
De eerste kwetsbaarheid, CVE-2026-109618, werkt zo:
- Een verzoek komt aan op een adres dat PHP bedient. Geen login, geen account.
- PHP begint de inhoud van het verzoek te lezen. CERT-EU noemt als voorbeeld het verwerken van formuliergebaseerde bestandsuploads.
- PHP dwingt zijn
memory_limitaf metlongjmp(). Wordt de grens overschreden, dan springt PHP uit waar het mee bezig was en beëindigt het verzoek. - Gebeurt dat midden in het opbouwen van interne verzoekgegevens, dan zijn die gegevens maar half opgebouwd.
- De opruiming die daarna volgt, behandelt de ongeldige gegevens als geldig en geeft geheugen vrij dat nooit is geïnitialiseerd. Dat geheugen kan nog gegevens van eerdere toewijzingen bevatten die de aanvaller in handen had.
- Vanaf dat punt beschrijft de waarschuwing code-uitvoering op de server.
Hoe een aanvaller de laatste stap stuurt, beschrijven we bewust niet. Het volstaat te weten dat het toegangspunt niet uw toepassing is, en daarom kan niets binnen uw toepassing de aanval tegenhouden.
De tweede kwetsbaarheid: een toestand die zijn geheugen overleeft
CVE-2026-109619 is een ander mechanisme met hetzelfde resultaat. PHP houdt voor elk verzoek een interne toestand bij. Na bepaalde fouten, zoals een fatale fout, kan die toestand blijven bestaan terwijl het geheugen eronder al is vrijgegeven. Het volgende verzoek dat hetzelfde werkproces afhandelt, kan die verouderde toestand dan gebruiken voordat hij op de normale manier is teruggezet. De aanvaller heeft twee verzoeken nodig die op hetzelfde werkproces terechtkomen; CERT-EU beoordeelt het resultaat net als bij de eerste kwetsbaarheid: code-uitvoering op afstand.
Wat u vandaag moet doen
Is PHP op uw server ouder dan 8.5.12, 8.4.27, 8.3.36 of 8.2.35, of is het 8.1 of ouder?
- JaGetroffen door beide kwetsbaarheden. Ga door naar de volgende vraag.
- NeeVoor beide kwetsbaarheden verholpen, als dit echt de versie is die uw webserver draait.
Kunt u vandaag bijwerken?
- JaWerk bij, herstart elk PHP-werkproces, controleer de draaiende versie.
- NeeHaal de server van openbare netwerken totdat hij is verholpen. Beperkingen verkleinen alleen het risico.
- Zoek uit welke PHP-versie uw site werkelijk bedient.
php -vop de opdrachtregel toont de versie van de opdrachtregel, die kan afwijken van die van uw webserver. Controleerphp-fpm -v, uw hostingpaneel of een pagina diephpinfo()aanroept. Bij gedeelde hosting vraagt u het uw provider. - Werk bij naar een verholpen versie: 8.5.12, 8.4.27, 8.3.36 of 8.2.35. Distributies nemen fixes vaak terug over zonder het versienummer te wijzigen; zoek daarom de CVE-nummers in de beveiligingsmelding van uw leverancier. Bouw in containers opnieuw vanaf een bijgewerkte basisimage. Het PHP-team merkt op dat rpms.remirepo.net op de dag van publicatie nog geen updates had, en adviseert pakketten van de distributie of een build vanuit de broncode.
- Herstart elk PHP-werkproces. Een update op schijf verandert niets aan processen die al draaien. Herstart PHP-FPM of de webserver en controleer daarna opnieuw de draaiende versie.
- Als u vandaag niet kunt bijwerken, isoleer dan de server van openbare netwerken totdat de fix is doorgevoerd en gecontroleerd. CERT-EU is duidelijk: alleen een update verhelpt deze kwetsbaarheden volledig.
- Als u PHP 8.1 of ouder gebruikt, vraag dan uw leverancier om de terugportering of stap over op een ondersteunde tak. Deze versies krijgen geen reguliere updates meer.
Tijdelijke maatregelen die het risico verkleinen maar niets verhelpen
CERT-EU noemt maatregelen die een aanval bemoeilijken. De waarschuwing stelt uitdrukkelijk dat ze een installatie niet veilig maken. Gebruik ze terwijl u de update voorbereidt, niet in plaats ervan.
- Tegen CVE-2026-109618: stel
memory_limit=-1zo in dat toepassingen het niet kunnen overschrijven, bijvoorbeeld metphp_admin_valuein de FPM-pool, en controleer dat geen enkele pool-, map- of toepassingsinstelling opnieuw een eindige grens zet. Stel een lagepost_max_sizein (8M zonder uploads, 32M met) en houdupload_max_filesizedaaronder. Beperk de grootte van verzoeken, het aantal velden, multipart-delen, het aantal headers en de nestingdiepte bij de webserver of proxy. Gebruik een geheugenlimiet van de container of cgroup als beschikbaarheidsgrens, maar nietRLIMIT_ASofRLIMIT_DATA, die de kwetsbare toewijzingsfout kunnen veroorzaken. - Tegen CVE-2026-109619: stel
session.upload_progress.enabled=0in inphp.ini, in de FPM-pool of in een serverconfiguratie die geldt voordat het verzoek wordt verwerkt (niet metini_set()of.user.ini), en herstart alle werkprocessen. Stel bij PHP 8.5 bovendienfatal_error_backtraces=0in. Verwijder ongeldige of verouderde instellingen per verzoek die meldingen tonen vóór de initialisatie, en verhelp fatale fouten en time-outs die een aanvaller kan bereiken.
Wat SilentShield hier wel en niet kan
Dit is geen botprobleem, en dat zeggen we liever dan dat we een productpagina iets anders laten suggereren. De aanval treft de PHP-engine voordat iets van ons, een CAPTCHA, een plug-in of een firewallregel binnen uw toepassing het verzoek ziet. Een botbescherming op een formulier houdt hem niet tegen, en niemand mag u vertellen dat dat wel zo is. De enige volledige oplossing is de PHP-update.
De SilentShield-API en het dashboard zijn niet in PHP geschreven. De WordPress-plug-in en de PHP-SDK draaien in uw eigen PHP, dus daarvoor moet de update op uw server plaatsvinden. Na de update is de gebruikelijke bescherming tegen bots en formulierspam net zo nuttig als voorheen; ze was alleen nooit het antwoord op dit probleem.