Ubrzo nakon otkrića 18-godišnjeg potencijalnog RCE-a otkriveno je još jedno, CVE-2026-9256, ovaj put postojalo je još duže — 21 godinu, počevši od verzije 0.1.17, objavljene početkom 2005. godine.
Za iskorištavanje ranjivosti u konfiguraciji poslužitelja potrebna je direktiva rewrite koja:
- ima preklapajuće parametre regularnog izraza u prvom argumentu,
- u drugom koristi dva ili više njih, ali ne koristi varijable,
- pri čemu je ili naveden tip „redirect“, ili su parametri u drugom argumentu iza upitnika.
Primjeri:
rewrite ^\/((.*))$ http:\/\/127.0.0.1:8080\/$1$2 redirect;
rewrite ^\/((.*))$ http:\/\/127.0.0.1:8080\/?$1$2;
Oba će doživjeti preopterećenje (buffer overflow) prilikom obrade zahtjeva „\/++++++++++++++++++++++++++++++“.
Kao i kod prethodne ranjivosti, u ovom slučaju proračunska duljina bafera možda se ne poklapa s stvarnom količinom podataka koji su u njega zapisani — prilikom izračuna duljine nije svugdje uzeto u obzir moguće escape-anje.
Navedeno može dovesti do rušenja radnog procesa nginx-a, a u slučaju nedostatka ALSR-a — do RCE-a. Kao olakotnu okolnost može se istaknuti i manja vjerojatnost susreta s ranjivim konstrukcijama u konfiguraciji nego posljednji put.
Greška je ispravljena u verzijama 1.30.2 i 1.31.1 (commit ispravke).
Izvor: linux.org.ru
