Dostupné jsou opravy serverové JavaScriptové platformy Node.js 21.6.2, 20.11.1, 18.19.1, ve kterých bylo opraveno 8 zranitelností, z nichž 4 mají vysokou úroveň nebezpečí:
- CVE-2024-21892 — možnost podstrčení kódu, který vykonává privilegované operace, nepřihlášeným uživatelem, v pracovním procesu. Zranitelnost je způsobena chybou v implementaci výjimek, která umožňuje zpracovávat proměnné prostředí nastavené nepřihlášeným uživatelem v procesu s rozšířenými oprávněními. Výjimka měla být poskytována pouze pro oprávnění CAP_NET_BIND_SERVICE, ale kvůli chybě se používala i pro některá další oprávnění (capabilities).
- CVE-2024-22019 — odmítnutí služby přes vyčerpání dostupných zdrojů (zatížení CPU a spotřeba šířky pásma) při zpracování speciálně formátovaných chunked požadavků vestavěným HTTP serverem, což vede ke čtení neomezeného množství bajtů na jednom spojení.
- CVE-2024-21896 — překročení základního adresáře v cestách k souborům. Zranitelnost umožňuje obejít normalizaci cest k souborům pomocí path.resolve() v případě předání cesty pomocí třídy Buffer. Pro získání takové cesty po kontrole se vyvolává metoda Buffer.from(), ale v aplikaci může být používán volání Buffer.prototype.utf8Write, což vede k nahrazení obsahu ve fázi po vykonání path.resolve() a k vzniku zranitelnosti.
- CVE-2024-22017 — volání setuid() nezrušilo všechny privilegium. Konkrétně, setuid() neovlivňuje operace io_uring, používané v libuv, pokud byly inicializovány před voláním setuid().
- CVE-2023-46809 — zranitelnost v API privateDecrypt(), která odpouští použití Marvinova útoku pro dešifrování RSA na základě měření doby operací.
- CVE-2024-21891 — možnost obejití modelu přístupových práv při používání uživatelských handlerů pro normalizaci cest k souborům.
- CVE-2024-21890 — nesprávné zpracování masek v parametrech „—allow-fs-read“ a „—allow-fs-write“. Například „—allow-fs-read=/home/node/.ssh/*.pub“ povede k poskytnutí přístupu ke všemu obsahu „.ssh/“, a ne pouze k souborům s příponou „.pub“, protože maska „*“ je zpracována jako poslední prvek cesty.
- CVE-2024-22025 — denial of service due to resource exhaustion when decoding Brotli compressed data received via a fetch() call.
Additionally, it is worth noting the release of libuv 1.48.0, used in Node.js for multiplexing connections and asynchronous I/O processing. Besides Node.js, the library is also utilized by DNS servers BIND 9 and Knot DNS, HTTP server H2O, and the Lua framework Luvit. virtuálním stroji MoarVM, the Julia language, and the Python framework uvloop. The new version addresses a vulnerability (CVE-2024-24806) that manifests in projects using libuv, allowing SSRF (Server-side request forgery) attacks to gain access to internal APIs. The vulnerability arises from truncating the hostname by the function uv_getaddrinfo() to 256 characters before resolving the domain via getaddrinfo(), which may lead to identifying the wrong IP adres and bypassing checks. For example, services like MySpace that create subdomains in the form of «username.example.com» can be attacked by specifying a long username.
An update to the HTTP client undici 5.28.3 used in Node.js has also been released, which fixes a vulnerability (CVE-2024-24758) caused by the lack of clearing the Proxy-Authorization HTTP header during request redirections.
Zdroj: opennet.ru
