CVE-2026-78689 в Ubuntu: переполнение буфера в njs и порядок обновления

CVE: CVE-2026-78689
Продукт: Ubuntu
Дата публикации: 02.09.2026
Критичность: CRITICAL
CVSS: 9.2 (4.0)
EPSS: 0,41%; процентиль 34,45%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В пакете libnginx-mod-js для Ubuntu обнаружена уязвимость, позволяющая удалённому атакующему вызвать отказ в обслуживании или потенциально выполнить код. Ошибка связана с обработкой XML-именных пространств в движках njs и QuickJS. Материал описывает механику срабатывания, затронутые версии и шаги по проверке и обновлению системы.

Основные характеристики​


Риск заключается в возможности удалённого атакующего повредить память процесса NGINX через специально сформированный XML-документ. Это может привести к падению воркера или, в отдельных сценариях, к выполнению кода.

  • Классификация: CWE-122 (Heap-based Buffer Overflow). Ошибка связана с записью за пределы выделенной области памяти.
  • CVSS 4.0: 9.2 (CRITICAL). Вектор: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N.
  • CVSS 3.1: 9.8 (CRITICAL). Вектор: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H.
  • EPSS: 0,41% (процентиль 34,45%). Показатель отражает вероятность эксплуатации в ближайшие 30 дней.
  • Статус: Публичный эксплойт не подтверждён, но возможность выполнения кода не исключена.

Какие продукты и версии затронуты​


Согласно данным Ubuntu OSV, уязвимость затрагивает пакет libnginx-mod-js в следующих средах:

  • Ubuntu 24.04 LTS (noble): версия 0.8.2-1ubuntu1.
  • Ubuntu Pro 26.04 LTS (resolute): версия 0.9.4-1ubuntu0.1~esm1.

В состав пакета входят бинарные компоненты libnginx-mod-http-js, libnginx-mod-stream-js и njs. Все перечисленные версии считаются уязвимыми.

Причина уязвимости​


Причина ошибки — отсутствие проверки границ при обработке списка префиксов XML-именных пространств в модуле XML движка njs. Метод xml.exclusiveC14n() принимает входные данные и передаёт их в парсер, который не валидирует длину списка относительно размера выделенного в куче буфера.

При обработке вредоносного списка происходит запись за пределы выделенной области (out-of-bounds write). В движке njs это повреждает соседние объекты памяти и вызывает аварийное завершение воркера NGINX. В движке QuickJS (qjs) аналогичный вызов дополнительно приводит к утечке памяти при каждой итерации, что вызывает неконтролируемый рост потребления ресурсов воркерами.

Как работает атака​


Атакующий направляет на сервер NGINX специально сформированный XML-документ или SAML-сообщение. В нём атрибут InclusiveNamespaces/@PrefixList содержит вредоносный список префиксов.

Конфигурация, использующая модуль nginx-saml или аналогичную логику, извлекает этот список и передаёт его в xml.exclusiveC14n() до проверки цифровой подписи сообщения.

Парсер njs обрабатывает данные и выполняет запись за пределы выделенной памяти. Это приводит к повреждению структур данных в памяти воркера.

Результатом становится аварийное завершение процесса (отказ в обслуживании) или, в зависимости от условий, выполнение произвольного кода. Аутентификация для запуска атаки не требуется.

Условия успешной эксплуатации​


Для успешной эксплуатации необходимо соблюдение следующих условий:

  • Сервер работает на уязвимой версии пакета libnginx-mod-js.
  • В конфигурации NGINX используется модуль, передающий внешние XML-данные в метод xml.exclusiveC14n() (например, nginx-saml при верификации подписей).
  • Атакующий имеет сетевой доступ к порту, на котором слушает уязвимый сервис.

Возможный сценарий атаки​


Атакующий формирует SAML-сообщение (Response, Assertion, LogoutRequest или LogoutResponse), в котором атрибут InclusiveNamespaces/@PrefixList содержит специально сконструированный список префиксов. Сообщение отправляется на endpoint, обрабатывающий SAML-аутентификацию.

