
CVE-2026-42945: nginx-rift vulnerability analysis and detection script
Локальный инструмент оценки риска для CVE-2026-42945 (Nginx Rift). В отличие от прямого утверждения «версия уязвима, значит опасно», этот скрипт поэтапно проверяет три условия, которые действительно определяют риск, и даёт заключение, соответствующее вашей реальной ситуации.
CVE-2026-42945 — это 18-летняя уязвимость переполнения кучи (CWE-122) в модуле nginx ngx_http_rewrite_module, с оценкой CVSS 4.0 9.2. Однако в объявлении есть ключевое ограничение:
"Code execution possible on systems without ASLR protection"
Для успешной RCE необходимо выполнение трёх условий:
rewrite + setПри отсутствии любого из них наихудший результат — аварийное завершение рабочего процесса и автоматический перезапуск (DoS), а не захват сервера.
Подробный анализ: «Бомба 18-летней выдержки в nginx: взорвала ли уязвимость с оценкой 9.2 ваш сервер?»
# Запуск (требуется sudo для чтения полной конфигурации nginx)
sudo bash check_cve_2026_42945.sh
Скрипт последовательно проверяет следующие четыре пункта. Любой непройденный пункт приводит к досрочному завершению с выводом заключения:
Ситуация 1: Версия уязвима, но нет триггерной конфигурации (наиболее распространённая)
[*] Версия nginx: 1.24.0
[!] Версия 1.24.0 попадает в уязвимый диапазон, продолжаем проверку условий...
[*] Сканирование конфигурации nginx (проверка комбинаций rewrite+set, приводящих к уязвимости)...
[✓] Не найдено триггерных конфигураций (комбинация rewrite+set)
Заключение: версия уязвима, но триггерная конфигурация отсутствует, фактический риск крайне низок
Рекомендация: запланируйте обновление до 1.30.1 / 1.31.0, срочное вмешательство не требуется
Ситуация 2: Есть триггерная конфигурация, ASLR включён, защита компиляции полная
[!] Версия 1.24.0 попадает в уязвимый диапазон, продолжаем проверку условий...
[!] Обнаружена триггерная конфигурация:
→ location ~ ^/api/(.*)$ {
[✓] ASLR включён (уровень 2, полная рандомизация)
→ Предпосылки для надёжной эксплуатации RCE не выполнены, наихудший случай — крах рабочего процесса (DoS)
[✓] Обнаружена защита -fcf-protection (Intel CET, защита потока управления)
[✓] Обнаружен FORTIFY_SOURCE=3
[✓] Обнаружен Full RELRO (GOT только для чтения)
[✓] Обнаружена защита стека (stack-protector)
Уровень риска: низкий
Рекомендация: обновить nginx до 1.30.1 / 1.31.0 в ближайшее окно технического обслуживания
Ситуация 3: Есть триггерная конфигурация, ASLR отключён
[!] Обнаружена триггерная конфигурация:
→ location ~ ^/api/(.*)$ {
[✗] ASLR отключён! Риск RCE значительно возрастает
Уровень риска: высокий (DoS гарантирован / RCE возможна)
Немедленные действия:
1. Временно удалите или измените триггерную конфигурацию rewrite+set
2. Убедитесь, что ASLR включён: echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
3. Обновите nginx: apt install nginx или соберите из исходников 1.30.1+
| Продукт | Уязвимые версии | Исправленные версии |
|---|---|---|
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.30.1 / 1.31.0 |
| NGINX Plus | R32 – R36 | R36 P4 / R35 P2 / R32 P6 |
# Ubuntu / Debian
sudo apt update && sudo apt install nginx
# Проверка версии
nginx -v
Официальное уведомление: https://my.f5.com/manage/s/article/K000161019
Скрипт проверен на следующих сценариях:
Тестовая среда: Ubuntu 22.04 LTS, nginx 1.24.0 (официальный пакет Ubuntu)
include (скрипт использует nginx -T для разворачивания всех include, покрывая подавляющее большинство случаев)MIT
| Проверяемый параметр | Описание |
|---|
| Версия nginx | Диапазон уязвимых версий: 0.6.27 – 1.30.0 |
| Конфигурация триггера | Одновременное наличие rewrite с ? и set с группами захвата в одном блоке location |
| Состояние ASLR | Чтение /proc/sys/kernel/randomize_va_space |
| Защита компиляции | Обнаружение -fcf-protection / FORTIFY_SOURCE / Full RELRO / защита стека |
| Уровень | Значение | Рекомендуемый темп обработки |
|---|
| Нет влияния | nginx не установлен или версия исправлена | Действия не требуются |
| Крайне низкий | Версия уязвима, но триггерная конфигурация отсутствует | Обновить при следующем плановом ТО |
| Низкий | Есть триггерная конфигурация, но ASLR + защита компиляции полные | Обновить в ближайшее окно ТО |
| Средний | Есть триггерная конфигурация, защита неполная | Обновить как можно скорее, есть риск недоступности |
| Высокий | Есть триггерная конфигурация + ASLR отключён + защита отсутствует | Немедленно принять меры |