Две десетилетия уязвимости в Nginx: Защо NGINX Rift те принуждава да патчнеш веднага

Две десетилетия уязвимости в Nginx: Защо NGINX Rift те принуждава да патчнеш веднага

Май 14, 2026 nginx security cve-2026-42945 nginx rift web server vulnerabilities infrastructure security buffer overflow rewrite module zero-day response production security

Двадесет години скрити грешки в Nginx: Защо NGINX Rift изисква незабавно обновяване

Всички знаем, че старият код крие опасности. Ами когато този код е в един от най-популярните уеб сървъри на света – и е там от 18 години?

F5 пусна кръпки за четири уязвимости в Nginx. Най-тежката – CVE-2026-42945, наречена NGINX Rift от откривателите ѝ в depthfirst – кара всеки админ да грабне скриптовете за ъпдейт.

Защо е толкова критична?

Разгледаме подробно проблема:

Грешката: Heap buffer overflow в rewrite модула. Съществува от версия 0.6.27 (2008 г.). Тогава още нямаше Docker, смартфоните бяха рядкост, а Nginx едва набираше популярност пред Apache.

Как се атакува: Достатъчна е една зла HTTP заявка. Без сложни вериги, без фишинг или кражба на пароли. Просто я изпрати към сървъра.

Последиците: Без ASLR – пълен remote code execution. С ASLR – сигурен denial of service чрез непрекъснати рестартове на worker процесите.

CVSS: 9.2 – критично ниво, почти максимум.

Как се случи след толкова време?

Nginx rewrite модулът работи с PCRE за URL шаблони. Когато използваш неназовани capture групи ($1, $2) и след тях още rewrite, if или set, кодът прелива heap паметта. Класически buffer overflow, който е избягал ревютата.

Дори супер-популярни open-source проекти като Nginx не са защитени от древни буболечки. Сервърите са милиони – рискът е огромен.

Кои трябва да ъпдейтнат веднага

NGINX Plus: За R32–R36 – R32 P6 или R36 P4.

Nginx Open Source: Версии 1.0.0–1.30.0 са застрашени. Премини на 1.30.1 или 1.31.0.

Единственото изключение: Ако си на 0.6.27–0.9.7 (стари EOL), няма кръпки. Пълна миграция – без оправдания.

Временна защита, ако не можеш да ъпдейтнеш

В change-freeze или с legacy зависимости? Смени неназованите capture групи с назовими.

Грешно:

rewrite ^/user/([0-9]+)$ /profile?id=$1 last;

По-безопасно (временно):

rewrite ^/user/(?<id>[0-9]+)$ /profile?id=$id last;

Това спира тригъра, но не е истинско решение. Ъпдейтът е приоритет.

Останалите три CVE

Освен NGINX Rift, F5 поправи:

  • CVE-2026-42946 (CVSS 8.3): Прекомерна алокация памет в SCGI/uWSGI – DoS при proxy настройки.
  • CVE-2026-40701 (CVSS 6.3): Use-after-free в SSL модула при ssl_verify_client и ssl_ocsp.
  • CVE-2026-42934 (CVSS 4.8): Out-of-bounds read в charset модула.

Не са толкова спешни, но ги оправи в следващия maintenance.

Уроци за сигурността

Този случай ни напомня:

  1. Популярност ≠ безопасност. Nginx е навсякъде, но бубото се скри 18 години.
  2. Старият код не е "тестуван". Просто е натрупал проблеми.
  3. Сигурността зависи от най-бавния ъпдейт. Един пропуснат сървър руши всичко.
  4. Мониторингът спасява. Дори с ASLR, DoS е мигновен.

Заключение

Ако ползваш Nginx (Open Source или Plus), третирай тези кръпки като спешност. NGINX Rift комбинира древност, простота и критичност – надмини всичко друго.

Ъпдейтни тази седмица. Тествай в staging, но не чакай в production. Рискът от забавяне е по-голям от ъпдейта на стабилен софтуер.

Аудитни конфигурациите си – особено rewrite правилата. Провери версиите в инфраструктурата. Бъди нащрек.

Read in other languages:

RU EL CS UZ TR SV FI RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN