Viešai buvo atskleistas kritinis Nginx perrašymo modulio pažeidžiamumas, atskleidžiantis krūvos buferio perpildymą, kuris egzistuoja nuo 2008 m. Šis pažeidžiamumas, pažymėtas kaip CVE-2026-42945 ir pavadintas „Nginx Rift“, leidžia neautentifikuotai nuotoliniu būdu vykdyti kodą serveriuose ir naudojant konkrečias rewrite direktyvas. Atradimas buvo atliktas savarankiškai, naudojant AI varomą saugos analizės sistemą, pabrėždama tiek automatinio pažeidžiamumo aptikimo galią, tiek skubų poreikį nedelsiant pataisyti.

Pažeidžiamumo apžvalga

CVE ID: CVE-2026-42945
Paveiktas komponentas: ngx_http_perrašymo_modulis
Pažeidžiamumo tipas: krūvos buferio perpildymas
CVSS balas: Kritinis
Paveiktos versijos: Nginx 0.6.27–1.30.0
Fiksuotos versijos: Nginx 1.31.0, 1.30.1
Poveikis: neautentifikuotas nuotolinis kodo vykdymas (RCE)

Pagrindinė priežastis: klasikinė dviejų praėjimų variklio klaida

„Nginx“ scenarijų variklis naudoja dviejų eigų procesą, kad tvarkytų kintamųjų pakeitimą:

  1. Pirmasis pravažiavimas (ilgio skaičiavimas): Apskaičiuokite reikiamą buferio dydį
  2. Antrasis leidimas (kopija): nukopijuokite duomenis į skirtą buferį

Pažeidžiamumas kyla dėl nenuoseklumo, kaip is_args vėliava tvarkoma tarp šių dviejų praėjimų:

Klaida:

  • The is_args vėliavėlė nustatoma pagrindiniame variklyje, kai perrašymo pakeitime yra a ? charakteris
  • Tačiau ilgio skaičiavimo leidimas veikia su naujai nuliniu antriniu varikliu, kur is_args = 0
  • Dėl to ilgio skaičiavimas grąžina neapdorotą fiksavimo ilgį
  • Kopijavimo leidimas mato is_args = 1 ir skambina ngx_escape_uri su NGX_ESCAPE_ARGS
  • Šis pašalinimas išplečia kiekvieną išeinamą baitą iki 3 baitų (pvz., tarpas tampa %20)
  • Kopijavimo operacija perpildo per mažo dydžio krūvos buferį užpuoliko valdomais URI duomenimis

Eksploatavimo grandinė

Viešasis koncepcijos įrodymas (PoC) parodo visą naudojimo grandinę:

1 veiksmas: suaktyvinkite buferio perpildymą

Pažeidžiamumą sukelia konkretus Nginx konfigūracijos modelis:

location ~ ^/api/(.*)$ {
    rewrite ^/api/(.*)$ /backend?path=$1 break;
    set $captured $1;
}

Kai siunčiama užklausa su ilgu URI su specialiaisiais simboliais, perrašymo operacijos metu įvyksta buferio perpildymas.

2 veiksmas: pritraukite Feng Shui už korupciją

Išnaudojimas naudoja „kryžminių užklausų krūvos feng shui“, kad būtų nustatyta a ngx_pool_t struktūra šalia perpildyto buferio. Tai apima:

  1. Kelių POST užklausų siuntimas su kruopščiai sukurtais korpusais
  2. Krūvos apipurškimas duomenimis, kurie bus paskirstyti šalia pažeidžiamo buferio
  3. Sugadindamas cleanup žymeklį gretimame baseino struktūroje

3 veiksmas: kodo vykdymas per baseino valymą

Kai baseinas sunaikinamas, sugadintas valymo žymeklis nukreipiamas į klastotę ngx_pool_cleanup_s struktūra, kuri skambina system() su užpuoliko valdomais argumentais.

Paveiktos Nginx versijos

Nginx atviras šaltinis:

  • Paveikta: nuo 0.6.27 iki 1.30.0
  • Ištaisyta: 1.31.0, 1.30.1

Nginx Plus:

  • Paveikta: R32–R36
  • Pataisyta: R36 P4, R35 P2, R32 P6

Išnaudojimo prielaidos

