Проект Node.js выпустил экстренное обновление безопасности для своей ветки долгосрочной поддержки (Long-Term Support, LTS). Новый выпуск версии 20.20.2 "Iron" помечен как релиз, закрывающий критические уязвимости. Этот срочный патч устраняет семь различных проблем, затрагивающих обработку ошибок TLS, управление потоком HTTP/2, криптографические временные характеристики и модель разрешений. Несколько из этих проблем могут быть использованы удаленно без аутентификации, что представляет непосредственную угрозу для непропатченных серверов, особенно в публичных сетях. Для бизнеса, чья инфраструктура построена на Node.js, это означает необходимость немедленного реагирования, так как некоторые уязвимости приводят к аварийному завершению работы процессов или утечке ресурсов.
Детали уязвимостей
Наиболее серьёзной исправленной проблемой стала уязвимость высокой степени опасности CVE-2026-21637 в обработке ошибок TLS. Она является следствием неполного исправления в более ранних версиях. Проблема оставляет вызовы функции обратного вызова SNI (указание имени сервера) незащищенными от синхронных исключений. Если TLS-клиент отправляет неожиданное значение имени сервера, возникающее исключение обходит стандартные обработчики ошибок TLS. Это приводит к неперехваченному исключению, которое немедленно и полностью завершает процесс Node.js. Проще говоря, удаленный злоумышленник может отправить специально сформированный запрос к серверу, использующему TLS, и вызвать его аварийную остановку, что равносильно классической атаке на отказ в обслуживании (Denial-of-Service). Внесённое исправление безопасно оборачивает вызовы SNICallback в блок try/catch, предотвращая возможность удалённого завершения процесса.
Другой критический патч касается уязвимости CVE-2026-21714 средней степени опасности, связанной с ошибкой управления потоком в HTTP/2 и необработанными кодами ошибок библиотеки nghttp2. Вредоносные клиенты могут отправлять искаженные кадры WINDOW_UPDATE с идентификатором потока 0, чтобы спровоцировать утечку памяти. При повторных соединениях это истощает ресурсы сервера и приводит к состоянию отказа в обслуживании. Между тем, разработчики также устранили CVE-2026-21717 - слабость во внутреннем механизме хеширования строк движка V8. Злоумышленники могут использовать это, вызывая коллизии индексов массивов, обычно через манипулированные входные данные для функции JSON.parse(). Это создает предсказуемые коллизии хешей, которые значительно снижают производительность процесса, реализуя классическую атаку HashDoS, направленную на исчерпание вычислительных ресурсов.
В обновлении также устранена уязвимость CVE-2026-21713 средней степени опасности, представляющая собой криптографический временной оракул при верификации HMAC в Web Cryptography API. Ранее система использовала непостоянное по времени сравнение памяти, которое раскрывало информацию, пропорциональную количеству совпадающих байт. Теоретически атакующие, используя высокоточные измерения времени отклика, могли делать выводы о значениях HMAC. Разработчики решили эту проблему, внедрив уже существующий примитив, безопасный по времени выполнения. Кроме того, были закрыты две уязвимости низкой степени опасности, связанные с обходом модели разрешений - CVE-2026-21715 и CVE-2026-21716. Эти недостатки позволяли ограниченному коду обходить правила файловой системы для раскрытия факта существования файлов и разрешения путей символических ссылок за пределами разрешённых каталогов. Обновление также нейтрализует вектор загрязнения прототипа через HTTP-заголовки средней степени опасности, отслеживаемый как CVE-2026-21710.
Последствия этих уязвимостей для бизнеса и инфраструктуры варьируются от полной недоступности критических сервисов из-за аварийного завершения работы (CVE-2026-21637) до постепенной деградации производительности и исчерпания памяти (CVE-2026-21714, CVE-2026-21717). Хотя риски, связанные с криптографическим оракулом (CVE-2026-21713), требуют сложных условий для эксплуатации, они подрывают доверие к криптографическим примитивам платформы. Уязвимости в модели разрешений, несмотря на низкий рейтинг, могут использоваться в цепочках атак для обхода изоляции приложений и разведки файловой системы.
Системным администраторам и разработчикам необходимо немедленно обновить свои среды. Поскольку для эксплуатации CVE-2026-21637 не требуется аутентификация и она вызывает прямое завершение процесса, публичные TLS-серверы сталкиваются с неминуемыми рисками, и это обновление должно рассматриваться как критический приоритет. Пользователям следует обновиться до пропатченных версий: v20.20.2, v22.22.2, v24.14.1 или v25.8.2. Установщики и бинарные файлы доступны для всех основных операционных систем через официальные каналы распространения Node.js. В текущем ландшафте угроз, где атаки на доступность и целостность приложений стали обыденностью, оперативное применение таких обновлений является базовой мерой гигиены информационной безопасности для любой команды разработки или эксплуатации.
Ссылки
- https://nodejs.org/en/blog/release/v20.20.2/
- https://nodejs.org/en/blog/release/v22.22.2/
- https://nodejs.org/en/blog/release/v24.14.1/
- https://nodejs.org/en/blog/release/v25.8.2/