← Tilbake til listen

Nginxs 18-årige lacuna CVE-2026-42945: Prinsipp PoC rehabilitering komplett

itadol5j

Nginx CVE-2026-42945

🚨 Nginx Infiltration 18 år høy risiko Gap CVE-2026-42945: Rationale, PoC og rehabiliteringsprogram

Institutt for sikkerhetsforskning, 13. mai 2026DybdeførsteUnited F5.CVE-2026-42945:)

  • CVSS v4.0 Vurdering 9.2: Høy-risiko sløyfehull
  • Bufferspill: kan føre til ekstern kode utføres (RCE)
  • Hider 18 årSkrive kode siden 2008 Bibliotek
  • 975 millioner steder som påvirker verdenKina mer enn 2.54 millioner nettsteder berørt
  • PoC gjort offentligChiansin har lykkes å gjenopprette

Dette er...NGINX Core ModuleEt historisk sløyfehull der angriperne bare sender en spesielt utformet HTTP-forespørsel om å ta over serveren eksternt.

Sammendrag av hull

Grunnleggende informasjon

Hole egenskaper Detaljer
Hullnummer CVE-2026-42945
CVSS vurdering v4.0: 9.2 V3.1
Hull type Stack-basert buffer Overstrøm
Type trussel Ekstern kodeutførelse (RCE), nektelse av tjenester (DoS)
Betingelser for bruk Trenger ikke autentisering, bare bygge HTTP-forespørsler
Effektkomponent ngx http rewrite modul (NGINX kjerne innebygd modul)
Discovery Agency Dybde først.

Omfanget av virkningen

  • 97,5 millioner nettsteder globaltEffekt
  • Kina 2.54 millioner nettstederEffekt
  • NGINX hosts ca. 1/3 av den globale nettsidenEffekten er enorm.
  • Kode fraÅr 2008Skriving, lurking18 år

⚠️ Trigger tilstand

Tre betingelser må oppfylles samtidig.

Gap utløser nødvendigKonfigurere grupper som oppfyller bestemte betingelser:)

Betingelser Annotasjoner Eksempel:
PCRE-opptak uten navn Omskriv kommandoopptak med navngitt gruppe En, to, tre...
2. Bytt ut strengen med spørsmålstegn Bytt ut streng inneholder? tegn /profile.php?id=$1&tab=2
3. Etterfølgende/om/sett Følg andre kommandoer etter instruksjoner {...}

Eksempel på sårbarhet

# 易受攻击配置
rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
# 后跟其他指令
if ($arg_debug) {
    set $debug_flag 1;
}

Denne konfigurasjonen oppfyller tre betingelser:Opptak uten navn $ 1/$2Jeg vet ikke.Erstatningsstrenginnhold?Jeg vet ikke.Motor hvis kommandoJeg vet ikke.

Det er en god ide.

Ulemper mellom to faser

NGINX skriptmotorBruk av to faser:

  • Fase I: Beregn nødvendig bufferstørrelse
  • Fase II: Kopier data til buffer

Kjernen i hullet erer args tag management feil:)

Fase er args status Prosesslogikk Resultat
Lengdeberegningsfase =0 Return original fangstlengde Undervurdering av bufferstørrelse
Datareproduksjonsfase =1 Ring ngx unnslippe uri med 3 byte per byte Bufferspill

Spesifikke prosesser

  1. Omskriv kommandoInkludere navngitt fange $ 1/$2
  2. Erstatt strengInkludert? Trigger er args = 1
  3. Lengdeberegningsfase: ny initiert undermotor, er args = 0
  4. Returnerer opprinnelig lengde: Små hauger av buffersoner fordelt
  5. Datareproduksjonsfase: bruk hovedmotor, er args = 1
  6. Ring ngx escape uri: utvidede bytes, sløsing ut av buffersonen
  7. Angriper kontrollerbare URI-dataSkrive Spill Area

Utnyttelse

