Sicherheit & Datenschutz

Node.js behebt kritische HTTP/2-Abstürze und TLS-Speicherlecks

Node.js hat Sicherheitsupdates für die Versionen 22, 24 und 26 veröffentlicht, um 16 Schwachstellen zu beheben. Dazu gehören Fehler mit hohem Schweregrad, die Remote-Abstürze und Datenlecks in HTTP/2- und HTTPS-Servern ermöglichen.

Illustration eines Servers, der durch einen Schild gegen Datenlecks geschützt ist
Für diesen Artikel erstellte Illustration

Automatisch aus dem englischen Original übersetzt.

Das Node.js-Projekt hat Notfall-Sicherheitspatches für seine unterstützten Runtime-Linien veröffentlicht, um sechzehn Schwachstellen zu beheben. Einige davon stellen unmittelbare Risiken für Webserver dar. Das Update umfasst die Versionen 22.23.5, 24.22.3 und 26.13.1 und behebt Fehler, die es nicht authentifizierten Angreifern ermöglichen, Dienste zum Absturz zu bringen oder sensible Speicherinhalte preiszugeben. Diese Korrekturen sind für jede Organisation entscheidend, die selbst gehostete Anwendungen auf diesen spezifischen Release-Zweigen betreibt.

Was passiert ist

Die schwerwiegendsten Probleme betreffen die Implementierungen von HTTP/2 und HTTPS im Node.js-Kern. Ein Fehler, der als CVE-2026-123863 verfolgt wird, ermöglicht es einem Remote-Client, einen HTTP/2-Server allein dadurch zum Absturz zu bringen, dass er eine Anfrage sendet, bei der der Server antwortet, bevor der Anfragekörper vollständig empfangen wurde. Dieses Verhalten wird als typisch für viele Standardkonfigurationen beschrieben, was eine breite Palette von Bereitstellungen anfällig für Denial-of-Service-Angriffe über verschlüsselte sowie Klartextverbindungen macht.

Eine weitere kritische Schwachstelle, CVE-2026-123866, ermöglicht es einem Client, ein Speicherleck auszulösen, das Daten aus anderen aktiven Verbindungen offenlegt. In einigen Szenarien kann dies Antworten einschließen, die für andere Benutzer bestimmt waren. Ein dritter Bug mit hohem Schweregrad, CVE-2026-123864, betrifft speziell HTTPS-Server. Er erlaubt es einem nicht authentifizierten Angreifer, den Serverspeicher zu lesen, wodurch potenziell TLS-private Schlüssel und Anfragedaten anderer Benutzer offengelegt werden könnten, sofern der Anwendungscode bestimmte Antwortmethoden in einer bestimmten Reihenfolge aufruft.

Die Sicherheitsempfehlung listet keine Workarounds für diese Probleme auf und stellt fest, dass das Aktualisieren auf die behobenen Versionen der einzige Weg zur Behebung ist. Server, die End-of-Life-Versionen wie 20.x und 25.x ausführen, erhalten keine Patches und bleiben dauerhaft gegen diese Exploits verwundbar. Das Projekt meldete zum Zeitpunkt der Veröffentlichung keine aktive Ausnutzung in freier Wildbahn und gab auch nicht an, ob kompromittierte Server ihre TLS-Schlüssel nach dem Patching rotieren müssen.

Wichtige Details

  • Behobene Versionen sind 22.23.5, 24.22.3 und 26.13.1; alle drei unterstützten Linien sind betroffen.
  • CVE-2026-123863 ermöglicht es nicht authentifizierten Clients, HTTP/2-Server durch verfrühte Antworten zum Absturz zu bringen.
  • CVE-2026-123864 erlaubt das Lesen von TLS-privaten Schlüsseln und anderen Verbindungsdaten aus dem HTTPS-Serverspeicher.
  • End-of-Life-Releases wie Node.js 20.x und 25.x erhalten keine Fixes und bleiben verwundbar.
  • Fünf der Schwachstellen wurden von Chris Rohlf in Zusammenarbeit mit Anthropic Research gemeldet.
  • Die Empfehlung weist ausdrücklich darauf hin, dass es keine bekannten Workarounds gibt, außer das Runtime-System zu aktualisieren.

Hintergrund

Node.js ist eine JavaScript-Runtime, die häufig für den Aufbau skalierbarer Netzwerkanwendungen verwendet wird. Ihre integrierten HTTP/2- und HTTPS-Module verarbeiten Low-Level-Netzwerkprotokolle, einschließlich TLS-Verschlüsselung und multiplexed Streams. Wenn Schwachstellen in diesen Kernmodulen existieren, wirken sie sich auf jede Anwendung aus, die sie nutzt, unabhängig vom höherstufigen Framework wie Express oder Fastify. Dies unterscheidet sich von applikationsseitigen Bugs, die Entwickler oft in ihrem eigenen Code patchen können. Kernschwachstellen erfordern, dass man auf neue Binärdateien oder Quellcode-Releases der Runtime-Maintainer wartet.

HTTP/2 verbessert die Leistung, indem es mehrere Anfragen über eine einzelne Verbindung zulässt, führt aber zu komplexem State-Management für Streams und Header. Bugs in diesem Bereich führen oft zu Ressourcenerschöpfung oder Speicherkorruption, da der Server den Zustand vieler gleichzeitiger Interaktionen verfolgen muss. Ebenso beinhaltet die TLS-Verwaltung das Management kryptografischer Schlüssel und Sitzungsdaten im Speicher. Wenn ein Fehler das Lesen außerhalb des vorgesehenen Speicherbuffers ermöglicht, können Angreifer Geheimnisse extrahieren, die eigentlich durch die Verschlüsselungsschicht geschützt sein sollten.

Warum es wichtig ist

Für Teams, die selbst gehostete Software betreiben, stellen diese Schwachstellen eine direkte Bedrohung für Verfügbarkeit und Vertraulichkeit dar. Ein Absturz-Fehler bedeutet, dass ein Angreifer mit minimalem Aufwand Ihre API oder Weboberfläche lahmlegen kann, was zu Ausfallzeiten führt, die Benutzer und Umsatz beeinträchtigen. Da die Trigger-Bedingung für den Absturz in Standardsetups üblich ist, sind viele Dienste möglicherweise exponiert, ohne dass benutzerdefinierte Konfigurationsänderungen vorgenommen wurden. Dies macht zeitnahes Patching für die Aufrechterhaltung der Dienstzuverlässigkeit unerlässlich.

Die Probleme mit dem Speicherleck sind für sicherheitsbewusste Organisationen noch besorgniserregender. Wenn ein Angreifer TLS-private Schlüssel lesen kann, könnte er potenziell vergangenen oder zukünftigen Traffic entschlüsseln, wenn er auch Netzwerkpackets abfängt. Das Leaken von Anfragedaten anderer Benutzer verstößt gegen Privatsphäre-Erwartungen und kann Compliance-Anforderungen wie GDPR oder HIPAA verletzen. Da diese Fehler in der Runtime selbst liegen, können applikationsseitige Firewalls oder Eingabevalidierungen das Risiko möglicherweise nicht vollständig mindern, sodass der zugrunde liegende Serverprozess exponiert bleibt.

Darüber hinaus zwingt das Fehlen von Fixes für End-of-Life-Versionen Teams, die noch Node.js 20 oder 25 nutzen, zu einer schwierigen Entscheidung. Sie müssen entweder eine dringende Migration zu einer unterstützten Version durchführen oder das Risiko eingehen, verwundbare Infrastruktur zu betreiben. Dies unterstreicht die operative Belastung, Runtimes aktuell zu halten, da verzögerte Upgrades zu Situationen führen können, in denen kein Patch verfügbar ist, wenn ein kritischer Fehler entdeckt wird.

Was Sie tun können

  • Identifizieren Sie alle Server, die Node.js 22, 24 oder 26 ausführen, und planen Sie ein sofortiges Upgrade auf die behobenen Versionen.
  • Prüfen Sie, ob Dienste auf End-of-Life-Versionen wie 20.x oder 25.x laufen, und priorisieren Sie deren Migration.
  • Überprüfen Sie Anwendungslogs auf ungewöhnliche Abstürze oder zurückgesetzte Verbindungen, die auf versuchte Ausnutzungen hinweisen könnten.
  • Erwägen Sie die Rotation von TLS-privaten Schlüsseln und Zertifikaten, wenn Sie vermuten, dass ein Server gegenüber CVE-2026-123864 verwundbar war.
  • Testen Sie Ihre Anwendung gründlich nach dem Upgrade, da Minor-Version-Upgrades manchmal Breaking Changes einführen können.
  • Überwachen Sie den Node.js-Sicherheitskanal auf weitere Empfehlungen, insbesondere bezüglich der Notwendigkeit einer Schlüsselrotation.

Weitere News

Alle News