Node.js исправил опасные ошибки DNS, TLS и Brotli: какие версии обновить
Вышли Node.js 22.23.4, 24.22.1 и 26.12.1. Исправления затрагивают проверку адресов, доверие к сертификатам и обработку повреждённых сжатых данных.

21 октября проект Node.js выпустил обновления безопасности 22.23.4, 24.22.1 и 26.12.1. В них закрыт ряд уязвимостей, включая несколько с высокой серьёзностью. Обновление касается не только приложений с открытым входящим HTTP: ошибки есть и в функциях, которые клиентское приложение использует для DNS, HTTPS и распаковки данных.
Одна из проблем — обработка нулевого байта в имени хоста функциями dns.resolve. Имя после этого символа обрезалось, поэтому приложение могло проверить один адрес по разрешённому списку, а DNS-запрос отправить для другого. В TLS обнаружились расхождения при разборе нестандартной записи IPv4: например, адрес с ведущим нулём мог по-разному интерпретироваться проверкой сертификата и системным резолвером. Отдельная ошибка декодера Brotli позволяла повреждённому потоку выйти за границы внутреннего буфера; возможные последствия включают падение процесса и выполнение кода.
Что проверить после обновления

Сначала проверьте версию внутри готового контейнера командой node --version: запись «Node 24» в настройках проекта не показывает установленный патч. Затем прогоните обращения к внешним HTTPS-сервисам, проверку разрешённых адресов и обработку сжатых ответов. Полезно добавить отрицательные сценарии с неоднозначным именем хоста и повреждёнными данными, а в отчёте фиксировать фактический адрес соединения и решение проверки сертификата.
Условия отличаются по уязвимостям. Например, проблема с полноширинными цифрами в IP затрагивала ветки 24 и 26, тогда как несколько других исправлений нужны всем трём веткам. Приложение, которое не распаковывает недоверенный Brotli, имеет другой путь риска, чем прокси с такой функцией. Список CVE помогает определить нужные проверки, но не заменяет обновление используемой ветки.


