Luki w Node.js i libuv

Dostępne są korekcyjne wydania serwerowej platformy JavaScript Node.js 21.6.2, 20.11.1, 18.19.1, w których naprawiono 8 podatności, z których 4 otrzymało wysoki poziom zagrożenia:

  • CVE-2024-21892 — możliwość podmiany kodu przez nieuprzywilejowanego użytkownika, który odziedziczy uprzywilejowane uprawnienia, z którymi wykonywany jest proces. Podatność spowodowana jest błędem w realizacji wyjątku, który pozwalał na przetwarzanie zmiennych środowiskowych ustawionych przez nieuprzywilejowanego użytkownika w procesie z rozszerzonymi uprawnieniami. Wyjątek powinien być udzielany tylko dla uprawnień CAP_NET_BIND_SERVICE, ale z powodu błędu stosował się również do innych uprawnień (capabilities).
  • CVE-2024-22019 — awaria usługi poprzez wyczerpanie dostępnych zasobów (obciążenie CPU oraz zużycie przepustowości) podczas przetwarzania specjalnie sformatowanych zapytań chunked przez wbudowany serwer HTTP, prowadzące do odczytu nieograniczonej liczby bajtów w jednym połączeniu.
  • CVE-2024-21896 — wyjście poza podstawowy katalog w ścieżkach plików. Podatność pozwala na ominięcie normalizacji ścieżek plików za pomocą path.resolve() w przypadku przekazania ścieżki z użyciem klasy Buffer. Aby uzyskać taką ścieżkę po weryfikacji, wywoływana jest metoda Buffer.from(), ale w aplikacji może być użyte wywołanie Buffer.prototype.utf8Write, prowadzące do zastąpienia zawartości na etapie po wykonaniu path.resolve() i powstania podatności.
  • CVE-2024-22017 — wywołanie setuid() nie resetowało wszystkich uprawnień. W szczególności setuid() nie wpływa na operacje io_uring, używane w libuv, jeśli zostały zainicjalizowane przed wywołaniem setuid().
  • CVE-2023-46809 — podatność w API privateDecrypt(), umożliwiająca zastosowanie ataku Marvina do odszyfrowania RSA na podstawie pomiaru czasu operacji.
  • CVE-2024-21891 — możliwość ominięcia modelu uprawnień podczas korzystania z niestandardowych handlerów normalizacji ścieżek plików.
  • CVE-2024-21890 — nieprawidłowe przetwarzanie masek w parametrach „—allow-fs-read” i „—allow-fs-write”. Na przykład „—allow-fs-read=\/home\/node\/.ssh\/*.pub” prowadzi do zapewnienia dostępu do całej zawartości „.ssh\”, a nie tylko do plików z rozszerzeniem „.pub”, ponieważ maska „*” jest przetwarzana jako ostatni element ścieżki.
  • CVE-2024-22025 — atak typu denial of service poprzez wykorzystanie zasobów podczas dekodowania skompresowanych danych w formacie Brotli, otrzymanych poprzez wywołanie fetch().

Dodatkowo warto wspomnieć o wydaniu biblioteki libuv 1.48.0, używanej w Node.js do multiplikacji połączeń i asynchronicznego przetwarzania wejścia/wyjścia. Oprócz Node.js biblioteka jest również używana w serwerach DNS BIND 9 i Knot DNS, serwerze HTTP H2O, oraz w frameworku Lua Luvit. maszynie wirtualnej MoarVM, język Julia oraz framework Python uvloop. W nowej wersji naprawiono lukę (CVE-2024-24806), która objawia się w projektach korzystających z libuv, umożliwiając atak SSRF (Server-side request forgery) w celu uzyskania dostępu do wewnętrznego API. Luka wynikała z obcinania nazwy hosta przez funkcję uv_getaddrinfo() do 256 znaków na etapie przed rozwiązywaniem domeny przez funkcję getaddrinfo(), co może prowadzić do określenia niewłaściwego hosta i ominięcia weryfikacji. adresy IP Na przykład, usługi typu MySpace, tworzące subdomeny w postaci «username.example.com», mogą być atakowane poprzez wskazanie długiej nazwy użytkownika.

Ponadto, wydano aktualizację klienta HTTP undici 5.28.3 używanego w Node.js, w której usunięto lukę (CVE-2024-24758), spowodowaną brakiem czyszczenia nagłówka HTTP Proxy-Authorization podczas przekierowywania zapytań.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster