Terug naar blog
Beveiliging

PHP2Shell en Node2Shell: wat u nu moet doen

Op woensdag 21 oktober 2026 brachten zowel PHP als Node.js een dringende beveiligingsupdate uit. De lekken kregen al snel een naam: PHP2Shell en Node2Shell. Samen draaien die twee platformen een groot deel van het web, van WordPress- en Laravel-sites tot webapplicaties en API’s in JavaScript. Hieronder leest u wat er precies aan de hand is, wie risico loopt en wat u vandaag kunt doen.

PHP2Shell: twee lekken in PHP zelf

PHP2Shell is de naam voor twee kritieke lekken in de kern van PHP, CVE-2026-109618 en CVE-2026-109619. Beide maken het mogelijk om van buitenaf code uit te voeren op de server.

  • CVE-2026-109618: als PHP zonder geheugen valt terwijl het een verzoek nog aan het opbouwen is, kan het opruimwerk achteraf half opgebouwde gegevens als geldig behandelen.
  • CVE-2026-109619: interne gegevens van een verzoek kunnen blijven bestaan nadat hun geheugen al is vrijgegeven. Een volgend verzoek in hetzelfde werkproces kan die gegevens dan gebruiken.

Volgens het PHP-project loopt elke PHP-installatie die webverzoeken afhandelt risico: PHP-FPM, Apache met mod_php, php-cgi, FrankenPHP en LiteSpeed. Het grootste risico zit bij mod_php, waar een aanval is aangetoond met een verzoek zonder aanmelding, nog voor er ook maar één regel van uw applicatie draait.

De oplossing is updaten. Deze versies bevatten de fix:

PHP-versieOpgeloste versie
8.58.5.12
8.48.4.27
8.38.3.36
8.28.2.35

Voor PHP 8.1 en ouder komen er geen officiële updates meer. Het PHP-project publiceerde wel patches voor 7.4, 8.0 en 8.1, en sommige distributies en leveranciers van langdurige ondersteuning bieden aangepaste versies aan. Let ook op: PHP 8.2 krijgt na 31 december 2026 geen beveiligingsupdates meer.

Kunt u vandaag nog niet updaten, dan beperken enkele instellingen het risico, al maken ze een installatie volgens het PHP-project niet veilig. Zet session.upload_progress.enabled=0 in php.ini of in de FPM-pool en herstart alle werkprocessen; ini_set() of een .user.ini volstaat niet. Houd post_max_size laag en begrens de grootte en complexiteit van verzoeken op uw webserver of proxy. Na een gerelateerde melding op 23 oktober (CVE-2026-115560) raadt het PHP-project aan om upload progress uitgeschakeld te laten tot de volgende bugfixrelease.

Over misbruik in de praktijk zijn de bronnen het oneens. Details lekten uit voor de officiële release en Amazon meldde een aanvalspoging op zijn honeypots. De directeur van de PHP Foundation verklaarde daarentegen geen werkende exploits te hebben gezien. Wacht daar niet op: wie updatet, hoeft het antwoord niet af te wachten.

Node2Shell: een lek in de Brotli-decompressie

Node2Shell is CVE-2026-111497, een lek in de Brotli-decoder die met Node.js wordt meegeleverd. Een kwaadaardig gevormde, gecomprimeerde invoer kan voorbij het einde van een interne buffer schrijven. Volgens Node.js kan een aanvaller die Brotli-gegevens aanlevert die uw applicatie met node:zlib decomprimeert, het geheugen van het proces beschadigen. Dat kan leiden tot een crash, het lekken van geheugen of het uitvoeren van code.

Het risico zit dus bij applicaties die gecomprimeerde gegevens van buitenaf uitpakken: bijvoorbeeld een API die verzoeken met Content-Encoding: br aanvaardt, een proxy of gateway, of software die geüploade bestanden verwerkt.

Node.js-versieOpgeloste versie
26.x26.12.1
24.x24.22.1
22.x22.23.4
20.x en 25.xgeen fix: einde ondersteuning

Twee dingen om te onthouden:

  • Een npm-pakket bijwerken helpt niet. De kwetsbare code zit in Node.js zelf. Alleen een nieuwe Node.js-versie lost het op.
  • Het probleem zit dieper dan Node.js. De oorzaak ligt in Googles Brotli-bibliotheek (versies 1.0.3 tot en met 1.2.0). Ook het Python-pakket Brotli is getroffen, en volgens onderzoekers van Aikido ook de runtime Bun.

Node.js zelf noemt geen tijdelijke oplossing. Wie niet meteen kan updaten, kan verzoeken met Content-Encoding: br weigeren op de reverse proxy of load balancer om het risico te verkleinen. Dezelfde release lost trouwens nog andere ernstige problemen op, onder meer in de controle van TLS-certificaten (CVE-2026-106069, CVE-2026-105483) en DNS-opzoekingen (CVE-2026-105482). Updaten loont dus hoe dan ook.

Wat u vandaag doet

  • Breng in kaart waar PHP en Node.js draaien: servers, containers, hostingpakketten, interne tools en bouwstraten.
  • Controleer de versie op de plek waar de software echt draait, met php -v of node -v in de container, niet op uw eigen laptop.
  • Update naar een opgeloste versie. Bij containers betekent dat: het image opnieuw bouwen op een bijgewerkte basis en opnieuw uitrollen.
  • Plan een upgrade voor alles dat geen ondersteuning meer krijgt: PHP 8.1 en ouder, Node.js 20 en 25.
  • Kunt u niet meteen updaten, zet dan de tijdelijke maatregelen hierboven, en houd uw logs in de gaten op crashende werkprocessen en vreemde verzoeken.
  • Laat u hosten of beheert een partner uw site, vraag dan een bevestiging met de exacte versienummers.

Hoe Skedia u helpt met een beveiligingsaudit

We deden de oefening eerst bij onszelf. Binnen een dag hadden we elke container die we beheren nagekeken, en de sites die we bouwen en hosten draaien allemaal een bijgewerkte Node.js-versie. Diezelfde aanpak bieden we aan als beveiligingsaudit:

  • Inventaris: welke software, versies en afhankelijkheden draaien er, en wat krijgt geen updates meer.
  • Updateplan: in welke volgorde u bijwerkt en opnieuw uitrolt, zonder dat uw site of applicatie stilvalt.
  • Configuratie: veilige instellingen voor PHP, Node.js en uw webserver, met beveiligingsheaders en een Content Security Policy.
  • Code: een kritische blik op plekken waar invoer van buitenaf binnenkomt, zoals uploads, formulieren en het uitpakken van bestanden.
  • Opvolging: foutmeldingen en monitoring, zodat u een probleem ziet voor uw klanten het merken.
  • Rapport: een helder verslag in gewone taal, met prioriteiten en concrete volgende stappen.

Wilt u zeker weten dat uw website of applicatie niet kwetsbaar is voor PHP2Shell, Node2Shell of het volgende lek? Neem contact op voor een audit.

Bronnen

Klaar voor de volgende stap?

Skedia hoort graag van u.

Bespreek een project