Уязвимости в Node.js и libuv

Налични са коригиращи издания на сървърната платформа JavaScript Node.js 21.6.2, 20.11.1, 18.19.1, в които са отстранени 8 уязвимости, от които 4 са с висок риск:

  • CVE-2024-21892 — възможност за включване на код от неприпознат потребител с разширени права, с които се изпълнява работния процес. Уязвимостта е причинена от грешка в управлението на изключения, позволяваща на неприпознат потребител да обработва променливи на околната среда по време на сесия с разширени права. Изключението трябваше да се предоставя само за правомощията CAP_NET_BIND_SERVICE, но поради грешката то се прилага и за някои други правомощия.
  • CVE-2024-22019 — отказ на услуга чрез изчерпване на наличните ресурси (натоварване на CPU и консумация на пропускателна способност) при обработка на специално подготвени chunked-запитвания от вграден HTTP-сървър, водещи до четене на неограничено количество байтове в едно съединение.
  • CVE-2024-21896 — излизане извън основната директория в файловите пътища. Уязвимостта позволява заобикаляне на нормализацията на файловите пътища чрез path.resolve() при предаване на път с използването на класа Buffer. За получаване на подобен път, след проверка, се извиква методът Buffer.from(), но в приложението може да се използва извикването на Buffer.prototype.utf8Write, което води до замяна на съдържанието след изпълнението на path.resolve() и предизвиква уязвимост.
  • CVE-2024-22017 — извикването на setuid() не нулира всички права. Конкретно, setuid() не влияе на операциите io_uring, използвани в libuv, ако те са инициализирани преди извикването на setuid().
  • CVE-2023-46809 — уязвимост в API privateDecrypt(), позволяваща извършването на Марвин атака за декриптиране на RSA базирано на измерване на времето на операциите.
  • CVE-2024-21891 — възможност за заобикаляне на модела за правата при използване на потребителски обработчици за нормализация на файловите пътища.
  • CVE-2024-21890 — неправилна обработка на маски в параметрите „—allow-fs-read“ и „—allow-fs-write“. Например, „—allow-fs-read=/home/node/.ssh/*.pub“ ще предостави достъп до цялото съдържание на „.ssh/“, а не само до файловете с разширение „.pub“, тъй като маската „*“ се обработва като последния елемент от пътя.
  • CVE-2024-22025 — отказ на обслужване чрез изразходване на ресурси при декодиране на компресирани данни в формат Brotli, получени чрез извикване на fetch().

Допълнително можете да споменете формироването на версията на библиотеката libuv 1.48.0, използвана в Node.js за мултиплексиране на връзки и асинхронна обработка на вход/изход. Освен в Node.js библиотеката се използва и на DNS сървърите BIND 9 и Knot DNS, HTTP сървъра H2O, Lua фреймворка Luvit, виртуална машина MoarVM, езика Julia и Python фреймворка uvloop. В новата версия е отстранена уязвимост (CVE-2024-24806), проявяваща се в проекти, използващи libuv, и позволяваща извършването на SSRF (Server-side request forgery) атака за получаване на достъп до вътрешния API. Уязвимостта възниква заради обрязването на името на хоста от функцията uv_getaddrinfo() до 256 символа на етапа преди резолвиране на домейн чрез функцията getaddrinfo(), което може да доведе до идентифицирането на неправилното IP адреси и заобикаляне на проверки. Например, услуги като MySpace, създаващи поддомейни от типа „username.example.com“, могат да бъдат атакувани чрез указване на дълго потребителско име.

Също така излезе обновление на HTTP клиента undici 5.28.3, използван в Node.js, в която е отстранена уязвимост (CVE-2024-24758), предизвикана от липсата на почистване на HTTP заглавката Proxy-Authorization при пренасочване на заявки.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster