Më 13 maj u rregullua një vulnerabilitet në serverin e njohur web nginx, i cili përdoret për sisteme me ngarkesë të lartë: CVE-2026-42945, potencialisht duke çuar në RCE. Vulnerabiliteti u shfaq 18 vjet (në vitin 2008) në versionin 0.6.27.
Për të shfrytëzuar këtë, në konfigurimin e serverit duhet të ketë një kombinim të caktuar direktivash, jo domosdoshmërisht të pranishme te të gjithë, por ndonjëherë të pranishme, për shembull:
rewrite ^(.*) /new?c=1;
set $myvar $1;
return 200 $myvar;
Detajet thelbësore:
- së pari, vjen direktiva rewrite, ku (argumenti i parë) një shprehje e rregullt me parametrin e kapur (diçka në kllapa) zëvendësohet me (argumentin e dytë) një rrugë që përmban një pyetje;
- direktiva set (në vend të saj gjithashtu mund të funksionojë një rewrite i dytë ose if), e cila përdor parametrin e kapur nga rruga e riperpunuar (në këtë rast $1).
Vulnerabiliteti funksionon si:
- direktiva e parë rewrite, kur takon shenjën e pyetjes, vendos një flamur të brendshëm is_args, që do të thotë "tani po mbledhim parametrat get për url-në e zëvendësuar, duhet të gjithçka të jetë e mbrojtur", dhe (këtu është problemi) harrohet të reset-ojë këtë flamur në fund të punës së saj;
- direktiva e ardhshme set, kur formon vlerĂ«n pĂ«r $myvar, gabimisht aplikon is_args tĂ« vendosur mĂ« parĂ«, dhe shkruan nĂ« my_var vlerĂ«n e mbuluar tĂ« parametrave tĂ« veçantĂ« $1; problemi Ă«shtĂ« se buferi pĂ«r $myvar krijohet mĂ« herĂ«t, para ekzekutimit tĂ« zĂ«vendĂ«simeve, dhe gjatĂ«sia e tij llogaritet me is_args=0, pra vlera e mbuluar del mĂ« e gjatĂ« se buferi i rezervuar, duke bĂ«rĂ« qĂ« shkruarja tĂ« ndodhĂ« jashtĂ« buferit tĂ« rezervuar nĂ« struktura tĂ« tjera tĂ« tĂ« dhĂ«nave tĂ« serverit. Mjafton tĂ« dĂ«rgoni njĂ« kĂ«rkesĂ« me karaktere qĂ« i nĂ«nshtrohen mbulimit, siç janĂ« shenjat âplusâ, nĂ« vendin e rezervimit tĂ« parametrave tĂ« shprehjes rregulluese.
Nëse në host nuk ka ALSR, atëherë kjo vulnerabilitet mund të shfrytëzohet për ekzekutimin e kodit të largët me të drejtat e procesit nginx, është PoC (atje nuk ka eksploat të pastër, një demonstrim në rërë).
Vulnerabiliteti është korrigjuar në degën stabil Nginx 1.30.1, dhe në zhvillimin e ri 1.31.0. link për commit.
Dukshëm, 14 vjet më parë (2012) një gabim i ngjashëm ka qenë tashmë i korrigjuar në një vend tjetër pranë.
ââ-
NĂ« faqen F5 ka njĂ« rekomandim pĂ«r neutralizimin pĂ«rkohĂ«sor tĂ« njĂ« vunerabiliteti nĂ« rast se versioni i nginx-it nuk mund tĂ« pĂ«rditĂ«sohet shpejt â duhet tĂ« zĂ«vendĂ«soni parametrat e paemĂ«ruar me parametra tĂ« emĂ«ruar, dhe nĂ« kĂ«tĂ« rast, sipas tyre, vulnerabiliteti nuk do tĂ« shfaqet. Shembulli nga aty:
ishte: rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
u bë: rewrite ^/users/(?<user_id>[0-9]+)/profile/(?<section>.*)$ /profile.php?id=$user_id&tab=$section last;
Informacioni mbi vunerabilitetin u sigurua nga Zhenpeng (Leo) Lin nga DepthFirst. Për më shumë, ai gjithashtu raportoi për problemet e tjera që janë korrigjuar:
- CVE-2026-40701 (komit) përdorimi pas lirimit gjatë përdorimit të ssl_verify_client+ssl_ocsp (duke dukur se pa RCE)
- CVE-2026-42934 (komit) leximi jashtë kufijve të tamponit në parser-in utf-8 në rrethana specifike, mund të çojë në një rrjedhje të vogël të të dhënave ose në një crash të procesit të punës
- CVE-2026-42946 (komit) alokim i tepruar i memories dhe lexim jashtë kufijve të tamponit gjatë përdorimit të moduleve scgi/uwsgi, problemi shfaqet në prani të një backend-i të keq (upstream) përmes protokollet e përcaktuara, ose gjatë mitm të kanalit të komunikimit me backend-in, mund të çojë në leximin e memories nga nginx ose në crash të procesit të punës
Burimi: linux.org.ru
