Две десетилетия уязвимости в Nginx: Защо NGINX Rift те принуждава да патчнеш веднага
Двадесет години скрити грешки в 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.
Уроци за сигурността
Този случай ни напомня:
- Популярност ≠ безопасност. Nginx е навсякъде, но бубото се скри 18 години.
- Старият код не е "тестуван". Просто е натрупал проблеми.
- Сигурността зависи от най-бавния ъпдейт. Един пропуснат сървър руши всичко.
- Мониторингът спасява. Дори с ASLR, DoS е мигновен.
Заключение
Ако ползваш Nginx (Open Source или Plus), третирай тези кръпки като спешност. NGINX Rift комбинира древност, простота и критичност – надмини всичко друго.
Ъпдейтни тази седмица. Тествай в staging, но не чакай в production. Рискът от забавяне е по-голям от ъпдейта на стабилен софтуер.
Аудитни конфигурациите си – особено rewrite правилата. Провери версиите в инфраструктурата. Бъди нащрек.