22. Okt. 2026

Node2Shell: Warum Sie Node.js jetzt updaten sollten

Eine Schwachstelle im Brotli-Decoder von Node.js (CVE-2026-111497) kann bis zur Remote Code Execution führen. Wir zeigen, wer betroffen ist und was Sie tun sollten.

Node2Shell

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:

  1. Eingehende Requests: Express 5 und body-parser 2.x entpacken Request-Bodies mit Content-Encoding: br automatisch. Ein einfacher node:http-Server macht das nicht von selbst.
  2. 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.
  3. Direkter Aufruf: Ihr Code oder eine Library ruft brotliDecompress oder createBrotliDecompress aus node:zlib mit 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

  1. Node.js updaten auf 22.23.4, 24.22.1 oder 26.12.1 bzw. die neueste Patch-Version Ihrer Hauptversion.
  2. Docker-Images neu bauen und deployen. Images mit fest gepinnten Tags wie node:24.22.0 oder node:22.23.3-alpine bleiben verwundbar, bis Sie den Tag anheben.
  3. Hosting-Anbieter prüfen. Managed-Plattformen ziehen neue Node.js-Versionen nicht immer sofort nach.
  4. Security-Hinweise Ihrer Linux-Distribution lesen, wenn Node.js aus einem Systempaket kommt.
  5. Mit den kritischen Diensten anfangen: alles, was komprimierte Requests annimmt oder externe URLs abruft.
  6. 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

SecurityNodeJS