Netrvalo dlouho po odhalení 18letého potenciálního RCE, kdy byla odhalena další, CVE-2026-9256, která tentokrát přežila ještě déle — 21 let, od verze 0.1.17 vydané na začátku roku 2005.
Pro zneužití zranitelnosti je vyžadováno, aby v konfiguraci serveru byla direktiva rewrite, která má:
- v prvním argumentu překrývající se definitive části regulárního výrazu,
- ve druhém se používá dvě nebo více z nich, ale neexistují žádné proměnné,
- přitom je buď uveden typ „redirect“, nebo parametry ve druhém argumentu se nacházejí za otazníkem.
Příklady:
rewrite ^\/((.*))$ http:\/\/127.0.0.1:8080\/$1$2 redirect;
rewrite ^\/((.*))$ http:\/\/127.0.0.1:8080\/?$1$2;
Oba dostanou přetečení zásobníku při zpracování požadavku „\/++++++++++++++++++++++++++++++“.
Jak bylo zmíněno u předchozí zranitelnosti, v tomto případě se vypočítaná délka zásobníku nemusí shodovat se skutečným množstvím zapsaných dat — při výpočtu délky nešlo vždy zohlednit možné escapování.
Výše uvedené může vést k pádu pracovního procesu nginx, a při absenci ALSR k RCE. Jako zmírňující okolnost lze zmínit ještě menší pravděpodobnost výskytu zranitelných konstrukcí v konfiguraci než v minulosti.
Chyba byla opravena ve verzích 1.30.2 a 1.31.1 (commit opravy).
Zdroj: linux.org.ru
