Node2Shell uitgelegd: wat er aan de hand is met het Brotli-lek in Node.js
Op woensdag 21 oktober 2026, dezelfde dag als PHP2Shell, bracht Node.js een belangrijke beveiligingsupdate uit. Die dichtte een ernstig lek in Brotli, een onderdeel dat gegevens inpakt en uitpakt. Het lek kreeg al snel de bijnaam Node2Shell. Ook het Nationaal Cyber Security Centrum (NCSC) waarschuwt ervoor. In dit artikel leggen we uit wat er aan de hand is, voor wie het gevaarlijk is en wat wij hebben gedaan.
Draai je een Node.js-app bij Theory7? Dan hoef je zelf niets te doen. Wij hebben alle Node.js-versies die je bij ons kunt kiezen bijgewerkt en de draaiende apps herstart, zodat ze de nieuwe versie ook echt gebruiken. Gewone websites zonder Node.js, zoals de meeste WordPress-sites, gebruiken Node.js niet en hadden met dit Node.js-lek niet te maken.
Node2Shell in het kort
- Wat: een fout in Brotli, de uitpakfunctie die in Node.js is ingebouwd. Officieel CVE-2026-111497.
- Ernst: hoog. Een aanvaller kan zonder wachtwoord geheugen uitlezen, een app laten crashen en in het ergste geval eigen code laten uitvoeren.
- Wie: apps die Brotli-gegevens uitpakken die van buiten komen. Ook als dat via een library gebeurt waar je zelf niet aan denkt.
- Oplossing: Node.js 22.23.4, 24.22.1 en 26.12.1, uitgebracht op 21 oktober 2026.
- Bij Theory7: alle Node.js-versies bijgewerkt en apps herstart op vrijdag 23 oktober, zodra er oplossingen waren voor elke versie die je bij ons kunt kiezen.
Wat is Node.js eigenlijk?
Een website of webapp heeft een voorkant en een achterkant. De voorkant zie je in je browser. De achterkant draait op een server en doet het werk: gegevens ophalen, formulieren verwerken, berichten versturen. Node.js is een veelgebruikte techniek om die achterkant te bouwen, met dezelfde programmeertaal als waarmee de voorkant van websites werkt: JavaScript.
Je komt Node.js tegen bij webapps, chatfuncties, koppelingen tussen systemen en moderne websites. Bij ons kun je een Node.js-app starten vanuit je hostingpakket. Hoe dat werkt lees je in ons kennisbankartikel over Node.js-apps. Wil je weten waar je op let bij het kiezen van een host, lees dan Node.js hosting kiezen.
Wat is Brotli, en wat ging er mis?
Brotli is een manier om gegevens kleiner te maken, net als een zip-bestand. Google heeft het bedacht. Websites gebruiken het veel, omdat kleinere bestanden sneller over internet gaan. Je browser vraagt er vrijwel altijd om. Node.js heeft een eigen exemplaar van Brotli ingebouwd, zodat apps gegevens kunnen in- en uitpakken.
Het lek zat in het uitpakken. Vergelijk het met iemand die verhuisdozen uitpakt volgens een paklijst. Een aanvaller stuurt een doos met een paklijst die niet klopt. In plaats van te stoppen en te zeggen "deze lijst is fout", denkt de uitpakker dat er nog spullen onderweg zijn. Hij blijft alles in een klein laatje stoppen, ook als dat laatje allang vol is. Wat niet past, belandt in de laatjes ernaast. Precies daar kan een aanvaller dingen neerleggen die er niet horen.
In vaktaal heet dit een buffer overflow. De gevolgen kunnen ernstig zijn:
- Geheugen uitlezen. Een aanvaller kan stukjes uit het geheugen van de app te zien krijgen. Daar kunnen wachtwoorden of sleutels tussen zitten.
- Een app laten crashen. De app stopt en je bezoekers krijgen een foutmelding.
- Code laten uitvoeren. In het ergste geval doet de app wat de aanvaller zegt. Daar komt de naam Node2Shell vandaan.
Er is geen wachtwoord voor nodig. Het enige wat een aanvaller moet regelen, is dat jouw app een vervalst Brotli-pakketje uitpakt. Bijvoorbeeld doordat je app een webadres ophaalt dat de aanvaller zelf heeft gekozen.
Hoe ernstig is Node2Shell?
Node.js zelf noemt het lek "hoog". Het NCSC beoordeelt in zijn advies de kans op misbruik als gemiddeld en de mogelijke schade als groot. Het advies is om de updates zo snel mogelijk te installeren.
Waarom de kans "gemiddeld" is: niet elke app pakt Brotli-gegevens uit die van buiten komen. En ook als dat wel zo is, werkt een aanval niet elke keer. Maar onderzoekers lieten al op 22 oktober zien dat het in de praktijk kan. Volgens beveiligingsbedrijf Aikido lukte het om code uit te voeren op een gewone, niet aangepaste Node.js-versie. Zo'n voorbeeld maakt het voor kwaadwillenden makkelijker om er een echte aanval van te maken.
Wat hebben wij tegen Node2Shell gedaan?
Bij ons kies je zelf welke Node.js-versie je app gebruikt, ook oudere versies. Er draaien op onze servers dus veel Node.js-versies naast elkaar, en die moesten allemaal goed. De Node.js-versies in je hostingpakket komen van CloudLinux, het besturingssysteem op onze servers. CloudLinux levert ook oplossingen voor oudere Node.js-versies waar Node.js zelf geen updates meer voor maakt.
| Wanneer | Wat er gebeurde |
|---|---|
| Woensdag 21 oktober | Node.js brengt de update uit voor versie 22, 24 en 26. |
| Donderdag 22 oktober | Onderzoekers tonen een eerste werkend voorbeeld van een aanval. CloudLinux levert bijgewerkte versies van Node.js 22, 24 en 26. |
| Nacht naar vrijdag 23 oktober | CloudLinux levert ook oplossingen voor oudere Node.js-versies. |
| Vrijdag 23 oktober, overdag | Het NCSC publiceert zijn advies. Wij brengen in kaart welke Node.js-versies en apps er op al onze servers draaien. |
| Vrijdag 23 oktober, avond | Wij werken alle Node.js-versies bij: eerst op één server als test, daarna op alle andere. Draaiende apps worden herstart en we controleren of ze daarna net zo werken als ervoor. |
Dat herstarten is belangrijk. Een app die al draait, blijft de oude versie in zijn geheugen houden, ook als de nieuwe er al staat. Pas na een herstart is hij echt beschermd. Dat hebben we voor alle apps gedaan, en per app gecontroleerd dat hij daarna hetzelfde antwoord geeft als ervoor.
Een paar zeer oude Node.js-versies bevatten het kwetsbare onderdeel helemaal niet. Voor één oude versie kwam geen oplossing meer. Die werd door niemand gebruikt en hebben we verwijderd.
Zit hetzelfde lek ook in andere software?
Ja. Brotli wordt door heel veel software gebruikt, niet alleen door Node.js. Onderzoekers vonden hetzelfde lek inmiddels ook in andere programma's en libraries die Brotli gebruiken, bijvoorbeeld voor Python. Voor een deel daarvan zijn de updates van de makers nog niet klaar.
Wij houden dat dagelijks in de gaten. Zodra er een update is voor software op onze servers, installeren we die op dezelfde manier als bij Node.js: eerst testen, dan overal bijwerken en controleren.
Moet je zelf iets doen na Node2Shell?
Voor je Node.js-app bij ons niet. Toch een paar tips:
- Gebruik je een oude Node.js-versie, zoals 18 of 20? Die hebben we ook bijgewerkt, maar het versienummer blijft dan gelijk. Schrik dus niet als je bij
node -vhetzelfde nummer ziet. Deze versies krijgen van Node.js zelf geen updates meer. Stap daarom over op Node.js 22 of 24 als je app dat aankan. - Heb je zelf een Node.js-proces gestart, buiten het Node.js-menu in je hostingpakket om? Herstart dat dan, zodat het de nieuwe versie gebruikt.
- Houd je eigen code en packages bij. Wij zorgen voor Node.js op de server. De npm-packages van je app werk je zelf bij. Gebruik je Python met de packages Brotli of brotlicffi, of draai je Bun, werk die dan ook bij zodra er een update is.
- Heb je elders een eigen server of VPS met Node.js? Werk Node.js dan bij naar 22.23.4, 24.22.1 of 26.12.1, of nieuwer, en herstart je apps.
De actuele stand van zaken bij storingen en onderhoud vind je altijd op status.theory7.net. Twijfel je over je eigen app, maak dan een ticket aan met je domeinnaam. We kijken het graag voor je na.
Veelgestelde vragen
Wat is Node2Shell?
Node2Shell is de bijnaam voor een ernstig lek in Brotli, de uitpakfunctie die in Node.js is ingebouwd (CVE-2026-111497). Met vervalste Brotli-gegevens kan een aanvaller zonder wachtwoord geheugen uitlezen, een app laten crashen en in het ergste geval code uitvoeren. Node.js heeft het opgelost in versie 22.23.4, 24.22.1 en 26.12.1.
Was mijn website bij Theory7 kwetsbaar?
Het lek in Node.js raakte alleen Node.js-apps. Gewone websites zoals de meeste WordPress-sites gebruiken Node.js niet. Alle Node.js-versies die je bij ons kunt kiezen hebben we op vrijdag 23 oktober bijgewerkt, en draaiende apps hebben we herstart. Hetzelfde Brotli-lek zit ook in andere software. Die werken we bij zodra de makers een update hebben.
Moet ik zelf iets doen?
Voor Node.js zelf niet, dat hebben wij bijgewerkt. Heb je zelf een Node.js-proces gestart buiten het Node.js-menu om, herstart dat dan. Gebruik je Node.js 18 of 20, dan raden we aan over te stappen op 22 of 24.
Waarom is mijn Node.js-versienummer niet veranderd?
Voor oudere versies zoals Node.js 18 en 20 maakt CloudLinux de oplossing zonder het versienummer te veranderen. De update zit er dus wel in. Bij Node.js 22, 24 en 26 zie je wel het nieuwe nummer: 22.23.4, 24.22.1 of 26.12.1.
Is Node2Shell hetzelfde als PHP2Shell?
Nee. Ze kwamen dezelfde week in het nieuws en hebben een vergelijkbare naam, maar het zijn twee verschillende lekken. PHP2Shell zat in PHP, Node2Shell zit in Brotli in Node.js. Over PHP2Shell lees je meer in PHP2Shell uitgelegd.