Nors pažeidžiamumas yra rimtas, išnaudojimui reikia tam tikrų sąlygų:

  1. Perrašyti direktyvą: Būtina naudoti rewrite su neįvardytais įrašais (pvz., $1, $2) ir a ? pakaitinėje eilutėje
  2. Nustatyti direktyvą: Turi būti paskesnis set direktyvą, kuri nurodo fiksavimo grupę
  3. ASLR aplinkkelis: Viešasis PoC daro prielaidą, kad ASLR yra išjungtas, nors visas įrašas rodo, kad ASLR galima apeiti

Dažni pažeidžiami modeliai

Nors konkretus modelis gali atrodyti neįprastas, kelios realaus pasaulio konfigūracijos yra pažeidžiamos:

PHP integracija:

fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;

URL perrašymas:

rewrite ^/old-path/(.*)$ /new-path?id=$1 break;
set $request_id $1;

API maršrutas:

rewrite ^/api/v1/(.*)$ /backend?endpoint=$1 break;
set $endpoint $1;

ASLR ir realaus pasaulio rizika

Viešasis PoC dėl paprastumo išjungia ASLR, todėl kai kurie pažeidžiamumą atmeta kaip mažos rizikos. Tačiau šis vertinimas yra pavojingai neteisingas:

Kodėl ASLR ne visiškai apsaugo

  1. Nginx Forking modelis: Nginx naudoja pagrindinį procesą, kuris sujungia darbuotojų procesus. Antriniai procesai paveldi pirminio atminties išdėstymą, o tai reiškia, kad kelios užklausos gali būti nukreiptos į tą pačią adresų erdvę be pakartotinio atsitiktinio atrankos.

  2. Informacijos nutekėjimas: pats pažeidžiamumas gali nutekėti informaciją apie atminties išdėstymą arba užpuolikai gali susieti jį su kitais pažeidžiamumu, kad gautų šią informaciją.

  3. Brute Force galimybė: Su neribotais bandymais strigti prieš darbuotojų procesus (kurie automatiškai paleidžiami iš naujo), užpuolikai laikui bėgant gali priverstinai sunaikinti ASLR entropiją.

  4. Laiko atakos: Sudėtingi užpuolikai gali naudoti laiko nustatymo šoninius kanalus, kad nustatytų atminties išdėstymo informaciją.

Istorinis precedentas

BROP (angl. Blind Return Oriented Programming) ataka parodė, kad ASLR galima apeiti kruopščiai išnaudojant šakute pagrįstus serverius. Nginx architektūra yra ypač pažeidžiama šių metodų.

Švelninimo strategijos

Neatidėliotini veiksmai

  1. Atnaujinkite Nginx: Nedelsdami atnaujinkite į 1.31.0 arba 1.30.1 versiją

  2. Naudokite pavadintus fiksavimus: Pakeiskite neįvardytus fiksavimus pavadintais fiksacijomis:

    # Vulnerable
    rewrite ^/api/(.*)$ /backend?path=$1 break;
    
    # Safe
    rewrite ^/api/(?<path>.*)$ /backend?path=$path break;
    
  3. Pašalinkite pažeidžiamas direktyvas: Jei įmanoma, pašalinkite rewrite ir set direktyvas, atitinkančias pažeidžiamą modelį

Laikini sprendimai

  1. Išjungti perrašymo modulį: Jei nereikia, visiškai išjunkite perrašymo modulį
  2. Naudokite alternatyvius metodus: perkelkite URL perrašymo logiką į programos kodą
  3. Įgyvendinti WAF taisykles: Įdiekite žiniatinklio programų ugniasienės taisykles, kad aptiktumėte išnaudojimo bandymus
  4. Stebėti žurnalus: stebėkite, ar prieigos žurnaluose nėra neįprastų šablonų, kurie gali rodyti išnaudojimo bandymus

Atradimo metodas: AI padedamas pažeidžiamumo aptikimas

Šį pažeidžiamumą „DepthFirst“ saugos analizės sistema aptiko savarankiškai, vienu spustelėjimu įdiegus „Nginx“ šaltinio kodą. Šis atradimo metodas kelia svarbių klausimų:

Poveikis saugumui

  1. Automatinis aptikimas: AI varomi įrankiai gali nustatyti pažeidžiamumą, kurio žmonės praleido daugelį metų
  2. Skalė: Šie įrankiai gali greitai analizuoti didžiules kodų bazes
  3. Nuoseklumas: Automatinė analizė nepatiria nuovargio ar neapsižiūrėjimo
  4. Grėsmė: Kenkėjiški veikėjai gali naudoti panašius įrankius, kad aptiktų pažeidžiamumą prieš pardavėjus

Dviašmenis kardas

