CVE NGINX¶
Gixy Check ID: nginx_cves
Явно заданный --nginx-version также используется проверкой QUIC BPF.
Старый --nginx-cves-version служит общим запасным значением только при
отсутствии глобального параметра. По умолчанию Gixy не запускает NGINX.
--nginx-version=auto или nginx-version = auto в конфигурации включает
однократный запуск локального nginx -V из PATH с тайм-аутом пять секунд.
Это означает, что именно локальный бинарный файл является целью проверки;
для удалённой или офлайн-конфигурации задайте версию явно. В режиме --server
значение auto запрещено. При ошибке версия остаётся неизвестной, даже если
задан nginx-cves-version; предупреждение выводится в stderr.
--nginx-flavor=nginx-mod задаёт вариант для офлайн-проверки,
--nginx-flavor=upstream переопределяет определённый вариант. Неизвестный
вариант из баннера использует правила upstream; неизвестное явное имя
считается ошибкой. Встроенные данные подавляют только конкретную проверку
или CVE начиная с записанной версии исправления. Сейчас для nginx-mod
записано только исправление QUIC в 1.30.6, исключений для CVE нет.
Реальная версия сохраняется; диагностика, включая переопределения при
--debug, идёт в stderr, не в JSON stdout.
Обзор¶
Проверка nginx_cves повторяет базу бюллетеней безопасности NGINX Open Source.
Передайте --nginx-version=1.31.6, чтобы Gixy знал, какой бинарный файл NGINX
будет загружать конфигурацию; без этого флага проверка молчит (Gixy - статический
анализатор конфигураций и не видит бинарный файл).
CVE, относящиеся только к самому бинарному файлу, сообщаются всякий раз, когда указанная версия попадает в уязвимый диапазон. CVE, связанные с модулем или шаблоном конфигурации, сообщаются, только если совпали и версия, и триггер. Такие сообщения привязываются к проблемным директивам, так что видно, где именно включена уязвимая функциональность.
Использование¶
gixy --nginx-version=1.31.6 /etc/nginx/nginx.conf
Если ваш бинарный файл пропатчен, проверка молчит по любой CVE, исправленной в
этом релизе, даже если конфигурация всё ещё содержит шаблон-триггер. Без
--nginx-version проверка молчит полностью: нельзя ничего утверждать о версии,
которая неизвестна.
Текущая база¶
По состоянию на октябрь 2026 года база содержит 63 из 67 идентификаторов CVE со страницы бюллетеней безопасности NGINX Open Source, включая исправленные версии стабильных веток. Четыре записи намеренно исключены: CVE-2011-4963, CVE-2010-2266 и CVE-2010-2263, относящиеся только к Windows, а также CVE-2009-4487 (экранирование в логах, критичность none, все версии, исправленного релиза нет). Эти исключения не означают полного покрытия всех продуктов, связанных с NGINX.
Сентябрьское обновление включает CVE-2026-90439 в модуле HTTP/3, исправленную в
Open Source 1.30.5 и 1.31.6. Октябрьский релиз добавляет:
| CVE | Проверяемые предпосылки конфигурации |
|---|---|
| CVE-2026-15176 | Действующий alias, rewrite в том же или объемлющем контексте и прямое использование $request_filename или ${request_filename} в применимых выражениях set/return либо в именованном log_format активного журнала доступа. |
| CVE-2026-93479 | Рекомендация только по версии: альтернативные пути с некешируемыми переменными нельзя полностью смоделировать по конфигурации. |
| CVE-2026-95101 | Слушатель QUIC с действующим включённым HTTP/3 и proxy_pass с действующим proxy_request_buffering on в том же HTTP-сервере. |
| CVE-2026-97629 | TLS-сервер HTTP с действующим ssl_session_cache shared:..., включёнными тикетами сессий и без явных файлов ssl_session_ticket_key, что допускает автоматическую ротацию ключей тикетов. |
| CVE-2026-97205 | Действующий ssi on и включённый AIO в одном и том же применимом контексте запроса. |
Все пять октябрьских записей исправлены в NGINX Open Source 1.30.6 и 1.31.7.
Предпосылки срабатывания основаны на
записях F5 CNA;
границы версий OSS для прошлых уязвимостей соответствуют nginx.org, включая
1.23.2 для CVE-2026-97629. Учитывается наследование между HTTP, server и
location и более близкие переопределения, при этом не смешиваются несвязанные
серверы и соседние location.
Июльские записи по-прежнему покрыты: CVE-2026-42533 (захваты regex в map и
изменчивые выходные значения), CVE-2026-60005 (безымянные захваты вместе с
slice или фоновым обновлением кеша) и CVE-2026-56434 (SSI с небуферизуемыми
проксируемыми ответами), исправленные в 1.30.4 и 1.31.3.
Примеры¶
CVE, зависящая от конфигурации¶
location ~(.*) {
slice 1m;
proxy_set_header X-Capture $1;
proxy_set_header Range $slice_range;
proxy_pass http://backend;
}
$ gixy --nginx-version=1.31.2 nginx.conf
==>>> Issue: [MEDIUM] Known nginx CVE affects your installed version.
CVE-2026-60005: Uninitialized memory access in ngx_http_slice_module.
Your installed version is vulnerable and the trigger pattern is present
in this config. Fixed in: 1.30.4, 1.31.3.
Пропатченный бинарный файл¶
$ gixy --nginx-version=1.30.6 nginx.conf # silent: current fixes are present
Расширение базы¶
Добавьте словарь в CVES в gixy/plugins/_nginx_cves_db.py:
{
"id": "CVE-YYYY-NNNNN",
"nickname": "Optional Nickname",
"summary": "One-line issue description.",
"severity": gixy.severity.HIGH,
"advisory": "https://nvd.nist.gov/vuln/detail/CVE-YYYY-NNNNN",
"vulnerable_oss": (((LOW_MAJOR, LOW_MINOR, LOW_PATCH),
(HIGH_MAJOR, HIGH_MINOR, HIGH_PATCH)),),
"fixed_oss": ("X.Y.Z", "A.B.C"),
"fixed_plus": ("R<N> P<M>",),
"config_check": check_cve_YYYY_NNNNN, # or None for binary-only CVEs
}
Если у CVE есть шаблон срабатывания в конфигурации, добавьте рядом небольшую
функцию-генератор check_cve_YYYY_NNNNN(root), которая выдаёт пары
(primary_directive, related_directive) для каждого совпадения.
Ограничения¶
- Сопоставление версий OSS. Модель патчей R-track для NGINX Plus требует отдельного компаратора для каждого трека; в сообщениях версии исправлений для Plus указаны обычным текстом, чтобы операторы Plus могли применить их вручную.
- Только прямые соседние области для проверки шаблона CVE-2026-42945
(соответствует компиляции скриптового движка в каждом контексте, которая и
приводит к эксплуатации).
rewriteвнутри блокаif {}, у которого последующийsetнаходится вне этогоif, не помечается. - Предпосылки не доказывают эксплуатируемость. CVE-2026-97205 дополнительно
требует, чтобы содержимое SSI-страниц включало команды
include virtual; Gixy эти файлы не анализирует. CVE-2026-93479 остаётся рекомендацией по версии, а не доказательством эксплуатируемой конфигурации. - Прямые ссылки на имя файла. CVE-2026-15176 проверяет лексические ссылки на переменные и активные именованные форматы логов; произвольная косвенная работа с переменными и поток управления во время запроса моделируются не полностью.
- Нет автоопределения. Gixy не вызывает
nginx -v; версию нужно передавать явно.
Укрепляйте NGINX с поддерживаемыми пакетами
Используйте NGINX Extras от GetPageSpeed для постоянно обновляемого NGINX и модулей на RHEL, Debian и Ubuntu. Подробнее.