В NGINX Plus і NGINX Open Source виявлено критичну вразливість CVE-2026-42945 (NGINX Rift, CVSS v4 9.2) у модулі ngx_http_rewrite_module, яка залишалася непоміченою протягом 18 років і дає змогу здійснити віддалене виконання коду або відмову в обслуговуванні через неавтентифікований HTTP‑запит; під загрозою опиняються веб‑сервери, reverse‑proxy, ingress‑контролери та WAF на базі NGINX, а адміністраторам необхідно негайно оновити версії або змінити конфігурацію rewrite‑правил, виключивши небезпечні регулярні вирази.
Технічні деталі вразливостей
Початковий дефект NGINX Rift / CVE-2026-42945 виявлено дослідниками проєкту depthfirst і докладно описано в їхньому розборі NGINX Rift. Згідно з повідомленням F5 для клієнтів NGINX (офіційний advisory F5), проблема являє собою переповнення буфера в купі в модулі ngx_http_rewrite_module, що виникає за специфічної комбінації директив і регулярних виразів.
Умова експлуатації CVE-2026-42945 виглядає так:
- використовується модуль ngx_http_rewrite_module із директивою
rewrite, - за нею слідує директива
rewrite,ifабоset, - у правилах використовуються безіменні PCRE‑захоплення (
$1,$2тощо), - у рядку заміни присутній символ
?.
Віддалений, неавтентифікований зловмисник, здатний надсилати HTTP‑запити на вразливий сервер, формує спеціально підготовлений URI, що призводить до переповнення купи в процесі worker NGINX. За ввімкненого ASLR це, як мінімум, надійний спосіб спричинити збій і перезапуск worker (відмову в обслуговуванні). За вимкненого ASLR, за оцінкою depthfirst і F5, стає досяжним віддалене виконання коду у контексті процесу NGINX. Див. також запис у NVD: CVE-2026-42945.
Особливість вразливості в тому, що:
- експлуатація не вимагає автентифікації чи попереднього доступу;
- одного запиту достатньо для переповнення купи;
- байти, що записуються за межі виділеного блоку, повністю контролюються зловмисником через URI, що робить пошкодження пам’яті цілеспрямованим, а не випадковим;
- повторювані запити можуть ввести worker‑процеси в цикл падінь, знижуючи доступність усіх сайтів на цьому екземплярі.
За даними F5, вразливість зачіпає:
- NGINX Plus R32–R36 (виправлено в R32 P6 і R36 P4);
- NGINX Open Source 1.0.0–1.30.0 (виправлено в 1.30.1 і 1.31.0);
- NGINX Open Source 0.6.27–0.9.7 (виправлень не планується);
- низку продуктів на базі NGINX: NGINX Instance Manager, F5 WAF for NGINX, NGINX App Protect WAF/DoS, NGINX Gateway Fabric, NGINX Ingress Controller — у конкретних діапазонах версій, перелічених в advisory F5.
Додаткові вразливості в NGINX
Одночасно виправлено ще три вразливості середнього та високого рівня небезпеки:
- CVE-2026-42946 (CVSS v4 8.3) — надмірне виділення пам’яті у модулях
ngx_http_scgi_moduleіngx_http_uwsgi_module. Неавтентифікований зловмисник, який має змогу перехоплювати й модифікувати відповіді upstream‑сервера (adversary-in-the-middle), може сформувати такі відповіді, що NGINX некоректно керує пам’яттю worker‑процесу, що призводить до читання даних із його пам’яті або перезапуску процесу за використання директивscgi_passабоuwsgi_pass. Див. advisory щодо CVE-2026-42946 і запис CVE-2026-42946. - CVE-2026-40701 (CVSS v4 6.3) — use-after-free у
ngx_http_ssl_module. Умова:ssl_verify_clientвстановлено вonабоoptional, аssl_ocsp— вon. Це дає змогу віддаленому неавтентифікованому зловмиснику в обмеженому обсязі модифікувати дані або спричинити перезапуск worker‑процесу. Див. advisory щодо CVE-2026-40701 і CVE-2026-40701. - CVE-2026-42934 (CVSS v4 6.3) — читання за межами буфера у
ngx_http_charset_module. Існує ризик розкриття вмісту пам’яті або перезапуску worker за одночасної конфігурації директивcharset,source_charset,charset_mapіproxy_passз вимкненим буферизацією (off). Див. advisory щодо CVE-2026-42934 і CVE-2026-42934.
В оригінальних повідомленнях не йдеться про зафіксовану експлуатацію цих вразливостей у реальних атаках, але технічний профіль CVE-2026-42945 робить її привабливою ціллю для автоматизації та масового сканування.
Контекст і особливості загрози
NGINX традиційно використовується як високонавантажений веб‑сервер і reverse‑proxy, а також як основа ingress‑контролерів у Kubernetes і комерційних рішень F5. Помилка в rewrite‑механізмі, що існувала з ранніх версій (0.6.x), наочно демонструє ризики «прикордонної» логіки: нестандартні комбінації директив, інтеграція з PCRE та складні URI‑шаблони історично тестуються гірше, але активно застосовуються в реальних конфігураціях.
Критично важливо, що вразлива ділянка коду досягається до будь‑яких перевірок автентифікації застосунку або бізнес‑логіки. Фактично NGINX тут виступає як сама поверхня атаки. Це підвищує цінність вразливості для зловмисників: достатньо лише мережевої доступності HTTP‑порту, навіть якщо далі за NGINX приховано добре захищений backend.
Додаткові вразливості (SCGI/UWSGI, SSL, charset) ілюструють інший клас проблем: коли NGINX довіряє вмісту від upstream‑сервера або інфраструктури перевірки сертифікатів (OCSP), помилки обробки цих даних дозволяють вийти за очікувані межі пам’яті. У сценаріях, де зловмисник контролює або може підміняти upstream‑відповіді, такі дефекти перетворюються на потужний інструмент для читання фрагментів пам’яті або відключення сервісів.
Оцінка впливу
Під найбільшим ризиком перебувають:
- організації, що використовують NGINX як публічний веб‑сервер або reverse‑proxy з активним
ngx_http_rewrite_module, особливо з великою кількістю складних правил; - хмарні платформи та хостинг‑провайдери, де один екземпляр NGINX обслуговує багатьох орендарів: успішна експлуатація CVE-2026-42945 може вплинути на всіх клієнтів на цьому вузлі;
- Kubernetes‑кластери з NGINX Ingress Controller, а також інсталяції NGINX App Protect WAF/DoS і NGINX Gateway Fabric у вразливих версіях;
- системи, де ASLR вимкнений або ослаблений (наприклад, спеціалізовані аплайанси чи сильно оптимізовані для продуктивності середовища).
За відсутності заходів реагування можливі такі наслідки:
- повне захоплення вузла через RCE у процесі NGINX (CVE-2026-42945) з подальшим переміщенням всередині мережі;
- компрометація конфіденційних даних за рахунок читання фрагментів пам’яті worker‑процесу (CVE-2026-42946, CVE-2026-42934), де можуть міститися токени, cookie, частини запитів і відповідей;
- широкомасштабна відмова в обслуговуванні — циклічні падіння worker‑процесів, недоступність сайтів і API, зростання затримок і помилок 502/504;
- опосередковані втрати: репутаційні ризики, порушення SLA, можливі штрафи за витік персональних даних.
Практичні рекомендації
1. Пріоритезація та строки
- Розглядати CVE-2026-42945 як критичну: оновлення або застосування обхідного рішення — у пріоритеті «негайно/протягом найближчих годин» на публічно доступних вузлах.
- Інші вразливості (CVE-2026-42946, CVE-2026-40701, CVE-2026-42934) — пріоритет «високий», планувати оновлення в найближче вікно обслуговування.
2. Оновлення до виправлених версій
- Для NGINX Plus оновитися щонайменше до R32 P6 або R36 P4 чи новіших випусків, що містять виправлення (див. advisory F5).
- Для NGINX Open Source — перейти на 1.30.1 або 1.31.0 і вище.
- Для продуктів на базі NGINX (Ingress Controller, App Protect WAF/DoS, Gateway Fabric, Instance Manager, F5 WAF for NGINX) — зіставити поточні версії з діапазонами, зазначеними у відповідних advisory F5, і оновитися до рекомендованих релізів.
- Для дуже старих гілок 0.6.27–0.9.7, де виправлень не планується, єдиний шлях — міграція на підтримувані версії.
3. Обхідне рішення для CVE-2026-42945
Якщо негайне оновлення недоступне, рекомендується змінити конфігурацію rewrite‑правил, як описано F5 і depthfirst:
- Знайти всі директиви
rewrite, за якими слідуєrewrite,ifабоset, де:- використовуються безіменні захоплення виду
$1,$2тощо; - у рядку заміни присутній символ
?.
- використовуються безіменні захоплення виду
- Переписати регулярні вирази з використанням іменованих захоплень PCRE, наприклад:
- було:
rewrite ^/user/(\d+)\?(.*)$ /profile.php?id=$1?$2; - стало:
rewrite ^/user/(?<uid>\d+)\?(?<rest>.*)$ /profile.php?id=$uid?$rest;
- було:
- Переконатися після змін, що функціональність перенаправлень зберігається, і перезапустити NGINX.
Суть обходу: переведення безіменних захоплень в іменовані змінює шлях обробки даних у коді NGINX і виключає вразливий сценарій.
4. Зниження ризику за додатковими вразливостями
До оновлення можна тимчасово скоротити поверхню атаки:
- Для CVE-2026-42946: за можливості обмежити або тимчасово вимкнути
scgi_passіuwsgi_passна зовнішніх межах, особливо там, де upstream може бути під контролем третіх осіб. - Для CVE-2026-40701: за невисокої критичності перевірки клієнта й OCSP розглянути тимчасове вимкнення
ssl_ocsp onабо послабленняssl_verify_client, оцінивши при цьому вплив на вимоги до автентифікації клієнта. - Для CVE-2026-42934: мінімізувати використання
charset_mapу поєднанні зproxy_passі вимкненою буферизацією, якщо це можливо без шкоди для бізнесу.
5. Перевірка вразливості та моніторинг
- Перевірити версію NGINX командою
nginx -vі зіставити з діапазонами вразливих версій. - Проаналізувати конфігурацію:
- пошук по
nginx.confта підключених файлах за ключамиrewrite,$1,$2,?; - виокремити правила, що відповідають описаному вище патерну.
- пошук по
- Увімкнути або посилити логування помилок NGINX і системне логування:
- звертати увагу на повторювані падіння worker‑процесів, сигнали
segmentation fault, циклічні перезапуски; - зіставляти ці події з підозрілими HTTP‑запитами, що містять нестандартні URI з
?і складними патернами.
- звертати увагу на повторювані падіння worker‑процесів, сигнали
- Переконатися, що на серверах увімкнено ASLR на рівні операційної системи як додатковий рубіж захисту від RCE, навіть після встановлення патчів.
Ключова дія для власників інфраструктури на базі NGINX — у найкоротші строки оновити NGINX Plus, NGINX Open Source і пов’язані продукти до версій із виправленнями CVE-2026-42945 та супутніх вразливостей, а за затримок з оновленням негайно провести ревізію rewrite‑правил із заміною безіменних захоплень на іменовані в усіх конфігураціях, доступних з інтернету.