Am 21. Oktober 2026 hat das Node.js-Team Security-Updates für alle unterstützten Versionen veröffentlicht. Die wichtigste Lücke darin heißt CVE-2026-111497, in der Szene inzwischen als „Node2Shell“ bekannt. Sie steckt im Brotli-Decoder von Node.js. Mit manipulierten Brotli-Daten lässt sich ein Node.js-Prozess zum Absturz bringen, Speicherinhalt auslesen und im schlimmsten Fall Code auf dem Server ausführen.
Node.js stuft die Lücke als High ein. Seit dem 22. Oktober ist ein Proof of Concept öffentlich. Wenn Sie Node.js produktiv einsetzen, sollten Sie das Update nicht aufschieben.
Worum geht es?
Brotli ist ein Kompressionsverfahren, das im Web sehr verbreitet ist. Node.js bringt eine eigene Kopie der Brotli-Bibliothek mit. Bei bestimmten fehlerhaften Daten schreibt der Decoder über das Ende eines Buffers hinaus, ein klassischer Out-of-Bounds Write. Genau das nutzen Angreifer aus.
Im Brotli-Projekt ist der Fehler schon seit Februar 2026 behoben. Da die Bibliothek aber fest in Node.js eingebaut ist, kommt der Fix erst mit einem neuen Node.js-Release bei Ihnen an. Ein npm update im Projekt ändert daran nichts.
Welche Versionen sind betroffen?
| Version | Status | Gefixt ab |
|---|---|---|
| Node.js 26 | betroffen | 26.12.1 |
| Node.js 24 | betroffen | 24.22.1 |
| Node.js 22 | betroffen | 22.23.4 |
| Node.js 25, 23, 20 und älter | End of Life | kein Fix |
| Bun | betroffen | 1.4.4 |
Auch andere Software, die Brotli mitbringt, kann betroffen sein. Gefixt ist der Fehler in Brotli 1.2.1, 1.1.1 und 1.0.10. Haben Sie Node.js über den Paketmanager Ihrer Linux-Distribution installiert, kommt das Update unter Umständen über die Distribution.
Wie kommt ein Angreifer an die Lücke?
Gefährlich wird es überall dort, wo Node.js Brotli-Daten aus fremder Hand entpackt. In der Praxis gibt es drei typische Wege:
- Eingehende Requests: Express 5 und body-parser 2.x entpacken Request-Bodies mit
Content-Encoding: brautomatisch. Ein einfachernode:http-Server macht das nicht von selbst. - Ausgehende Requests:
fetch()entpackt Brotli-Responses automatisch. Ein präparierter oder gehackter Server kann Ihre Anwendung also über seine Antwort angreifen. Kritisch sind vor allem Webhooks, Link-Previews und alle Features, die URLs von Nutzern abrufen. - Direkter Aufruf: Ihr Code oder eine Library ruft
brotliDecompressodercreateBrotliDecompressausnode:zlibmit fremden Daten auf.
Den zweiten Punkt übersehen viele. Eine Firewall vor Ihrer App hilft nicht, wenn Ihr Server die schädliche Antwort selbst abholt.
Wie gefährlich ist das wirklich?
Der erste öffentliche Exploit lief nur gegen einen absichtlich geschwächten Test-Build. Kurz danach haben Security-Forscher aber Remote Code Execution gegen ein ganz normales Docker-Image mit Node.js 24.22.0 auf Linux arm64 gezeigt. Das klappt nicht bei jedem Versuch, ist aber nachweislich möglich.
Bis zum 22. Oktober waren keine echten Angriffe bekannt. Sobald ein Exploit öffentlich ist, dauert es erfahrungsgemäß aber nicht lange, bis er automatisiert eingesetzt wird.
So prüfen Sie Ihre Systeme
Node.js-Version auf Servern, CI-Runnern und in Containern:
node --version
docker run --rm <ihr-image> node --version
Nutzen Sie Express 5 oder body-parser 2.x?
npm ls express body-parser
Wird Brotli irgendwo direkt entpackt?
grep -rnE "brotliDecompress|createBrotliDecompress" --include=*.js --include=*.ts .
Schauen Sie sich außerdem an, wo Ihre Anwendung per fetch() Server anspricht, die nicht Ihnen gehören.
Was Sie jetzt tun sollten
- Node.js updaten auf 22.23.4, 24.22.1 oder 26.12.1 bzw. die neueste Patch-Version Ihrer Hauptversion.
- Docker-Images neu bauen und deployen. Images mit fest gepinnten Tags wie
node:24.22.0odernode:22.23.3-alpinebleiben verwundbar, bis Sie den Tag anheben. - Hosting-Anbieter prüfen. Managed-Plattformen ziehen neue Node.js-Versionen nicht immer sofort nach.
- Security-Hinweise Ihrer Linux-Distribution lesen, wenn Node.js aus einem Systempaket kommt.
- Mit den kritischen Diensten anfangen: alles, was komprimierte Requests annimmt oder externe URLs abruft.
- Alte Versionen ablösen. Node.js 20, 23 und 25 bekommen keinen Fix mehr.
Falls Sie nicht sofort updaten können
Einen offiziellen Workaround gibt es nicht. Als Notlösung können Sie Requests mit Content-Encoding: br am Reverse Proxy, Load Balancer oder per Middleware blocken. Das schützt aber nur vor eingehenden Requests. Brotli-Responses, die Ihre Anwendung selbst abruft, bleiben ein Risiko. Wirklich geschlossen ist die Lücke erst nach dem Update.
Chronologie
- Februar 2026: Fix im Brotli-Quellcode
- 21. Oktober 2026: Node.js 22.23.4, 24.22.1 und 26.12.1 erscheinen
- 22. Oktober 2026: Proof of Concept veröffentlicht, Remote Code Execution gegen Node.js 24.22.0 bestätigt
Fazit
Node2Shell zeigt gut, wie versteckt solche Lücken sein können. Der Fehler liegt weder in Ihrem Code noch in einem npm-Paket, sondern in einer Library, die Node.js selbst mitbringt. Ein normaler Dependency-Scan findet ihn deshalb nicht unbedingt. Prüfen Sie Ihre Node.js-Versionen und Images am besten noch heute und planen Sie den Umstieg weg von veralteten Versionen fest ein.
Sie wissen nicht genau, ob Ihre Anwendungen betroffen sind, oder brauchen Hilfe beim Update Ihrer Container und Pipelines? Melden Sie sich bei uns. Wir schauen uns Ihre Umgebung an und kümmern uns um das Update.
Quellen: Node.js: October 2026 Security Releases · NVD: CVE-2026-111497 · Aikido Security: Node2Shell
