13. mai parandati haavatavus populaarse veebiserveri nginx'is, mis on mĂ”eldud koormatud sĂŒsteemide jaoks: CVE-2026-42945, mis vĂ”ib potentsiaalselt viia RCE-ni. Haavatavus ilmus 18 aastat tagasi (2008. aastal) versioonis 0.6.27.
Kohaliku serveri konfiguratsioonis peab olema teatud kombo direktiive, mis ei pruugi kÔikjal esineda, kuid vÔib esineda jÀrgmine:
rewrite ^(.*) \/new?c=1;
set $myvar $1;
return 200 $myvar;
Olulised detailid:
- esimesena tuleb direktiiv rewrite, kus (esimene argument) regulaarselt vĂ€ljendatud ja vĂ€ljajĂ€tmisi sisaldav parameeter (midagi sulgudes) asendatakse (teise argumendiga) teega, mis sisaldab kĂŒsimĂ€rki;
- direktiiv set (selle asemel vÔib kasutada ka teist rewrite'i vÔi if-i), mis kasutab allika pereselgelt vÀljajÀtmist (antud juhul $1).
Haavatavus töötab jÀrgmiselt:
- esimene direktiiv rewrite, kui see puutub kĂŒsimĂ€rgiga kokku, seadistab sisemise flagi is_args, mis tĂ€hendab, et "praegu kogume GET parameetreid asendatud URL-ist, kĂ”ik tuleb escapesida", ja (see ongi vea tuum) unustab selle flagi oma töö lĂ”pus lĂ€htestada;
- jĂ€rgneva set-kĂ€sk, kui mÀÀratakse vÀÀrtust $myvar, rakendab ekslikult varem seadistatud is_args'i ja kirjutab my_var'i escape'itud vÀÀrtuse vĂ€ljavalitud parameetrist $1; probleemiks on see, et $myvar'i jaoks eraldatud puhversĂŒsteem luuakse varem, juba enne asenduste tegemist, ja selle pikkus arvestatakse is_args=0, mis tĂ€hendab, et escape'itud vÀÀrtus osutub pikemaks kui eraldatud puhver, mistĂ”ttu kirjutamine toimub vĂ€ljaspool eraldatud puhversĂŒsteemi ja muudab serveri andmestruktuure. Selleks, et see juhtuks, piisab, kui saata pĂ€ring, mis sisaldab escape'imist vajavaid sĂŒmboleid, nĂ€iteks plussmĂ€rke, regulaaravaldiste parameetrimÀÀra kohas.
Kui hostil pole ALSR-i, siis seda haavatavust saab kasutada kaugtöötluse koodi tÀitmiseks nginx'i töökeskkonna Ôigustes. PoC (seal ei ole puhtalt exploit'i, demonstreerimine liivakastis).
Haavatavus on parandatud stabiilses haru nginx 1.30.1 ja uues arendusversioonis 1.31.0. link kommitile.
On tÀhelepanuvÀÀrne, et 14 aastat tagasi (2012. aastal) sarnane viga oli juba parandatud teises kohas kÔrval.
ââ-
F5 veebisaidil on soovitus ajutiselt leevendada haavatavust, kui nginx versiooni kiiresti uuendada ei Ă”nnestu â asendage nimeta parameetrid nimetatud parameetritega, ja sel juhul, nende sĂ”nul, haavatavus ei ilmu. NĂ€ide sealt:
oli: rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
on: rewrite ^/users/(?<user_id>[0-9]+)/profile/(?<section>.*)$ /profile.php?id=$user_id&tab=$section last;
Teave haavatavuse kohta esitas Zhenpeng (Leo) Lin DepthFirst'ist. Lisaks teatas ta ka jÀrgmistest probleemidest, mis on samuti parandatud:
- CVE-2026-40701 (kommitt) use-after-free, kui kasutatakse ssl_verify_client+ssl_ocsp (nÀib, et ilma RCE-ta)
- CVE-2026-42934 (kommitt) mĂ€lu ĂŒletamine utf-8 parseris spetsiifilistes tingimustes, mis vĂ”ib pĂ”hjustada vĂ€ikese andmeleket vĂ”i tööprotsessi krahhi
- CVE-2026-42946 (kommitt) liigne mĂ€lulubamine ja mĂ€lu ĂŒletamine scgi/uwsgi moodulite kasutamisel, probleem ilmneb pahatahtliku tagaplaani (upstream) olemasolul, kasutades nimetatud protokolle, vĂ”i man-in-the-middle suhtlemisel tagaplaaniga, mis vĂ”ib viia nginx mĂ€lu lugemise vĂ”i tööprotsessi krahhini.
Allikas: linux.org.ru
