Краткое содержание
21 октября 2026 года Node.js выпустила исправления для 10 уязвимостей в трех поддерживаемых ветках релизов: 22.x, 24.x и 26.x. Четыре из них имеют высокий уровень опасности. Самая серьезная, CVE-2026-111497, представляет собой запись с выходом за границы буфера в поставляемом декодере Brotli, которая, по заявлению Node.js, позволяет удаленно выполнять код. Эти уязвимости находятся в самой среде выполнения Node.js, а не в пакетах приложений, поэтому проверки зависимостей их не обнаружат. Клиенты Qualys могут находить затронутые среды выполнения на хостах, в контейнерах и облачных рабочих нагрузках (включая копии за пределами стандартных путей установки), расставлять приоритеты для тех из них, которые имеют доступ к интернету, и подтверждать применение каждого исправления после патча.
Почему этот релиз требует внимания прямо сейчас
Четыре уязвимости высокой степени тяжести затрагивают две области, с которыми взаимодействует практически каждый сервис Node.js: сжатые данные и исходящие соединения.
CVE-2026-111497 — это уязвимость, обнаруженная в коде, отвечающем за распаковку данных Brotli. Данная проблема затрагивает любой сервис, который распаковывает контент Brotli, созданный не им самим. Кроме того, существуют еще три уязвимости высокой степени тяжести: CVE-2026-105482, CVE-2026-105483 и CVE-2026-106069. Эти уязвимости подрывают способность Node.js проверять имена хостов и сертификаты, что особенно важно для служб, которые подключаются к хостам от имени пользователей.
Для каждой команды актуальны еще три момента:
- Обходные пути (workarounds) отсутствуют. Node.js не опубликовала их ни для одной из этих десяти CVE. Решением является обновление среды выполнения.
- Оценки CVSS отсутствуют. В настоящее время записи CVE зарезервированы и не имеют оценок CVSS.
- Обновления для неподдерживаемых веток отсутствуют. Исправления получили только версии 22.x, 24.x и 26.x. Все остальные версии, включая 25.x и 20.x, остаются уязвимыми и должны быть обновлены до поддерживаемого релиза.
Почему обновления зависимостей приложения недостаточно
Само по себе обновление зависимостей приложения не решит эти проблемы. Уязвимый код входит в состав среды выполнения Node.js, которая включает в себя среды выполнения, внедренные в образы контейнеров, и автономно исполняемые приложения (Single-Executable Applications, SEAs).
Кроме того, Node.js часто запускается из нестандартных расположений:
- Менеджеры версий, такие как nvm
- Папки приложений
- Встроенные среды выполнения
- SEAs
- Образы контейнеров, запущенные контейнеры и бессерверные функции (serverless), такие как среды выполнения AWS Lambda Node.js
Что затрагивают уязвимости
Уязвимости охватывают zlib, DNS, TLS, HTTP, криптографию и модель разрешений (Permission Model). Три из четырех проблем высокой степени тяжести ослабляют проверку имен хостов или сертификатов, что важно для любого сервиса, который выполняет исходящие вызовы TLS или DNS от имени пользователей.
Уязвимости высокой степени тяжести
CVE-2026-111497 (Brotli). Специально сформированный поток Brotli может заставить декодер выполнять запись за пределами выделенной памяти. Node.js классифицирует этот результат как уязвимость удаленного выполнения кода. Сервисы, которые распаковывают данные Brotli из ненадежных источников (например, HTTP-клиенты и прокси-серверы, принимающие Content-Encoding: br), или сервисы, обрабатывающие загруженные сжатые файлы, подвергаются наибольшему риску.
CVE-2026-105482 (DNS). Функции dns.resolve*, dns.reverse и класс Resolver отправляют имена в c-ares в виде строк C. Следовательно, если присутствует встроенный нулевой символ (NUL), он обрежет имя. Приложение получает возможность проверять одно имя хоста по списку разрешенных (allowlist) при запросе другого имени. Функция dns.lookup не подвержена этой проблеме.
CVE-2026-106069 (TLS). Функция `tls.checkServerIdentity` может проверять неканонический IP-адрес (например, в восьмеричной или сокращенной форме) по сертификату для одного адреса, в то время как соединение направляется на другой. Эта уязвимость позволяет злоумышленнику предоставить сертификат, действительный для эндпоинта, который ему фактически не принадлежит.
CVE-2026-105483 (TLS). Имена хостов, использующие полноширинные цифры Unicode, нормализуются в IP-адрес и могут совпадать с сертификатом, выданным для этого IP. Эта проблема затрагивает только ветки 24.x и 26.x.
Уязвимости средней и низкой степени тяжести
- CVE-2026-105481 (Средняя, HTTP): При использовании keep-alive в http.Agent сервер может отправить ответ через простаивающий повторно используемый сокет до следующего запроса, который Node.js интерпретирует как ответ на этот запрос.
- CVE-2026-106072 (Средняя, TLS): Сертификаты с именами DNS принимались для неканонических эндпоинтов IPv4. Эта проблема была решена в том же коммите, что и CVE-2026-106069.
- CVE-2026-106074 (Средняя, криптография): Кешированные значения для crypto.randomUUID и crypto.randomInt сохранялись в снимках запуска (startup snapshots), в результате чего процессы, запущенные из одного и того же снимка, генерировали идентичные начальные значения. Затронуты только SEA, использующие useSnapshot или пользовательские снимки.
- CVE-2026-106070 (Низкая, zlib): В экспериментальном API zlib.ZipFile (добавленном в 26.8.0) чтение после неудачной проверки заголовка могло возвращать байты из неправильной позиции файла.
- CVE-2026-106071 (Низкая, модель разрешений): Использование подстановочных знаков (wildcard) в путях в опциях --allow-fs-read или --allow-fs-write может предоставить доступ к большему количеству путей к файлам, чем предполагалось изначально.
- CVE-2026-106073 (Низкая, fs): Функция fs.realpathSync обходила проверку модели разрешений, которую выполняют ее родственные функции, разрешая вызовы для неавторизованных путей.
Исправленные версии и рекомендации по обновлению
Каждая поддержиленная ветка имеет исправленный релиз, и любой последующий релиз в той же ветке также включает в себя исправления.
Версия Node.js 26 получит статус LTS 28 октября 2026 года. Командам, использующим версию 26.x, следует обновиться до версии 26.12.1 до этого перехода.
Простое обновление зависимостей приложения не решает эти проблемы. Уязвимый код поставляется вместе со средой выполнения Node.js, которая включает в себя среды выполнения, обнаруживаемые в образах на базе контейнеров и в автономно исполняемых приложениях (SEAs).
Что могут сделать клиенты Qualys
Клиенты Qualys могут идентифицировать каждую уязвимую среду выполнения Node.js на хостах, в контейнерах и облачных рабочих нагрузках, а также отслеживать устранение уязвимостей в едином интерфейсе. Сведения об обнаружении для релиза октября 2026 года приведены ниже.
Как Qualys находит и устраняет подверженность уязвимостям Node.js
Платформа Qualys Enterprise TruRisk Platform помогает командам пройти путь от рекомендаций до проверенного исправления в пять этапов, используя уже имеющиеся у них инвентарные данные и телеметрию.
- Найдите каждую среду выполнения с помощью CSAM и Qualys Deep Scan. Deep Scan идентифицирует уязвимые бинарные файлы PHP в пользовательских папках приложений, на вторичных дисках и в других настроенных каталогах. Результаты появляются в VMDR с указанием полного пути к бинарному файлу, установленной версии и рекомендованной исправленной версии. Эта информация предоставляет специалистам по безопасности и ИТ-отделам необходимые детали для поиска и устранения любых упущенных из виду инсталляций.
- Расставьте приоритеты с помощью Enterprise TruRisk Management (ETM). Оценка TruRisk добавляет контекст активов и уровня подверженности угрозам, поэтому команды могут начать с сервисов с выходом в интернет, которые распаковывают ненадежные данные Brotli (CVE-2026-111497) или открывают TLS-соединения с хостами, предоставляемыми пользователями (CVE-2026-106069, CVE-2026-105483).
- Подтвердите исправление. После обновления запустите повторное сканирование с помощью Cloud Agent или Container Security и убедитесь, что соответствующие QID обнаружения закрыты.
Чтобы сформировать инвентаризационные данные на шаге 1, запустите один запрос CSAM или VMDR для каждой ветки релизов, чтобы пропатченные активы в других ветках не учитывались:
Выполните следующие запросы в CSAM > Inventory > Assets.
Снижение рисков перед установкой патчей
Обновление среды выполнения — это единственное полное исправление. Node.js не публиковала обходных путей, поэтому приведенные ниже временные меры подготовлены исследовательской группой Qualys Threat Research Unit (TRU). Они сужают конкретные пути атак, но не делают неуязвимую среду выполнения полностью безопасной.
- По возможности избегайте декомпрессии Brotli для ненадежных входных данных. Ограничьте размер сжатых полезных данных и коэффициент декомпрессии на обратном прокси-сервере или WAF.
- Разрешайте имена, предоставленные пользователем, с помощью dns.lookup вместо dns.resolve*, и отклоняйте имена хостов, содержащие символы NUL.
- Преобразуйте IP-адреса в каноническую форму до их поступления в TLS-соединение. Отклоняйте полноширинные и другие неканонические формы.
- Отключите keepAlive в http.Agent для соединений с ненадежными серверами.
- Не полагайтесь на модель разрешений (Permission Model) как на границу безопасности в уязвимых версиях.
Установка патчей с уверенностью
Node.js выпустила исправления, а патчи от Qualys уже доступны в TruRisk Eliminate для веток 24.x и 26.x. Командам, использующим версию 22.x, следует обновить среду выполнения вручную до появления патча.
Для патчей веток 24.x и 26.x:
- Надежность патча: высокая для 24.22.1, низкая для 26.12.1. Qualys оценивает патч LTS Upper 24.22.1 как высоконадежный, поэтому он вряд ли нарушит работу продакшена. Патч Node.JS 26.12.1 в настоящее время имеет низкую оценку надежности, поэтому мы рекомендуем протестировать его на пилотной группе перед широким развертыванием.
- Может потребоваться перезагрузка. Оба патча отмечены как «Может потребоваться перезагрузка», поэтому запланируйте развертывание в рамках окна обслуживания.
- Перезапустите каждую службу, работающую на Node.js. Долго работающие процессы, контейнеры и SEA хранят уязвимую среду выполнения в памяти до перезапуска.
После успешного применения соответствующего патча следующее сканирование VM отметит уязвимости на этом хосте как закрытые.
- Обновите каждую копию. Переведите каждую поддерживаемую ветку на версию 22.23.4, 24.22.1 или 26.12.1 и перенесите устаревшие ветки на поддерживаемый выпуск.
- Пересоберите то, что содержит встроенную среду выполнения. Пересоберите образы контейнеров и SEA для исправленной версии, а затем разверните их заново.
- Перезапустите долго работающие службы, чтобы они загрузили новую среду выполнения.
- Повторите сканирование и проверку. Выполните повторное сканирование с помощью Cloud Agent или Container Security и убедитесь, что QID обнаружения закрыты.
Подключите своего ИИ-ассистента к Qualys за три шага
Теперь вы можете передавать данные Qualys в свои рабочие процессы ИИ с помощью qualys-cli-mcp, сервера протокола контекста модели (MCP) для платформы Qualys Cloud Platform. Claude, Cursor, VS Code и другие ассистенты с поддержкой MCP могут использовать его для запросов к вашей среде Qualys на естественном языке. Например, вы можете спросить: «Можешь проверить в Qualys, уязвим ли я к CVE-2026-111497 или любой из уязвимостей Node.js за октябрь 2026 года?», не создавая вызовы API и не переключая консоли.
Он запросит ваше имя пользователя и пароль Qualys, автоматически обнаружит вашу платформу и надежно сохранит учетные данные в связке ключей вашей ОС. Ваши учетные данные никогда не попадут в файл конфигурации ИИ-клиента.
{ “mcpServers”: { “qualys”: { “command”: “qualys-cli-mcp” } } }
Вот и все. Ваш ассистент теперь может работать с Qualys.
Что это значит для команд безопасности
Главный вопрос, на котором нам следует сосредоточиться в этом релизе, — не «Используем ли мы Node.js?», а «Где находятся все копии и к каким из них может получить доступ злоумышленник?». Уязвимости в среде выполнения могут распространяться на менеджеры версий, контейнеры, бессерверные функции и различные среды, далеко за пределы того, что могут обнаружить стандартные проверки зависимостей.
С помощью Qualys команды могут выявлять уязвимые среды выполнения сразу после публикации бюллетеней. Они могут находить копии, существующие за пределами стандартных путей, определять приоритетность служб, подверженных риску ввода ненадежных данных, и проверять внедрение исправлений. Обнаружение, приоритизация и проверка управляются на единой платформе, что исключает необходимость интеграции нескольких инструментов.
Ссылка
Проект Node.js: Wednesday, October 21, 2026 Security Releases