Модуль nginx-saml извлекает список префиксов из недоверенного сообщения и передаёт его в xml.exclusiveC14n() до проверки подписи. Парсер njs обрабатывает данные и вызывает out-of-bounds write.

Воркер NGINX аварийно завершает работу. Повторяя отправку таких сообщений, атакующий может вызвать устойчивый отказ в обслуживании. В некоторых сценариях повреждение памяти может привести к выполнению кода.

Есть ли публичный эксплойт​


Публичный эксплойт для CVE-2026-78689 не подтверждён. В официальных источниках указано, что выполнение кода не продемонстрировано, но не может быть исключено для всех платформ. Отсутствие публичного эксплойта не означает, что уязвимость не может быть эксплуатирована.

Признаки эксплуатации​


Специфичные индикаторы компрометации (IOC) для этой уязвимости в источниках не раскрыты. Общие признаки, которые могут указывать на эксплуатацию, включают:

  • Частые аварийные завершения (crash) воркеров NGINX.
  • Необъяснимый рост потребления памяти воркерами NGINX.
  • Запросы к SAML-endpoint с аномально длинными или специально сформированными XML-атрибутами.

Как обнаружить атаку​


Для обнаружения атаки рекомендуется мониторинг логов NGINX и системы:

  • Анализ логов ошибок NGINX на предмет аварийных завершений воркеров.
  • Мониторинг потребления памяти процессами nginx.
  • Проверка логов доступа на наличие аномальных запросов к SAML-сервисам с подозрительными XML-параметрами.

Специфичные сигнатуры для IDS/IPS в источниках не приведены.

Как проверить свою версию​


Для проверки версии установленных пакетов используйте следующие команды:

Bash:
cat /etc/os-release
uname -r
apt-cache policy libnginx-mod-js
ubuntu-security-status

Команда apt-cache policy покажет установленную и доступную версии пакета. Замените <имя-пакета> на libnginx-mod-js при необходимости проверки конкретного компонента.

Исправление​


Для устранения уязвимости необходимо обновить пакет libnginx-mod-js до исправленной версии. Используйте стандартные средства обновления Ubuntu:

Bash:
sudo apt update
sudo apt upgrade libnginx-mod-js

После обновления перезапустите сервис NGINX:

Bash:
sudo systemctl restart nginx

Убедитесь, что все воркеры перезапущены и работают на новой версии.

Временные меры защиты​


До применения обновления можно рассмотреть следующие временные меры:

  • Отключите модуль nginx-saml или другие компоненты, использующие xml.exclusiveC14n(), если это позволяет бизнес-логика.
  • Ограничьте доступ к SAML-endpoint на уровне файрвола до доверенных IP-адресов.
  • Настройте мониторинг на аварийные завершения воркеров NGINX для быстрого обнаружения атаки.

Как проверить устранение уязвимости​


Для проверки успешного применения исправления выполните:

Bash:
apt-cache policy libnginx-mod-js

Убедитесь, что установленная версия соответствует исправленной. Проверьте статус сервиса:

Bash:
sudo systemctl status nginx

Убедитесь, что воркеры работают стабильно и не завершаются аварийно. Проверьте логи на предмет ошибок после перезапуска.

Вывод​


CVE-2026-78689 представляет серьёзную угрозу для систем Ubuntu, использующих модуль libnginx-mod-js в связке с SAML-аутентификацией. Обновление пакетов до исправленных версий является приоритетной задачей. Администраторам следует проверить версии установленных пакетов, применить обновления и убедиться в стабильной работе сервисов после перезапуска.

Официальные источники​


  1. NVD — CVE-2026-78689
  2. Ubuntu OSV — CVE-2026-78689
  3. FIRST EPSS — CVE-2026-78689

История обновлений статьи​


  • 06.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