← Takaisin luetteloon

Nginxin 18 vuoden lacuna CVE-2026-42945: Periaate PoC Kuntoutus valmis

itadol5j

Nginx CVE-2026-42945

🚨 Nginx Infiltration 18-year High Risk Gap CVE-2026-42945: Rationale, PoC and Rehabilitation Program

Turvallisuustutkimuslaitos, 13. toukokuuta 2026Syvyys ensinUnited F5.CVE-2026-42945:

  • CVSS v4.0 Luokitus 9.2: korkean riskin porsaanreikä
  • Puskurivuoto: voi johtaa etäkoodin suorittamiseen (RCE)
  • 18 vuoden piilottaminen: Kirjoita koodi vuodesta 2008 Kirjasto
  • 975 miljoonaa maailmaan vaikuttavaa aluetta: Kiina yli 2,54 miljoonaa verkkosivustoja vaikuttaa
  • PoC julkistaa: Chiansin on onnistunut toipua

Tämä on...NGINX-ydinmoduuliHistoriallinen porsaanreikä, jossa hyökkääjät yksinkertaisesti lähettää erityisesti suunniteltu HTTP pyyntö ottaa palvelimen etäältä.

Yhteenveto puutteista

Perustietoa

Reiän ominaisuudet Yksityiskohdat
Reiän numero CVE-2026-42945
CVSS-luokitus v4.0: 9,2 V3.1: 8,1
Reikätyyppi Pinopohjainen puskurin ylivuoto
Uhkatyyppi Etäkoodin suoritus (RCE), palvelujen kieltäminen
Käyttöehdot Ei tarvitse todentamista, vain rakentaa HTTP-pyyntöjä
Iskukomponentti ngx http: n uudelleenkirjoitusmoduuli (NGINX: n ytimen sisäänrakennettu moduuli)
Discovery Agency Syvyys ensin.

Vaikutusten laajuus

  • 97,5 miljoonaa kohdetta maailmanlaajuisestiVaikutus
  • Kiina 2,54 miljoonaa verkkosivustoaVaikutus
  • NGINX isännöi noin 1/3 maailmanlaajuisen sivustonVaikutus on valtava.
  • Koodi alkaenVuosi 2008Kirjoittaa, vaanii18 vuotta

...

Kolme ehtoa on täytettävä samanaikaisesti.

Riitta vaaditaanMäärittele erityisedellytykset täyttävät ryhmät:

Edellytykset Huomautukset Esimerkki:
Nimetön PCRE-sieppaus Kirjoita komentotallennus uudelleen nimettömällä ryhmällä Yksi, kaksi, kolme...
2. Korvaa merkkijono kysymysmerkillä Korvaa merkkijono sisältää ? merkit /profile.php?id=$1&tab=2
3. Myöhempi/jos/asetettu Seuraa muita komentoja ohjeiden jälkeen {...}

Esimerkki haavoittuvuudesta

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

Tämä kokoonpano täyttää kolme ehtoa:Nimetön kaappaus $ 1/$2En tiedä.Korvaa merkkijonon sisältö?En tiedä.Tallenna, jos komentoEn tiedä.

Hyvä ajatus.

Kahden vaiheen väliset epäjohdonmukaisuudet

NGINX-moottoriKahden vaiheen käyttö:

  • Vaihe I: Laske vaadittu puskurikoko
  • Vaihe II: Kopioi tiedot puskuriin

Reiän ydin onon args tagin hallintavirhe:

Vaihe on argsin tila Prosessilogiikka Tulos
Pituuslaskentavaihe 0, 0 Palauta alkuperäinen tallennuspituus Puskurin koon aliarviointi
Tietojen toistovaihe = 1 Soita ngx paeta uri kanssa 3 tavua per tavu Puskurivuoto

