undici включает в себя клиент WebSocket, чья очистка ограничения размера permessage-deflate удаляет все прослушиватели из внутреннего потока zlib inflate, включая его прослушиватель ошибок, в то время как этот поток все еще может генерировать. Когда удаленный узел отправляет сжатую полезную нагрузку, которая превышает встроенный предел распакованной полезной нагрузки в 128 МБ и затем содержит неверный байт DEFLATE, поток инфляции выдает ошибку данных без подключенного прослушивателя, которую Node.js трактует как фатальную необработанную ошибку и завершает весь процесс. Эксплуатация является удаленной и неаутентифицированной, не требует ошибок приложения и является асимметричной, поскольку примерно 130 КБ в проводе расширяются сверх предела и приводят к сбою процесса, а повторное подключение может повторить сбой.
Это касается версий undici с 6.25.0 по 6.28.1, с 7.28.0 по 7.29.1 и с 8.1.0 по 8.10.2. Пользователям следует обновиться до версии undici 6.28.1, 7.29.1 или 8.10.2.
Показать оригинальное описание (EN)
undici bundles a WebSocket client whose permessage-deflate size-limit cleanup removes all listeners from the internal zlib inflate stream, including its error listener, while that stream can still emit. When a remote peer sends a compressed payload that crosses the built-in 128 MiB decompressed-payload limit and then contains a malformed DEFLATE byte, the inflate stream emits a data error with no listener attached, which Node.js treats as a fatal unhandled error and terminates the entire process. Exploitation is remote and unauthenticated, requires no application mistake, and is asymmetric, since roughly 130 KB on the wire expands past the limit and crashes the process, and reconnecting can repeat the crash. This affects undici versions from 6.25.0 up to 6.28.1, from 7.28.0 up to 7.29.1, and from 8.1.0 up to 8.10.2. Users should upgrade to undici 6.28.1, 7.29.1, or 8.10.2.
Характеристики атаки
Последствия
Строка CVSS v3.1