Nors automatizuotas pažeidžiamumo aptikimas yra galingas, tai taip pat reiškia:

  • Pažeidžiamumas bus rastas greičiau
  • Langas tarp atradimo ir išnaudojimo susiaurėja
  • Organizacijos turi greičiau pataisyti
  • Nulinės dienos pažeidžiamumas gali tapti dažnesnis

Poveikio vertinimas

Rinkos dalis

„Nginx“ valdo maždaug 39–43 % viešųjų interneto serverių visame pasaulyje. Šis pažeidžiamumas gali paveikti milijonus serverių.

Paveikti naudojimo atvejai

  1. Atvirkštiniai tarpiniai serveriai: „Nginx“ egzemplioriai apima programų serverius
  2. Apkrovos balansuotojai: Nginx naudojamas apkrovai balansuoti
  3. API šliuzai: Nginx veikia kaip API šliuzas
  4. PHP integracija: Nginx su PHP-FPM naudojant perrašymo taisykles
  5. Senas URL perrašymas: serveriai, migruojantys iš „Apache“ su perrašymo taisyklėmis

Pardavėjo atsakymas

F5 („Nginx“ savininkas):

OpenResty:

Linux platinimai:

  • Ubuntu: pataisyta nuo 2026 m. gegužės 15 d
  • „Debian“: galimi pataisymai, skirti nestabiliems („trixie“)
  • Kiti platinimai: išleidžiami pataisymai

Koncepcijos įrodymas

Viešą PoC galima rasti adresu https://github.com/DepthFirstDisclosures/Nginx-Rift

Saugyklos turinys:

  • poc.py: Python išnaudojimo scenarijus
  • setup.sh: Docker konteinerio sąranka
  • env/: Docker aplinkos konfigūracija
  • README.md: Išsamus naudojimo vadovas

PoC paleidimas:

./setup.sh
docker compose -f env/docker-compose.yml up
python3 poc.py --shell

Rekomendacijos sistemos administratoriams

  1. Nedelsiant: patikrinkite „Nginx“ konfigūracijas, ar nėra pažeidžiamų modelių
  2. Skubiai: planuokite ir vykdykite „Nginx“ atnaujinimus į pataisytas versijas
  3. Trumpalaikis: Įdiekite išnaudojimo bandymų stebėjimą
  4. Ilgalaikis: apsvarstykite galimybę pereiti prie atminties saugių alternatyvų arba įdiegti papildomus saugos sluoksnius

Rekomendacijos kūrėjams

  1. Kodo peržiūra: peržiūrėkite „Nginx“ konfigūracijas, ar nėra pažeidžiamų modelių
  2. Testavimas: Išbandykite programas naudodami pataisytas Nginx versijas
  3. Alternatyvos: vietoj Nginx perrašymo taisyklių apsvarstykite galimybę naudoti Lua modulius arba programos lygio maršrutą
  4. Saugumas: įgyvendinkite nuodugnias gynybos strategijas, kurios nesiremia vien ASLR

Išvada

CVE-2026-42945 reiškia kritinį pažeidžiamumą, kuris nebuvo aptiktas 18 metų. Jo atradimas naudojant automatizuotą dirbtinio intelekto analizę rodo, kad pažeidžiamumas bus rastas ir naudojamas ateityje.

Pažeidžiamumas yra rimtas, tačiau riziką galima sumažinti nedelsiant pataisius ir pakeitus konfigūraciją. Organizacijos, kuriose veikia „Nginx“, turėtų tai laikyti kritiniu saugumo incidentu ir atitinkamai teikti pirmenybę naujinimams.

Platesnė pamoka yra ta, kad net subrendusi, plačiai naudojama programinė įranga gali ilgą laiką turėti kritinių spragų. Norint išlaikyti saugią infrastruktūrą, būtina nuolatinė saugumo analizė, tiek automatizuota, tiek rankiniu būdu.

Veiksmo elementai:

Jei tekste radote klaidą, siųskite pranešimą autoriui pažymėdami klaidą ir paspausdami Ctrl-Enter.

Norėdami komentuoti, turite būti prisijungę.

Draugai: - Marketingo agentūra - Teisinės konsultacijos - Skaidrių skenavimas - Klaipedos miesto naujienos - Miesto naujienos - Saulius Narbutas - Įvaizdžio kūrimas - Veidoskaita - Teniso treniruotės - Pranešimai spaudai - Kauno naujienos - Regionų naujienos - Palangos naujienos