Erityiset prosessit

  1. Kirjoita komento uudelleenSisällytä nimetön kaappaus $ 1/$2
  2. Korvaa merkkijonoMukaan lukien? Trigger on args = 1
  3. Pituuslaskentavaihe: uusi alustettu alamoottori, on args = 0
  4. Palauttaa alkuperäisen pituuden: Pienet kasat puskurivyöhykkeitä jaettu
  5. Tietojen toistovaihe: käytä päämoottoria, on args = 1
  6. Soita ngx paeta uri: laajennettu tavuja, vuotaa ulos puskurivyöhykkeeltä
  7. Attacker Controlledable URI DataKirjoitetaan roiskealuetta

Käyttö

Cross Feng Shui:

  • POST-pyynnön esittäjäJet-reaktorin muisti (koska URI ei voi sisältää nullatavuja)
  • TiedotViereisen noutopisteen häiriö ngx pol t
  • Väärä ngx allas siivous s, osoittaa järjestelmään()
  • Pooli tuhottaessaLaukaiseva järjestelmä()
  • Saavuttaa RCE

ASLR-vaikutus

  • SLR käytössäMuu järjestäjä
  • ASLR Poista käytöstä: etäkoodin suoritus (RCE)

Vaikutusten versio

NGINX Open Source

Version vaihteluväli Korjaa versio
0, 6, 27 1.31.0, 1.30.1

NGINX Plus

Version vaihteluväli Korjaa versio
R32 R36 R36 P4, R35 P2, R32 P6

Muut vaikuttavat komponentit

  • NGINX-instituutin johtaja2, 16 . 21, 1
  • NGINX App Production WAF:4.9
  • NGINX-tietourakoitsija3.5.0 5.4.1
  • NGINX Gateway Fabric: 1.3.0 - 2.5.1
  • F5 Dos for NGINX: 4.8.0

🔥PoC Status

PoC julkistaa

PC:n käyttömenetelmä

# 构建容器
./setup.sh

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

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

Kuntoutusohjelma

Menetelmä 1: Päivitys

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

# 升级后重启 NGINX
nginx -s reload

Menetelmät 2: Konfiguroinnin muuttaminen (rajoittamistoimenpiteet)

WillNimeämätön Capture GroupKorvaaNimi Capture Group:

# 易受攻击配置(未命名捕获)
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;

Nimi Capture GroupSe ei laukaise porsaanreikää.

Menetelmä 3: Tarkistuskokoonpano

Haavoittuvassa asemassa olevan kokoonpanon tarkistaminen:

# 搜索易受攻击的 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/

Hakuprosessi

Automaattinen järjestelmän löytö

Syvyys ensinTurva-analyysijärjestelmä:

  • 6 tunnin kuluessaViisi kysymystä löytyi.
  • 4 vahvistanut NGINX
  • CVE-2026-42945Se on pahin reikä.
  • Jo vuonna 2008on olemassa lähes kaikissa standardikoossa versioissa

Muut asiaankuuluvat porsaanreiät

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

Yhteenveto

CVE-2026-42945Se on NGINX, suuren riskin porsaanreikä historiassa:

  • 18 vuotta: kirjallinen koodi vuodesta 2008 Kirjasto
  • CVSS 9.2: Puskurivuodot, jotka voivat johtaa RCE:hen
  • Trigger ehto: kirjoittaa komento käyttää nimetön tallennus + korvata merkkijonon sisältö? + ja muut komennot
  • Vaikutusten laajuus: 9,75 miljoonaa kohdetta maailmanlaajuisesti, 2,54 miljoonaa kohdetta Kiinassa
  • PoC julkaistu: GitHub-varasto + Qianqin on jäljennetty
  • Kuntoutusohjelma: päivitys tai saalis nimen mukaan Ryhmä

18 vuoden aikana oli mahdollinen vuoto, ja suositeltiin, että konfiguraatiota päivitettäisiin tai muutettaisiin mahdollisimman pian.

Viralliset ilmoitukset:https://my.f5.com/manage/s/article/K000161019

PoC Varasto:https://github.com/depthFirstDissulations/Nginx-Rift

Tekninen analyysi:https://system.com/research/nginx-rift