Node.js: Sicherheitsupdates beheben Codeschmuggel und ServerabstĂĽrze
Neben Problemen im Kern des Projekts aktualisiert das Node-Projekt auch einige externe Bibliotheken.
Die Javascript-Laufzeitumgebung Node.js behebt in einem Update einige Sicherheitslücken mit teilweise großem Schadenspotential. So finden sich in den möglichen Auswirkungen nicht nur die Ausweitung von Privilegien und unbefugte Code-Ausführung, sondern auch Möglichkeiten für Angreifer, Node-basierte Dienste zum Absturz zu bringen.
Am gefährlichsten ist ein Bug bei der Verarbeitung und Berücksichtigung von Linux Capabilities wie CAP_SYS_ADMIN. Ein Node-Prozess, der mit erweiterten Berechtigungen läuft, verarbeitet diese nicht korrekt, was Angreifern erlaubt, eigenen Code in diesen Prozess einzuschleusen. Die Lücke trägt die Kennung CVE-2024-21892 und die Risikostufe "hoch".
Diese teilt sie sich mit CVE-2024-22019, einer Denial-of-Service-Lücke über präparierte HTTP-Pakete mit "Chunked"-Encoding, die zu Prozessor- und Netzwerküberlastung führen kann. Auch die inkorrekte Behandlung von Dateipfaden (CVE-2024-21896) und irrtümlich nicht abgegebene Privilegien trotz setuid()-Aufruf (CVE-2024-22017) werden vom Node-Team als hohes Risiko angesehen.
MIttelschwere SicherheitslĂĽcken behoben
Drei weitere SicherheitslĂĽcken sind jeweils mit mittlerem Risiko eingestuft:
- Ein kryptographischer Angriff namens "Marvin Attack" stellt ein Risiko fĂĽr die verschlĂĽsselte Kommunikation, zum Beispiel mit Node-basierten APIs, dar (CVE-2023-46809),
- das derzeit noch experimentelle Berechtigungsmodell in Node 20 und 21 kann durch geschickte Pfad-Manipulation ausgetrickst werden (CVE-2024-21891) und
- die Dokumentation zur Wildcard-Verarbeitung bei Kommandozeilenparametern wie
--allow-fs-read=/home/node/.ssh/*.pub
verschweigt, dass in diesem Beispiel alle Zeichen nach dem Asterisk * ignoriert und daher zu viele Dateien zum Lesen freigegeben wĂĽrden (CVE-2024-21890).
Alle genannten Probleme bestehen in den Versionen 20.x und 21.x, teilweise jedoch nur bei Verwendung des experimentellen Berechtigungsmodells (CVE-2024-21890 und CVE-2024-21891). Die ebenfalls noch durch das Node-Projekt unterstĂĽtzte Version 18 leidet zudem noch unter CVE-2024-21891, CVE-2024-22019 und CVE-2023-46809.
Zusätzlich liefern die aktualisierte Versionen von Node.js neue Versionen von libuv, undici und OpenSSL mit, die jeweils eigene Sicherheitslücken beheben. Die Sicherheitsflicken gibt es in Version 20.11.1, 21.6.2 und 18.9.1. Die 21. Ausgabe der freien JavaScript-Runtime war im vergangenen Oktober erschienen, gleichzeitig erklärten die Entwickler die Vorgängerausgabe 20 zur Version mit Langzeitsupport (LTS).
(cku)