CVE-2026-2229

HIGH CVSS 3.1: 7,5 EPSS 0.11%
Обновлено 13 марта 2026
ImpactThe
Параметр Значение
CVSS 7,5 (HIGH)
Тип уязвимости CWE-248 (Необработанное исключение), CWE-1284
Поставщик ImpactThe
Публичный эксплойт Нет

ВлияниеКлиент undici WebSocket уязвим для атаки типа «отказ в обслуживании» из-за неправильной проверки параметра server_max_window_bits в расширении permessage-deflate. Когда клиент WebSocket подключается к серверу, он автоматически объявляет о поддержке сжатия permessage-deflate. Вредоносный сервер может ответить значением server_max_window_bits, выходящим за пределы диапазона (за пределами допустимого диапазона zlib 8–15).

Когда сервер впоследствии отправляет сжатый кадр, клиент пытается создать экземпляр zlib InflateRaw с недопустимым значением windowBits, вызывая синхронное исключение RangeError, которое не перехватывается, что приводит к немедленному завершению процесса. Уязвимость существует потому, что: * Функция isValidClientWindowBits() проверяет только то, что значение содержит цифры ASCII, а не то, что оно попадает в допустимый диапазон 8–15. * Вызов createInflateRaw() не заключен в блок try-catch. * Результирующее исключение распространяется вверх по стеку вызовов и приводит к сбою процесса Node.js.

Показать оригинальное описание (EN)

ImpactThe undici WebSocket client is vulnerable to a denial-of-service attack due to improper validation of the server_max_window_bits parameter in the permessage-deflate extension. When a WebSocket client connects to a server, it automatically advertises support for permessage-deflate compression. A malicious server can respond with an out-of-range server_max_window_bits value (outside zlib's valid range of 8-15). When the server subsequently sends a compressed frame, the client attempts to create a zlib InflateRaw instance with the invalid windowBits value, causing a synchronous RangeError exception that is not caught, resulting in immediate process termination. The vulnerability exists because: * The isValidClientWindowBits() function only validates that the value contains ASCII digits, not that it falls within the valid range 8-15 * The createInflateRaw() call is not wrapped in a try-catch block * The resulting exception propagates up through the call stack and crashes the Node.js process

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Нет
Нет модификации данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1