RCE 18-vjeçare në nginx (CVE-2026-42945)

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

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster