V komerčním Nginx Plus i otevřeném Nginx Open byla objevena kritická bezpečnostní chyba, která dostala označení CVE-2026–42945 a skóre CVSS o hodnotě 9,2. Chyba dostala jméno Nginx Rift a už byly zaznamenány konkrétní útoky, které problém zneužívají k napadení serveru.
Jde o klasické přetečení zásobníku v modulu ngx_http_rewrite_module, který je standardní součástí obvyklých instalací webového serveru Nginx, který se používá jako klasický HTTP server, reverzní proxy, load balancer a podobně.
Příčina problému spočívá v tom, jak Nginx zpracovává volby rewrite, které kombinují nepojmenované zachytávací skupiny PCRE (známé jako $1, $2) s nahrazujícím řetězcem obsahujícím otazník, pokud za nimi v rámci stejného rozsahu následuje další volba rewrite, if nebo set.
Objeví-li se v nahrazovaném textu otazník, nastaví se ve skriptovacím jádře interní příznak, který se již nikdy nevynuluje. Následný výpočet délky pak už nebere v úvahu escapované znaky v URI, a vytvoří tak zásobník dimenzovaný pro původní počet bajtů. Znaky jako +, % a & se však při kopírování rozšiřují vždy o dva escapovací bajty. Výsledkem je zápis, který deterministicky překročí konec přiděleného bufferu, přičemž útočník může obsah paměti přesně ovládat pomocí volaného URI.
Zneužití chyby v současných systémech naštěstí komplikuje ASLR (Address Space Layout Randomization), který je obvykle ve výchozím stavu zapnutý. Ověřit je to možné pomocí sysctl kernel.randomize_va_space. Dvojka ve výstupu značí plnou ochranu.