Bezpečnostní chyba Nginx Rift umožňuje vzdálené spuštění kódu a už je zneužívána

Sdílet

Nginx logo Autor: Nginx, Inc.

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.

Našli jste v článku chybu?

Autor zprávičky

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.



Nejnovější články