Достъпни са коригиращите версии на сървърната JavaScript платформа Node.js 21.6.2, 20.11.1, 18.19.1, в които са отстранени 8 уязвимости, от които 4 са с висок риск:
- CVE-2024-21892 — възможност за инжектиране на код от непривилегирован потребител, наследяващ разширени привилегии, с които се изпълнява работният процес. Уязвимостта е причинена от грешка в реализирането на изключение, позволяващо обработката на променливи среда, зададени от непривилегирован потребител по време на процеса с разширени привилегии. Изключението трябваше да се предоставя само за правомощията CAP_NET_BIND_SERVICE, но поради грешка се прилагаше и към други правомощия (capabilities).
- CVE-2024-22019 — отказ в обслужване чрез изчерпване на наличните ресурси (натоварване на процесора и потребление на пропускателна способност) при обработка на специално форматирани 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(), позволяваща прилагането на атака Marvin за декриптиране на 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-клиента, използван в Node.js, undici 5.28.3, в която е отстранена уязвимост (CVE-2024-24758), причинена от отсъствието на почистване на HTTP-заглавката Proxy-Authorization при пренасочване на заявки.
Източник: opennet.ru
