Node.js экстренно закрывает критические уязвимости в системе безопасности

vulnerability

Команда разработчиков Node.js выпустила экстренные обновления безопасности для всех активных веток проекта. Патчи затрагивают версии 20.x, 22.x, 24.x и 25.x, устраняя в общей сложности восемь уязвимостей. Среди них три имеют высокий уровень опасности, четыре - средний и одна - низкий. Эксперты настоятельно рекомендуют администраторам и разработчикам немедленно обновить свои среды выполнения Node.js во избежание потенциальных атак.

Детали уязвимости

Центральным элементом январского патча является устранение критической уязвимости, получившей идентификатор CVE-2025-55131. Проблема заключается в состоянии гонки, основанном на таймаутах, в логике выделения буферов. Когда модуль "vm" используется с установленными таймаутами, буферы, созданные через "Buffer.alloc", и экземпляры TypedArray, такие как "Uint8Array", могут содержать неинициализированную память. Следовательно, это может привести к утечке конфиденциальных данных внутри процесса, например, токенов аутентификации или паролей. Хотя для эксплуатации обычно требуется точное временное совпадение или выполнение кода внутри процесса, уязвимость становится доступной для удалённого использования, если недоверенные входные данные влияют на рабочую нагрузку и таймауты.

Вторая высокоуровневая уязвимость, CVE-2025-55130, позволяет обойти ограничения модели разрешений Node.js, а именно флаги "-allow-fs-read" и "-allow-fs-write". Злоумышленник может достичь этого, используя специально созданные относительные пути символьных ссылок. В результате нарушаются гарантии изоляции, предоставляемые моделью разрешений, что потенциально открывает доступ к произвольным файлам в системе. Эта брешь в безопасности ставит под угрозу целостность данных и конфиденциальность информации на серверах.

Третья серьёзная проблема, CVE-2025-59465, затрагивает серверы, использующие протокол HTTP/2. При получении искажённого кадра HEADERS с переполненными данными HPACK возникает необработанная ошибка TLSSocket, приводящая к аварийному завершению процесса Node.js. Таким образом, это создаёт классический сценарий отказа в обслуживании (Denial of Service, DoS) для приложений, в которых отсутствуют явные обработчики ошибок сокетов. Уязвимость может быть использована для вывода сервиса из строя без необходимости сложной атаки.

Среди уязвимостей среднего уровня особого внимания заслуживают несколько. CVE-2025-59464 представляет собой утечку памяти при обработке TLS-клиентских сертификатов, что также может привести к удалённой атаке на отказ в обслуживании. CVE-2025-59466 позволяет вызвать не перехватываемую ошибку переполнения стека через механизм "async_hooks", что завершает процесс. Уязвимость CVE-2026-21637 связана с обработкой исключений в обратных вызовах TLS PSK/ALPN. Эти исключения могут обходить стандартные обработчики ошибок, вызывая утечку файловых дескрипторов и отказ в обслуживании.

Отдельно для версии 25.x описана проблема CVE-2026-21636. Она позволяет обойти модель разрешений через непроверенные соединения Unix Domain Socket. Единственная уязвимость низкой степени серьёзности, CVE-2025-55132, позволяет функции "fs.futimes()" изменять временные метки файлов даже при наличии у процесса прав только на чтение. Хотя прямой угрозы целостности данных это не несёт, подобное поведение противоречит ожидаемой модели безопасности.

Помимо исправлений в кодовой базе Node.js, обновления включают патчи для ключевых зависимостей - библиотек "c-ares" и "undici". Эти патчи устраняют публично известные уязвимости в данных компонентах, которые также могли быть использованы для удалённой эксплуатации. Команда безопасности Node.js подчёркивает, что использование актуальных версий из активного графика выпусков является краеугольным камнем политики безопасности проекта.

Для производственных сред, где Node.js используется для запуска веб-серверов, микросервисов или инструментов командной строки, немедленное применение этих патчей должно стать наивысшим приоритетом. Задержка с обновлением подвергает системы риску компрометации, особенно через уязвимости, связанные с утечкой памяти или обходом разрешений. Системным администраторам и DevOps-инженерам рекомендуется провести аудит своих развёртываний и обеспечить переход на исправленные версии: 20.17.1, 22.15.1, 24.12.1 или 25.8.1 соответственно. Регулярное обновление зависимостей остаётся наиболее эффективной мерой защиты от постоянно эволюционирующих киберугроз.

Ссылки

Комментарии: 0