18-Ärigt RCE i nginx (CVE-2026-42945)

Den 13 maj ÄtgÀrdades en sÄrbarhet i den populÀra webbservern nginx för tunga system: CVE-2026-42945, som potentiellt kan leda till RCE. SÄrbarheten uppstod för 18 Är sedan (2008) i version 0.6.27.

För att utnyttja den krÀvs en viss kombination av direktiv i serverkonfigurationen, inte nödvÀndigtvis för alla, men förekommande ibland, till exempel:
rewrite ^(.*) /new?c=1;
set $myvar $1;
return 200 $myvar;

VĂ€sentliga detaljer:

  • först kommer direktivet rewrite, dĂ€r (den första argumentet) ett reguljĂ€rt uttryck med en markerad parameter (nĂ„got inom parenteser) ersĂ€tts med (den andra argumentet) en vĂ€g som innehĂ„ller ett frĂ„getecken;
  • direktivet set (istĂ€llet kan den andra rewrite eller if ocksĂ„ anvĂ€ndas), som anvĂ€nder den markerade parametern frĂ„n den ursprungliga skrivna vĂ€gen (i det hĂ€r fallet $1).

SÄrbarheten fungerar sÄ hÀr:

  • det första rewrite-direktivet, nĂ€r det stöter pĂ„ ett frĂ„getecken, sĂ€tter en intern flagga is_args, vilket betyder "nu samlar vi in GET-parametrar för den skrivna URL:en, allt mĂ„ste escaping", och (detta Ă€r kĂ€rnan i felet) glömmer att Ă„terstĂ€lla denna flagga i slutet av sin bearbetning;
  • det följande direktivet set, nĂ€r det formar vĂ€rdet för $myvar, tillĂ€mpar felaktigt den tidigare instĂ€llda is_args, och skriver in my_var det escaping-vĂ€rde som den markerade parametern $1; problemet Ă€r att bufferten för $myvar tilldelas tidigare, redan före genomförandet av substitutionerna, och dess lĂ€ngd berĂ€knas med is_args=0, vilket innebĂ€r att det escaping vĂ€rdet blir lĂ€ngre Ă€n den tilldelade bufferten, vilket gör att skrivning sker utanför den tilldelade bufferten in i andra serverdatastrukturer. För att detta ska hĂ€nda Ă€r det tillrĂ€ckligt att skicka en begĂ€ran med tecken som ska escaping, till exempel plustecken, pĂ„ platsen för den markerade parametern i det reguljĂ€ra uttrycket.

Om det inte finns nÄgon ALSR pÄ vÀrden kan denna sÄrbarhet utnyttjas för fjÀrrkodexekvering med rÀttigheterna för nginx-arbetsprocessen, det finns PoC (det Àr inte ett rent exploit, utan en demonstration i sandlÄdan).

SÄrbarheten har ÄtgÀrdats i stabila grenen av nginx 1.30.1, och i den nya utvecklarversionen 1.31.0. lÀnk till commit.

AnmÀrkningsvÀrt Àr att för 14 Är sedan (2012) har ett liknande fel redan ÄtgÀrdats pÄ ett annat stÀlle i nÀrheten.

——-

PĂ„ F5:s webbplats finns en rekommendation för tillfĂ€llig neutralisering av sĂ„rbarheten om det inte gĂ„r att snabbt uppdatera versionen av nginx – man bör byta ut obenĂ€mnda parameterar till benĂ€mnda, och i det fallet, enligt deras uppgifter, kommer sĂ„rbarheten att inte upptrĂ€da. Exempel dĂ€rifrĂ„n:
var: rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
blev: rewrite ^/users/(?[0-9]+)/profile/(?

.*)$ /profile.php?id=$user_id&tab=$section last;

Information om sÄrbarheten tillhandahölls av Zhenpeng (Leo) Lin frÄn DepthFirst. Dessutom rapporterade han om följande problem som ocksÄ har ÄtgÀrdats:

  • CVE-2026-40701 (commit) anvĂ€ndning efter frigörande vid anvĂ€ndning av ssl_verify_client+ssl_ocsp (verkar utan RCE)
  • CVE-2026-42934 (commit) lĂ€sning utanför bufferten i utf-8 parsern under specifika omstĂ€ndigheter, kan leda till en liten datalĂ€cka eller krasch av arbetsprocessen
  • CVE-2026-42946 (commit) överdriven minnesallokering och lĂ€sning utanför bufferten vid anvĂ€ndning av scgi/uwsgi-moduler, problemet upptrĂ€der vid nĂ€rvaron av en illasinnad backend (upstream) genom angivna protokoll, eller vid mitm av kommunikationskanalen med backenden, kan leda till lĂ€sning av nginx-minne eller krasch av arbetsprocessen

KĂ€lla: linux.org.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster