Direct naar de inhoud
Cybersecurity

Node2Shell: patchen nodig in Brotli-decoder

Node2Shell Brotli

Node2Shell Brotli is de naam die is gegeven aan een kwetsbaarheid in de Brotli-bibliotheek voor datacompressie. De fout, geregistreerd als CVE-2026-111497, raakt de decoder en is door onderzoekers als zeer ernstig beoordeeld. In de praktijk betekent dit: zodra een applicatie door een aanvaller aangeleverde (gecomprimeerde) data laat verwerken door een getroffen decoder, kan er risico ontstaan.

Wat het extra urgent maakt, is dat er inmiddels updates beschikbaar zijn voor meerdere ecosystemen: onder meer Node.js, Python en ook Microsoft-componenten zoals .NET en tooling. In dit artikel lees je wat er aan de hand is, waar je op moet letten en hoe je dit in je omgeving kunt aanpakken.

Wat is Node2Shell Brotli precies?

Node2Shell Brotli draait om een fout in de Brotli-decoder die valt onder een out-of-bounds write. Dit type probleem kan leiden tot geheugen-corruptie in het proces dat de decoder draait. Afhankelijk van de omstandigheden kan dat resulteren in een crash, lekken van geheugeninhoud of (in sommige scenario’s) code-uitvoering.

De kwetsbaarheid beïnvloedt Brotli-versies 1.0.3 t/m 1.2.0. Google gaf de issue een CVSS v4-score van 9.2 en plaatste die in de kritieke categorie. De beveiligingsfix zit in Brotli 1.0.10, 1.1.1 en 1.2.1.

Waarom is het risico zo breed?

Brotli is populair voor web- en API-verkeer: het wordt gebruikt om gegevens te comprimeren voordat die over het netwerk gaan. Daardoor zit de decoder ingebed in een lange lijst van applicaties en libraries die gecomprimeerde content verwerken.

Belangrijk voor je dreigingsinschatting: de aanval werkt alleen wanneer kwaadaardige Brotli-data daadwerkelijk bij de getroffen decoder terechtkomt. Dat kan bijvoorbeeld via:

  • een applicatie die gecomprimeerde HTTP-request bodies decodeert
  • verwerking van gecomprimeerde responses die door de applicatie bij externe partijen worden opgehaald
  • het decoderen van gecomprimeerde bestanden op basis van input die niet volledig vertrouwd is

Er hoeft dus niet per se sprake te zijn van “Brotli in het zicht”. Het gaat om het pad waarlangs jouw software (of een dependency) de decoder gebruikt met input die uiteindelijk door een aanvaller kan worden beïnvloed.

Patchstatus: Node.js, Python en Microsoft zijn geüpdatet

De updates zijn in meerdere fases uitgerold. Node.js en twee Python-pakketten zijn al eerder bijgewerkt. Microsoft volgde op 25 oktober met fixes voor diverse producten en runtimes.

Node.js en ecosystemen

Het Node.js-project heeft de kwetsbare Brotli-verwerking gepatcht. Daarbij gaat het om situaties waarin gecomprimeerde data wordt gedecodeerd in een getroffen build of containerbeeld. Later in de keten zagen onderzoekers ook aanvullingen bij andere runtimes: Bun, Envoy en Istio zijn eveneens geüpdatet.

Python: getroffen decoder in PyPI

In Python zit de kwetsbare decoder ingebouwd in de PyPI-pakketten Brotli en brotlicffi. Voor beide geldt dat ze zijn gepatcht met versies 1.2.1 (voor Brotli) en 1.2.1.0 (voor brotlicffi).

Let ook op de praktijk: wanneer je software een dependency bundelt die Brotli “meeneemt”, kan die decoder in je distributie aanwezig zijn, ook als je eigen code er niets mee doet.

Microsoft: .NET, Visual Studio en PowerShell

Microsoft heeft CVE-2026-111497 geclassificeerd als een elevation of privilege-kwestie met een CVSS v3.1 base score van 8.1. Voor .NET en Visual Studio is het “critical”, voor PowerShell is het “important”. De exploitability-inschatting luidt bovendien: “Exploitation More Likely.”

