Luki w Node.js i libuv

Dostępne są wersje naprawcze serwerowej platformy JavaScript Node.js 21.6.2, 20.11.1, 18.19.1, które naprawiają 8 luk, z których 4 mają przypisany wysoki poziom ważności:

  • CVE-2024-21892 - Możliwość podmiany kodu przez użytkownika bez uprawnień, który dziedziczy podwyższone uprawnienia, z którymi działa proces roboczy. Luka jest spowodowana błędem w implementacji wyjątku, który pozwala procesowi z podwyższonymi uprawnieniami na przetwarzanie zmiennych środowiskowych ustawionych przez użytkownika bez uprawnień. Wyjątek miał być przewidziany tylko dla możliwości CAP_NET_BIND_SERVICE, ale z powodu błędu został zastosowany również do kilku innych możliwości.
  • CVE-2024-22019 – Odmowa usługi w wyniku wyczerpania dostępnych zasobów (obciążenie procesora i zużycie przepustowości), gdy wbudowany serwer HTTP przetwarza specjalnie spreparowane żądania podzielone na fragmenty, co prowadzi do odczytania nieograniczonej liczby bajtów podczas jednego połączenia.
  • CVE-2024-21896 - Przechodzenie przez katalog bazowy w ścieżkach plików - Luka umożliwia ominięcie normalizacji ścieżki pliku za pomocą path.resolve() podczas przekazywania ścieżki za pomocą klasy Buffer. Aby uzyskać taką ścieżkę po weryfikacji, wywoływana jest metoda Buffer.from(), ale aplikacja może użyć wywołania Buffer.prototype.utf8Write, co prowadzi do zastąpienia zawartości na etapie po wykonaniu path.resolve() i wystąpieniu luki.
  • CVE-2024-22017 - Wywołanie setuid() nie spowodowało usunięcia wszystkich uprawnień. W szczególności setuid() nie wpływa na operacje io_uring używane w libuv, jeśli zostały zainicjowane przed wywołaniem setuid().
  • CVE-2023-46809 – Luka w zabezpieczeniach interfejsu API privateDecrypt() umożliwia przeprowadzenie ataku Marvin w celu odszyfrowania RSA na podstawie pomiaru czasu operacji.
  • CVE-2024-21891 – Możliwość ominięcia modelu dostępu podczas korzystania z niestandardowych procedur obsługi 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” spowoduje dostęp 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 – Odmowa usługi z powodu wyczerpania zasobów podczas dekodowania skompresowanych danych Brotli uzyskanych za pomocą wywołania fetch().

Dodatkowo warto odnotować wydanie libuv 1.48.0, biblioteki wykorzystywanej w Node.js do multipleksowania połączeń i asynchronicznego przetwarzania wejścia/wyjścia. Oprócz Node.js, biblioteka ta jest również wykorzystywana w serwerach DNS BIND 9 i Knot DNS, serwerze HTTP H2O oraz frameworku Luvit Lua. maszyna wirtualna MoarVM, język Julia i framework Pythona uvloop. Nowa wersja naprawia lukę w zabezpieczeniach (CVE-2024-24806), która wpływa na projekty korzystające z biblioteki libuv i umożliwia atak SSRF (server-side request forgery) w celu uzyskania dostępu do wewnętrznego interfejsu API. Luka powstaje, ponieważ funkcja uv_getaddrinfo() skraca nazwę hosta do 256 znaków przed rozwiązaniem domeny za pomocą funkcji getaddrinfo(), co może prowadzić do ustalenia nieprawidłowej nazwy hosta. Adresy IP i omijanie kontroli bezpieczeństwa. Na przykład serwisy takie jak MySpace, które tworzą subdomeny takie jak „nazwa_użytkownika.przyklad.com”, mogą paść ofiarą ataku poprzez podanie długiej nazwy użytkownika.

Wydano również aktualizację klienta HTTP undici używanego w Node.js, 5.28.3, która naprawia lukę w zabezpieczeniach (CVE-2024-24758) spowodowaną brakiem czyszczenia nagłówka HTTP Proxy-Authorization podczas przekierowywania żądań.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster