Direct naar de inhoud
Beveiligingsnieuws

Node.js Brotli-bug: update voor RCE-veiligheid

Node.js Brotli-bug

Node.js heeft op 21 oktober nieuwe beveiligingsupdates uitgerold voor alle ondersteunde releaselijnen: 22.x, 24.x en 26.x. In totaal gaat het om 10 beveiligingsproblemen. De meest in het oog springende kwestie is de Node.js Brotli-bug in de Brotli-decompressiecode die Node.js zelf meelevert. Daardoor zou een aanvaller code van zijn keuze kunnen laten uitvoeren op het getroffen systeem.

Hoewel de praktijkimpact volgens de aanbieder kleiner lijkt dan de term “remote code execution” suggereert, is de boodschap helder: upgrade naar de gepatchte versies en controleer ook hoe uw applicaties Brotli verwerken via request- of response-data.

Welke Node.js versies moeten worden geüpdatet?

Voor elke ondersteunde releaselijn is er één vaste versie:

  • 22.x (LTS): update naar 22.23.4
  • 24.x (LTS): update naar 24.22.1
  • 26.x (current): update naar 26.12.1

Let op: Node.js 20.x en eerder zijn end of life en krijgen deze fixes niet. Als u nog op die lijnen draait, is het advies om zo snel mogelijk naar een ondersteunde versie te migreren.

Wat houdt de Node.js Brotli-bug precies in?

De kwetsbaarheid zit niet in uw eigen applicatiecode, maar in de Brotli-decompressie die Node.js bundelt. Node.js voert die decompressie uit wanneer het Brotli-gegevens verwerkt, bijvoorbeeld in deze situaties:

  • Direct via node:zlib
  • Automatisch wanneer code fetch() gebruikt op een response die Brotli-compressie bevat

Concreet is er een blootstellingspad wanneer een toepassing Brotli-data decompress’t die een aanvaller kan beïnvloeden, zoals een request body of een gehaalde response van een externe server.

Waarom is dit volgens de melding “remote code execution”?

De kern is een out-of-bounds write in de Brotli decoder. Door kwaadwillig gemanipuleerde, misvormde gecomprimeerde input kan de decoder eerder dan normaal moeten stoppen. De patch zorgt ervoor dat de decoder ongeldige input herkent en afbreekt voordat het bufferprobleem optreedt.

Deze aanpak is afkomstig van het Brotli-project zelf en door Node.js overgenomen. De fix werd ook eerder opgenomen in broodjesvarianten van Brotli (1.2.1, 1.1.1 en 1.0.10), wat bevestigt dat het om een echte structurele bug gaat in de decoder-logica.

Is er al misbruik in het wild?

Volgens de updates waren er geen meldingen van actieve exploitatie “in de wild” bekend tot en met 22 oktober. Een openbare proof-of-concept (PoC) die op 22 oktober verscheen, kreeg volgens de auteur wel code execution op een bewust verzwakte testbuild. Op een standaard Node.js-build leidde dezelfde aanpak tot een crash en een beperkte read van process memory, maar niet tot een werkende code execution. De gepatchte versies zouden bovendien de specifieke PoC-input afwijzen.

Extra impact: TLS-gerelateerde bypasses

Naast de Brotli-kwestie zijn er nog meerdere “high”-fixes. Twee daarvan draaien om TLS certificaat checks die een aanvaller mogelijk kan omzeilen door een IP-adres in een “ongewone” notatie te gebruiken. Daardoor kan een certificaat matchen met een host waarvoor het niet bedoeld is.

Deze issues kregen identificaties mee in de vorm van CVE’s: CVE-2026-106069 en CVE-2026-105483. Een derde “high”-reparatie voorkomt dat dns.resolve een hostnaam afknipt op een embedded null byte (CVE-2026-105482).

Daarbij geldt dat de ene commit dit mogelijk als minder ernstig beschouwt, maar voor u als beheerder blijft het risico relevant: het gaat om situaties waarin verificaties of invoer-interpretatie niet doen wat je verwacht.

eMudhra certificaat-blokkering in Node.js