Concreet zijn er fixes geleverd in onder meer:

  • .NET runtime versies 8.0.33, 9.0.22 en 10.0.14
  • .NET 11 Release Candidate 3
  • Visual Studio 2019, 2022 en 2026
  • PowerShell 7.4, 7.5 en 7.6

Ook hier geldt: controleer niet alleen op versie-updates, maar ook op uitrol. Processen die al draaien kunnen nog steeds de oude decoder gebruiken.

Hoe werkt een mogelijke aanval?

De kern is dat de decoder wordt gevoed met speciaal geconstrueerde Brotli-input. Als die input bufferlimieten overschrijdt, kan dat leiden tot geheugen-corruptie. De uitkomst kan variëren van een crash tot het lekken van informatie, en in sommige gevallen zelfs tot uitvoering van code.

Er is bovendien aangetoond dat exploitatie in bepaalde omgevingen kan leiden tot code execution. Onderzoekers van Imperva rapporteerden bijvoorbeeld dat ze code-uitvoering konden aantonen op een officiële Node.js image voor Linux arm64. Zij gaven aan dat de kwaadaardige data zowel als onderdeel van een server response als via request body-verwerking door frameworks als Express 5 of body-parser 2 kon worden aangeleverd.

De onderzoekers deelden echter geen volledige exploitpublieke details. Ook ontbreekt tot nu toe meldingen over misbruik in het wild.

Niet alleen “Brotli” bij je eigen code: bundels en containers tellen

Een valkuil bij Node2Shell Brotli is dat teams denken: “wij gebruiken geen Brotli direct.” Toch kan de decoder aanwezig zijn in tools, runtimes of distributies die gecomprimeerde data ondersteunen.

Een publiek tracker-lijst met projecten die hun eigen Brotli-decoder bundelen noemde onder meer onder andere DuckDB, Apache Arrow, 7-Zip-zstd, p7zip en EDK II. De maintainers gaven daarbij aan dat de lijst niet volledig is en dat niet elke configuratie automatisch betekent dat het kwetsbare pad wordt geraakt.

Praktisch betekent dit: kijk naar welke decoder wordt gebruikt en welke input kan worden beïnvloed.

Wat je vandaag nog kunt doen

Omdat er geen meldingen zijn van actieve aanvallen in het wild, is “wachten” riskant maar niet noodzakelijk. Pak het gestructureerd aan:

  • Update Node.js naar de gepatchte versies.
  • Werk Python-bibliotheken bij: Brotli naar 1.2.1 en brotlicffi naar 1.2.1.0.
  • Pas Microsoft updates toe voor de getroffen .NET runtime(s), Visual Studio en PowerShell.
  • Herstart diensten zodat processen niet met oude decodercode blijven draaien.
  • Bij containeromgevingen: rebuild image op een gepatchte basis en rol opnieuw uit.

Het is extra nuttig om in je incident- of changeproces expliciet te documenteren waar de decoder draait en hoe er gecomprimeerde data binnenkomt. Daarmee voorkom je dat “patch geïnstalleerd” wordt gezien als “risico verdwenen”, terwijl de runtime nog de oude component gebruikt.

Gerelateerde aandachtspunten: supply chain en dependency-gedreven risico’s

Kwetsbaarheden zoals Node2Shell Brotli laten zien hoe snel een libraryfout zich kan vertalen naar brede impact, juist via dependencies. Als je ook bezig bent met het beoordelen van supply chain risico’s, helpen vergelijkbare cases om je aanpak scherper te maken.

Lees bijvoorbeeld ook:

Conclusie

Node2Shell Brotli is een kritieke kwetsbaarheid in de Brotli-decoder die kan leiden tot geheugen-corruptie en mogelijk code-uitvoering. De uitdaging zit niet alleen in “de library updaten”, maar ook in het identificeren waar de decoder wordt gebruikt en of jouw systemen gecomprimeerde, door een aanvaller beïnvloedbare input verwerken.

Het goede nieuws is dat patches inmiddels beschikbaar zijn voor relevante ecosystemen, waaronder Node.js, Python en Microsoft-componenten. Met een snelle update, herstart en (waar nodig) containerrebuild verlaag je het risico aanzienlijk en haal je de kwetsbaarheid uit je productiepad.

Bron: https://www.securityweek.com/node2shell-brotli-flaw-triggers-patching-across-microsoft-node-js-python-packages/