Cross Feng Shui:)

  • POST-forespørselJet-reaktorminne (fordi URI ikke kan inneholde nullabytes)
  • Spill dataDisrupsjon av tilstøtende oppsamlingspeker ngx pol t
  • Fake ngx basseng rengjøring s, peker på systemet()
  • Basseng når ødelagtTrigger system ()
  • Oppnå RCE

ASLR-påvirkning

  • ASLR aktivertAndre arrangører
  • ACLR Deaktiver: ekstern kodeutførelse (RCE)

Effektversjon

NGINX Open Source

Utgaveområde Fix versjon
0.6.27 – 1.30.0 1.31.0, 1.30.1

NGINX Plus

Utgaveområde Fix versjon
R32 – R36 R36 P4, R35 P2, R32 P6

Andre berørte komponenter

  • NGINX Institute Manager2.16 – 2.21.1
  • NGINX App produksjon WAF:4.9 – 5.8.0
  • NGINX Informasjonsleverandør: 3.5.0 – 5.4.1
  • NGINX Gateway stoff: 1.3.0 – 2.5.1
  • F5 Dos for NGINX: 4.8.0

🔥PoC Status

PoC gjort offentlig

PC-bruksmetode

# 构建容器
./setup.sh

# 启动易受攻击的 NGINX 服务器
docker compose -f env/docker-compose.yml up

# 执行 PoC 获取 Shell
python3 poc.py --shell

Rehabiliteringsprogram

Metode 1: Oppgradering

# 升级到修复版本
NGINX Open Source >= 1.31.0
NGINX Open Source >= 1.30.1
NGINX Plus >= R32 P6
NGINX Plus >= R36 P4

# 升级后重启 NGINX
nginx -s reload

Metoder 2: Endring av konfigurasjonen

WillOpptaksgruppe uten navnBytt ut medNavnefangstgruppe:)

# 易受攻击配置(未命名捕获)
rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;

# 修复后配置(命名捕获)
rewrite ^/users/(?[0-9]+)/profile/(?.*)$ /profile.php?id=$user_id&tab=$section last;

NavnefangstgruppeDet vil ikke utløse et løkkehull.

Metode 3: Sjekk oppsett

Sjekk for sårbar konfigurasjon:

# 搜索易受攻击的 rewrite 指令
grep -E "rewrite.*\$[0-9]+.*\?.*(rewrite|if|set)" /etc/nginx/nginx.conf
grep -rE "rewrite.*\$[0-9]+.*\?.*(rewrite|if|set)" /etc/nginx/conf.d/

Oppdagingsprosessen

Automatisert systemfunn

DybdeførsteSikkerhetsanalysesystem:

  • innen 6 timerFem spørsmål funnet.
  • 4 bekreftet av NGINX
  • CVE-2026-42945Det er det verste hullet.
  • Så langt tilbake til 2008finnes i nesten alle standardbyggversjoner

Andre relevante sløyfehull

  • CVE-2026-42946: minneskade
  • CVE-2026-40701: minneskade
  • CVE-2026-42934: minneskade

Sammendrag

CVE-2026-42945Det er NGINX, et høyrisikosløyfehull i historien:

  • 18 år: skriftlig kode siden 2008 Bibliotek
  • CVSS 9.2: Buffer spill som kan føre til RCE
  • Trigger-betingelse: omskriv kommando bruker navngitt fangst + erstatte strenginnhold? + og andre kommandoer
  • Innvirkningsområde: 9,75 millioner steder globalt, 2.54 millioner steder i Kina
  • PoC publisert: GitHub lager + Qianqin har blitt reproducert
  • Rehabiliteringsprogram: oppgradering eller fangst etter navn Gruppe

I 18 år var det en potensiell lekkasje, og det ble anbefalt at konfigurasjonen ble oppgradert eller modifisert så snart som mulig.

Offisielle kunngjøringer:)https://my.f5.com/manage/s/article/K000161019

PoC Warehouse:)https://github.com/DepthFirstDisclosions/Nginx-Rifft

Teknisk analyse:)https://dybdefirst.com/forskning/nginx-rift