Kritiek · CVSS 9.2Fix uitgebracht 2026-10-21 14:00 UTCEerste aanvallen gemeld

PHP2Shell is een pre-auth RCE in PHP zelf. Upgrade PHP en herstart het.

Twee geheugenveiligheidsbugs in de PHP-engine (CVE-2026-109618, CVE-2026-109619) laten een aanvaller zonder inloggen code uitvoeren of servergeheugen uitlezen — wachtwoorden, API-sleutels, sessietokens — op vrijwel elke PHP-versie sinds 5.4, ongeacht de applicatie erbovenop.

Niet technisch? Lees PHP2Shell in gewone taal — wat het betekent voor je website of de SaaS-tools die je gebruikt.

Laatst gecontroleerd 2026-10-22 · onafhankelijk, leveranciersneutraal

Plak een versie, de uitvoer van php -v, of één versie per regel voor een hele serverpark. Draait volledig in je browser.

Probeer:

De CLI en de webserver kunnen verschillende PHP-builds draaien. Controleer de versie die je webserver echt gebruikt: php-fpm -v (of php-fpm8.3 -v), of phpinfo() via die site.

BranchKwetsbaarOpgelost in
8.5< 8.5.128.5.12
8.4< 8.4.278.4.27
8.3< 8.3.368.3.36
8.2< 8.2.358.2.35
8.1 · 8.0 · 7.4alleAlleen source-backport
5.4 – 7.3alleGeen fix

PHP 8.2 verliest op 2026-12-31 de security-ondersteuning

Patchen naar 8.2.35 lost PHP2Shell op, maar vóór eind 2026 moet je opnieuw overstappen. Ga je toch migreren, kies dan 8.4 of 8.5.

Doe dit nu

In deze volgorde. Niets anders is een volledige oplossing.

  1. 01

    Vind elke PHP-runtime

    Webservers, containers, base images, shared hosting, staging. De CLI-versie kan afwijken van wat PHP-FPM of Apache draait.

    Hoe
  2. 02

    Installeer een gepatchte release

    8.5.12 · 8.4.27 · 8.3.36 · 8.2.35, of het gepatchte pakket van je distributie. WordPress/Drupal/Laravel bijwerken werkt PHP niet bij.

    Hoe
  3. 03

    Herstart alles wat PHP draait

    PHP-FPM-pools, Apache (mod_php), FrankenPHP, queue-workers, Octane/RoadRunner/Swoole. Oude processen houden de oude code in het geheugen.

    Hoe
  4. 04

    Verifieer en kijk terug

    Bevestig de versie die de webserver meldt. Bekijk de logs sinds begin oktober 2026 en vervang geheimen als iets verdacht oogt.

    Hoe

Kun je vandaag niet upgraden? Tijdelijke mitigaties verkleinen de blootstelling aan de bekende aanvalspaden. Op shared hosting? Zie hosting.

Gidsen voor jouw situatie

Wordt het misbruikt?

Stand per 2026-10-22. Berichten lopen uiteen; ga ervan uit dat capabele aanvallers werkende exploits hebben.

  • Cloudflare (CTO Dane Knecht): “We are seeing early attacks emerging and are updating mitigations as new vectors show up.”
  • watchTowr meldt per 21 oktober misbruik in the wild, waargenomen via zijn honeypotnetwerk.
  • Het Nederlandse NCSC had op dat moment geen misbruik gezien en beschouwt elk PHP-systeem dat aan internet hangt als kwetsbaar tot het gepatcht is.
  • Er was geen bevestigde geslaagde inbraak gepubliceerd en geen van beide CVE’s stond in de KEV-catalogus van CISA.
  • Op GitHub circuleren diverse “PoC”-repository’s. Tenable kon van geen enkele bevestigen dat hij werkt — behandel ze als onbetrouwbare, mogelijk kwaadaardige code.

Organisaties die offline gingen (BambooHR, DigiD…) →

Welke serveropstellingen zijn blootgesteld

mod_php is het duidelijkst te misbruiken, maar elke SAPI die webrequests afhandelt heeft de patch nodig.

Opstelling…109618…109619Toelichting
Apache + mod_phpRCE bevestigdRCE bevestigdBeide CVE’s bevestigd tot RCE met standaardlimieten. Opstelling met het hoogste risico.
PHP-FPM (nginx, Apache, Caddy…)VatbaarRCE bevestigdRCE via de sessielevenscyclus bevestigd op FPM. Het OOM-pad is bevestigd via codepaden op applicatieniveau; er is geen generieke FPM-exploit gepubliceerd.
FrankenPHP / LiteSpeed LSAPIWaarschijnlijkWaarschijnlijkDe advisory noemt ze waarschijnlijk vatbaar. Langlevende workers maken achtergebleven state tussen requests juist relevanter.
CLI (cron, queue-workers, artisan)Niet behandeldNiet behandeldNiet behandeld in de advisories en bij normaal gebruik niet bereikbaar via HTTP-requests. Upgrade toch — het is hetzelfde pakket.

Wanneer kwam de patch uit in mijn tijdzone?

PHP publiceerde de gepatchte releases op dinsdag 21 oktober 2026 om 14:00 UTC — 16:00 uur Nederlandse en Belgische tijd. De VS en Europa zaten die dag nog in de zomertijd, dus “EST” betekende in werkelijkheid EDT (UTC−4).

TijdzonePatch uitgebracht
UTC14:00
VS Pacific (PDT, UTC−7)07:00
VS Central (CDT, UTC−5)09:00
VS Eastern (EDT, UTC−4)10:00
VK (BST, UTC+1)15:00
Midden-Europa (CEST, UTC+2)16:00
India (IST, UTC+5:30)19:30
China / HK / SG (UTC+8)22:00
Japan (JST, UTC+9)23:00
Sydney (AEDT, UTC+11)01:00

Wat een aanvaller kan doen

Code uitvoeren zonder in te loggen

Code-uitvoering als de PHP-workergebruiker (bijv. www-data): webshells, datadiefstal, defacement, laterale beweging.

Geheugen van andere requests lezen

Workergeheugen kan databasewachtwoorden, API-sleutels, sessiecookies, TLS-materiaal en formulierdata van andere gebruikers bevatten.

Stil data lekken

Het geheugenlekpad vereist geen code-uitvoering, dus tools die op kwaadaardige processen letten slaan mogelijk nooit aan.

Veelgemaakte fouten

De snelste manieren om te denken dat je veilig bent terwijl je dat niet bent.

Als je denkt…Werkelijkheid
“Ik heb WordPress / mijn plugins bijgewerkt.”De bug zit in de PHP-interpreter. Applicatie-updates raken die niet. Zelfs een simpel “Hello World”-script op een kwetsbare PHP is blootgesteld.
“Ik heb session.upload_progress.enabled = 0 gezet.”Dat blokkeert enkele bevestigde paden van één CVE. Voor CVE-2026-109618 doet het niets. De PHP-ontwikkelaars zeggen zelf dat upgraden de enige mitigatie is.
“Ik heb apt upgrade gedraaid, dus ik ben klaar.”Draaiende PHP-FPM- / Apache-processen houden de oude binary in het geheugen tot ze herstarten.
“php -v zegt dat ik gepatcht ben.”Dat is de CLI. De webserver kan een ander pakket, een andere container of versie gebruiken. Controleer php-fpm -v of phpinfo().
“Ik zit achter Cloudflare / een WAF.”WAF-regels verkleinen het risico bij bekende payloads; aanvallers passen ze al aan en origins zijn vaak direct bereikbaar. Het koopt tijd, het is geen oplossing.
“Mijn versie lijkt oud, dus ik ben kwetsbaar.”Misschien niet. Debian, Ubuntu en RHEL backporten fixes zonder het upstream-nummer te wijzigen. Controleer de changelog van het pakket.

De twee CVE’s in één oogopslag

Hoe het verliep

  1. 2026-10-20 15:00 UTCCVE-ID’s gaan rond op fora en sociale media, met een onjuiste CVSS van 10.0.
  2. 2026-10-20 19:30 UTCPHP publiceert zijn vooraankondiging eerder dan gepland.
  3. 2026-10-20 ~20:00 UTCCalif publiceert per ongeluk een video van zijn proof of concept.
  4. 2026-10-20 23:00 UTCMitigatieadvies gaat naar enkele aanbieders van vitale infrastructuur, en is mogelijk uitgelekt.
  5. 2026-10-21 03:02 UTCCloudflare-WAF-regels gaan live voor alle abonnementen, ook Free.
  6. 2026-10-21 07:41 UTCChainguard levert gepatchte images en doorbreekt het embargo met meer dan zes uur.
  7. 2026-10-21 11:51 UTCBambooHR haalt zijn dienst uit voorzorg offline (VS, Canada, Ierland).
  8. 2026-10-21 (CEST)Nederlandse overheids- en onderwijssites, waaronder DigiD en MijnOverheid, gaan uit voorzorg offline.
  9. 2026-10-21 14:00 UTCGecoördineerde release: PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35, plus source-backports voor 7.4, 8.0, 8.1. Oorspronkelijk gepland voor 22 okt.
  10. 2026-10-21 15:03 UTCBambooHR meldt dat de fix is toegepast en dat er wordt getest.

Volledige tijdlijn vanaf de audit in 2024 → · Vergeleken met de Java-bug uit 2021: PHP2Shell vs Log4Shell →