Es sind korrigierte Versionen der Server-JavaScript-Plattform Node.js 21.6.2, 20.11.1, 18.19.1 verfĂŒgbar, in denen 8 SicherheitsanfĂ€lligkeiten behoben wurden, von denen 4 als hochgefĂ€hrlich eingestuft sind:
- CVE-2024-21892 â Die Möglichkeit fĂŒr nicht privilegierte Benutzer, Code einzuschleusen, der erweiterte Berechtigungen erbt, mit denen der Arbeitsablauf durchgefĂŒhrt wird. Die Schwachstelle wird durch einen Fehler in der Implementierung einer Ausnahme verursacht, die es erlaubt, Umgebungsvariablen, die von nicht privilegierten Benutzern festgelegt wurden, im Kontext erweiterter Berechtigungen zu verarbeiten. Die Ausnahme hĂ€tte nur fĂŒr die Berechtigung CAP_NET_BIND_SERVICE erteilt werden sollen, wurde aber aufgrund eines Fehlers auch auf einige andere Berechtigungen angewendet.
- CVE-2024-22019 â Denial of Service durch Erschöpfung der verfĂŒgbaren Ressourcen (CPU-Last und Bandbreitennutzung) bei der Verarbeitung speziell gestalteter chunked-Anfragen durch den eingebauten HTTP-Server, was zu einer unbegrenzten Anzahl von Byte-Lesungen in einer Verbindung fĂŒhrt.
- CVE-2024-21896 â Ăbergreifen auf das Basisverzeichnis in Datei-Pfaden. Die Schwachstelle ermöglicht es, die Normalisierung von Datei-Pfaden mittels path.resolve() zu umgehen, wenn ein Pfad mit der Buffer-Klasse ĂŒbergeben wird. Um einen solchen Pfad zu erhalten, wird nach der ĂberprĂŒfung die Methode Buffer.from() aufgerufen, im Anwendungskontext kann jedoch die Methode Buffer.prototype.utf8Write verwendet werden, was zu einer Ersetzung des Inhalts nach der AusfĂŒhrung von path.resolve() und zur Entstehung der Schwachstelle fĂŒhrt.
- CVE-2024-22017 â Der Aufruf von setuid() setzte nicht alle Berechtigungen zurĂŒck. Insbesondere hat setuid() keinen Einfluss auf io_uring-Operationen, die in libuv verwendet werden, wenn sie vor dem Aufruf von setuid() initialisiert wurden.
- CVE-2023-46809 â Eine Schwachstelle in der API privateDecrypt(), die einen Marvin-Angriff zur EntschlĂŒsselung von RSA basierend auf der Zeitmessung von Operationen zulĂ€sst.
- CVE-2024-21891 â Die Möglichkeit, das Berechtigungsmodell zu umgehen, bei der Verwendung von benutzerdefinierten Handlern zur Normalisierung von Datei-Pfaden.
- CVE-2024-21890 â Falsche Behandlung von Masken in den Parametern ââallow-fs-readâ und ââallow-fs-writeâ. Zum Beispiel wird ââallow-fs-read=\/home\/node\/.ssh\/*.pubâ den Zugriff auf den gesamten Inhalt von â.ssh\/â gewĂ€hren, und nicht nur auf Dateien mit der Endung â.pubâ, da die Maske â*â als letztes Element des Pfades behandelt wird.
- CVE-2024-22025 â Denial of Service durch Ressourcenausnutzung beim Dekodieren von komprimierten Brotli-Daten, die ĂŒber den fetch()-Aufruf empfangen wurden.
ZusĂ€tzlich kann die Veröffentlichung der Bibliothek libuv 1.48.0 erwĂ€hnt werden, die in Node.js fĂŒr die Multiplexierung von Verbindungen und die asynchrone Verarbeitung von Ein-/Ausgaben verwendet wird. Neben Node.js wird die Bibliothek auch in den DNS-Servern BIND 9 und Knot DNS, dem HTTP-Server H2O sowie im Lua-Framework Luvit verwendet. virtuellen Maschine MoarVM, die Programmiersprache Julia und das Python-Framework uvloop profitieren ebenfalls von dieser neuen Version, die eine Schwachstelle (CVE-2024-24806) behebt, die in Projekten auftritt, die libuv verwenden, und eine SSRF-Attacke (Server-side Request Forgery) ermöglicht, um Zugriff auf die interne API zu erlangen. Die Schwachstelle entstand durch das AbkĂŒrzen des Hostnamens durch die Funktion uv_getaddrinfo() auf 256 Zeichen, bevor die Domain durch die Funktion getaddrinfo() aufgelöst wird, was zur falschen Bestimmung fĂŒhren kann. IP-Adressen und zur Umgehung von PrĂŒfungen. Dienste wie MySpace, die Subdomains in der Form 'username.example.com' erstellen, könnten durch die Angabe eines langen Benutzernamens angegriffen werden.
AuĂerdem wurde ein Update des in Node.js verwendeten HTTP-Clients undici 5.28.3 veröffentlicht, das eine Schwachstelle (CVE-2024-24758) behebt, die durch fehlende Bereinigung des HTTP-Headers Proxy-Authorization bei der Umleitung von Anfragen verursacht wurde.
Quelle: opennet.ru