Er zit nog een interessante component in dezelfde updates: Node.js voegt een blocklist toe voor acht intermediate certificate authority keys van eMudhra. Die sleutels waren volgens het bericht eerder als gecompromitteerd gerapporteerd.

Node.js gebruikt weliswaar de Mozilla root certificate lijst, maar voert revocation checks niet standaard uit. Daardoor kon een certificaatketen die leunde op die gecompromitteerde sleutels vóór de update toch “passeren”. Met de nieuwe releases wordt een ingebouwde blokkering toegevoegd en wordt de gebundelde root lijst aangepast (inclusief het verwijderen van drie emSign roots).

Wel geldt een nuance: verbindingen die al gestart waren vóór de update worden pas opnieuw beoordeeld wanneer de sessie afloopt. Ook end-of-life versies krijgen die blokkering niet.

Andere meegeleverde dependency updates

Naast de 10 beveiligingsfixes vernieuwt Node.js ook verschillende ingebouwde onderdelen. Zo gaat de HTTP-client achter fetch() (undici) naar een versie met fixes voor meerdere advisories, waaronder:

  • een issue in de Subresource Integrity-check
  • twee memory-exhaustion-kwetsbaarheden, waaronder één in de WebSocket-client in Node.js

Daarnaast zijn op specifieke releaselijnen ook updates doorgevoerd voor onder meer c-ares, OpenSSL (op 22.x en 24.x) en SQLite (op 22.x), met fixes voor bekende kwetsbaarheden.

Wat als u nog niet kunt upgraden?

De kernboodschap blijft: upgraden is de oplossing. In de advisory is geen tijdelijke workaround binnen Node.js zelf opgenomen voor de Brotli-kwetsbaarheid. Dat betekent dat u niet mag rekenen op “handige toggles” of runtime-instellingen als vervanging van een patch.

Wel meldde een hostingpartij (Vercel) dat men firewallregels toevoegde op 21 oktober die inbound requests zouden blokkeren. Die regels zouden volgens de toelichting niet gelden voor Brotli responses die uw toepassing zelf ophaalt bij andere servers, en dus blijft dit een aanvulling en geen vervanging voor patchen.

Praktische checklist voor IT-teams

Om snel grip te krijgen op de Node.js Brotli-bug en de omliggende issues, kunt u deze stappen hanteren:

  • Inventariseer welke Node.js versie(s) uw diensten gebruiken (incl. build- en runtimeomgevingen).
  • Upgrade naar 22.23.4, 24.22.1 of 26.12.1, en plan migratie voor Node.js 20.x of ouder.
  • Beoordeel data-stromen: verwerkt uw applicatie Brotli via request bodies of via fetch()-responses?
  • Hercheck TLS en DNS-paden: worden er certificaatvalidaties of DNS-resolving gedaan op manieren die gevoelig kunnen zijn voor bypass-/parse-issues?
  • Controleer sessiegedrag bij certificaatblokkering: sessies die vóór de update begonnen zijn, worden pas later opnieuw gevalideerd.

Als u ook werkt met AI- of agent-achtige systemen die sterk leunen op software-infrastructuur, helpt het om security niet als los project te zien. Op onze site leest u bijvoorbeeld meer over runtime-veiligheid voor agenten via AI-agent runtime security: Beacon en beleid.

Conclusie

De nieuwste Node.js updates draaien om een pakket aan kwetsbaarheden, met als grootste aandachtspunt de Node.js Brotli-bug in de ingebouwde Brotli-decompressie. Hoewel de echte exploitmogelijkheden volgens de eerste tests kleiner lijken dan op basis van de term “remote code execution” verwacht kan worden, zijn de veiligheidsuitkomsten voor beheerders niet vrijblijvend: upgrade naar de gepatchte versies en controleer uw blootstelling aan gemanipuleerde Brotli-data.

Daarnaast bieden de releases ook bescherming tegen TLS-bypassscenario’s en een blokkering van gecompromitteerde eMudhra CA-keys. Kortom: dit is een onderhoudsronde die u beter niet uitstelt.

Bron: https://thehackernews.com/2026/10/nodejs-brotli-decoder-bug-could-allow.html