Freenginx in nginx zdaj preverita velikost besedilne spremenljivke, preden vanjo zapišeta podatke (+ CVE)


3

TL; DRPotem ko je leta 2026 med delom z regularnimi izrazi in spremenljivkami naletel na tretje prelivanje medpomnilnika (in po podatkih F5 RCE, če ni ASLR), se je razvijalec freenginxa Maxim Dunin odločil, da je čas, da to ustavi, in svojemu izdelku dodal preverjanje velikosti spremenljivke, preden vanjo zapiše podatke. Nginx je od takrat kopiral to funkcijo, kar daje upanje, da bodo novi CVE-ji, povezani s to težavo, odpravljeni.

Zdaj pa podrobnosti.

19. junija je bilo narejeno zavezati v Freenginxu, ki deskriptorju spremenljivke doda končno polje, ki označuje konec medpomnilnika. Prej je obstajal le kazalec na njegov začetek (pos), zahtevana dolžina je bila (in se še vedno) izračunana vnaprej, in ko so bili podatki kopirani v spremenljivko, se je domnevalo, da bo pravilno izračunana dolžina zagotovila, da se bodo podatki prilegali v medpomnilnik. Žal se je to maja 2026 zaradi različnih napak že dvakrat izkazalo za napačno.1 (linux.org.ru), 2 (linux.org.ru)), kar je povzročilo prelivanje medpomnilnika in hude posledice. Zdaj se ob ustvarjanju medpomnilnika spremenljivke napolni tudi kazalec na njegov konec in pred zapisovanjem podatkov v spremenljivko se bo obdelava zahteve nadzorovano zaključila z napako, če podatki ne ustrezajo. To pomeni, da se lahko napake pri izračunu dolžine še vedno pojavljajo, vendar ne bodo zapravljale pomnilnika; le določena zahteva HTTP bo neuspešna. Naslednji zapisi (2 (freenginx.org), 3 (freenginx.org)) podobna zaščita je bila dodana tudi drugim delom kode, vključno s kodo za beleženje dostopa. Različica je bila objavljena 7. julija Freenginx 1.31.3, ki vključuje ta popravek.

15. julija je nginx prevzel te commite (1 (github.com), 2 (github.com), 3 (github.com), iz nekega razloga zamenjava drugega in tretjega v verigi), problem je bil dodeljen CVE-2026-42533in F5 je izdal uradno Južna Afrika (f5.com).

Glede specifične ranljivosti tokrat: pokaže se pri uporabi direktive map z regularnimi izrazi z izvlečenimi parametri. Glede drugih pogojev, potrebnih za sprožitev, se besedilo v opisu zapisa in besedilo v SA nekoliko razlikujeta: SA navaja, da je treba nato izračunati določen niz, ki uporablja izvlečeni parameter, ki ostane iz mape, pred rezultatom iste mape. V opisu zapisa v primeru se med tema korakoma spremenljivka, ki vsebuje izvlečeni parameter, prav tako poniči. Kakor koli že, to se verjetno ne bo zgodilo v večini delujočih nginxov, zato je ranljivost prizadela le malo ljudi. Omeniti velja tudi, da popravka za izračun dolžine posebej za ta primer ni v potrjenih urejanjih (ali sem slabo iskal?), obstaja le zaščita, ki težavo spremeni v nadzorovano napako zahteve HTTP. Čeprav so bili nekateri popravki dodani v freenginx 19. julija (5bfb, 7622, b906) izračun dolžine za podobno situacijo, vendar ni takoj jasno, ali je temu tako ali ne.

Ranljivost se je pojavila v različici nginx 0.9.6, popravki pa so bili vključeni v različice freenginx 1.31.3, nginx 1.30.4 in nginx 1.31.3.

Agencija nginx SA se zahvaljuje številnim posameznikom za neodvisno prijavo ranljivosti in upoštevanje "usklajenih standardov razkritja":

F5 se zahvaljuje Ming Xuanu, DKD (@pidifn), Ji'anu Zhouju in Zhen Yanu iz AntAISecurityLaba, Rafaelu Gaceku, Sergiiju Negodiuku iz EVO.company, Lamu Jun Rongu iz Calif.io, Mufeedu VH iz Winfunc Research (winfunc.com) in Vexeri AI (https://vexera.ai), Tu Tran Dinh (@1w4y), Stan Shaw (cyberstan), qianshuidewajueji, zenneth (randomguy6407), Zhenpeng (Leo) Lin iz depthfirst, Lukas Johannes Moeller, Melih Tolga Sahin iz Vodafone Türkiye, Ayoub Nabil Boubagrat (GitHub: @ayoubnabil) in Milan Jovic (Kljunowsky), ker so nas neodvisno opozorili na to vprašanje in upoštevali najvišje standarde usklajenega razkritja.

V programu Freenginx so spremne informacije o popravku dejansko omejene na sporočilo o potrditvi. ChangelogTa popravek sploh ni označen kot »varnost« ali »popravek napake«, temveč le kot »funkcija«. Očitno avtor te težave ni štel za kritično. Nemogoče je ugotoviti povezavo med težavami, ki so jih v F5 poročali prej omenjeni posamezniki, in zapisom, kopiranim iz freenginxa, ali pa so oni (ali kdo drug) težavo prijavili avtorju freenginxa.

Vir: linux.org.ru

Kupite zanesljivo gostovanje za strani z DDoS zaščito, VPS VDS strežniki 🔥 Kupite zanesljivo spletno gostovanje z zaščito DDoS, VPS VDS strežniki | ProHoster