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

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3252
Зарегистрирован: 20.08.2022

#

Уязвимости в Node.js и libuv
Дата публикации:Fri, 16 Feb 2024 20:14:40 +0300




Доступны корректирующие выпуски серверной 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 - отказ в обслуживании через исчерпание доступных ресурсов (нагрузка на CPU и расходование пропускной способности) при обработке встроенным HTTP-сервером
    специально оформленных chunked-запросов, приводящих к чтению неограниченное количества байтов в одном соединении.


    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", можно атаковать через указание длинного имени пользователя.




Также вышло обновление используемого в Node.js HTTP-клиента undici 5.28.3, в котором устранена уязвимость (CVE-2024-24758), вызванная отсутствием очистки HTTP-заголовка Proxy-Authorization при перенаправлении запросов.



Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=60612

Жизнь за Нер'зула!

Ответить