drošība · 5 min · 21.07.2026

nginx 1.30.4 aizver 15 gadus vecu caurumu — map ar regex ļauj izpildīt kodu bez pieteikšanās

nginx 15. jūlijā izlaida 1.30.4 (stabilā) un 1.31.3 (mainline), kas aizver kļūdu, kura serverī slēpjas kopš 2011. gada marta. CVE-2026-42533 ļauj neautentificētam uzbrucējam ar vienu sagatavotu HTTP pieprasījumu izraisīt kaudzes pārpildi darba procesā. F5 tai piešķīra CVSS 9,2 pēc v4.0 skalas.

Caurums skar visas nginx versijas no 0.9.6 līdz 1.31.2, taču ne katrs serveris ir apdraudēts. Kļūda nostrādā tikai konkrētā konfigurācijā: map direktīvā ar regulārās izteiksmes paraugu un numurētu tveršanas grupu, piemēram $1, uz kuru virkne atsaucas pēc paša map iznākuma. Bez tāda parauga serveris ir drošs arī tad, ja darbojas ar vecu versiju.

Kā kļūda darbojas

nginx iekšējais skriptu dzinis strādā divos gājienos. Pirmais izmēra, cik gara būs izejošā virkne, un rezervē tieši tik daudz atmiņas. Otrais kopē datus rezervētajā buferī. Abiem gājieniem jāvienojas par vienu un to pašu garumu, citādi kopēšana raksta ārpus rezervētā apgabala.

Problēma sākas, kad starp diviem $1 atsauces gadījumiem nostrādā map ar regex. Šī map dalās ar to pašu PCRE tveršanas stāvokli, ko lieto ārējā izteiksme, un klusi to pārraksta. Mērīšanas gājiens rēķinās ar vienu vērtību, kopēšanas gājiens — jau ar citu, garāku. Kopēšana ieraksta vairāk baitu, nekā rezervēts, un pārraksta blakus esošo kaudzi. Orca Security analīzē to izseko līdz trūkstošai tveršanas stāvokļa saglabāšanai skriptu dzinī — kods šo koplietoto stāvokli neatjauno starp abiem gājieniem.

Ilgo klusēšanu skaidro parauga specifika. Regulārās izteiksmes atbalsts map direktīvā parādījās 2011. gada martā, bet kļūda nostrādā tikai tad, ja map ar regex atrodas starp divām vienas un tās pašas numurētās tveršanas grupas atsaucēm vienā virknes izteiksmē. Vairums konfigurāciju šādu secību nekad nesasniedz, tāpēc pārpilde parastā darbā neizpaudās un netika pamanīta ne testos, ne avārijās.

Ko uzbrucējs var izdarīt

Katrā gadījumā pārpilde noliek darba procesu, un nginx to restartē. Tīri pieejamības ziņā tas jau ir pakalpojuma atteikums. Ja serverī ASLR adrešu jaukšana ir izslēgta vai apieta, uzbrucējs var panākt koda izpildi darba procesa tiesībās. Autentifikācija nav vajadzīga — pietiek nosūtīt pieprasījumu, kas iziet cauri ievainojamajai map. The Hacker News norāda, ka kļūda ir izsaucama attālināti pret jebkuru serveri ar attiecīgo konfigurāciju.

Ja konfigurācijā nav neviena map ar regex un numurētām tveršanas grupām, kļūda nav izmantojama — pat uz vecas versijas. Tas ir arī pagaidu risinājums tiem, kas atjaunināt vēl nevar.

Divas kļūdas klāt tajā pašā laidienā

Tajā pašā 15. jūlija laidienā nginx aizvēra vēl divas kļūdas. CVE-2026-60005 ļauj noplūdināt atmiņas saturu caur ngx_http_slice_module, ko lieto lielu failu piegādei pa daļām. CVE-2026-56434 ir use-after-free modulī ngx_http_ssi_module, kas apstrādā servera puses iekļāvumus. Abas prasa, lai attiecīgais modulis būtu ieslēgts, tāpēc to skarto serveru loks ir šaurāks nekā galvenajai kļūdai.

Kuras versijas labo caurumu

Labotās atvērtā koda versijas ir 1.30.4 un 1.31.3. NGINX Plus lietotājiem tas ir 37.0.3.1 un R36 P7. Ievainojami paliek arī vairāki lejtecē būvēti produkti — Instance Manager, App Protect WAF un Gateway Fabric — kuriem F5 izdeva atsevišķus atjauninājumus.

Ja atjaunināt uzreiz nevar, pagaidu risinājums ir map direktīvās numurētās tveršanas grupas nomainīt pret nosauktām un atsaukties uz tām tikai tajā blokā, kur nostrādā regex. Tas noņem tieši to koplietoto stāvokli, uz kura balstās uzbrukums.

map ar regex ir izplatīts modelis reverso starpniekserveru un maršrutēšanas konfigurācijās — piemēram, kad no host galvenes vai ceļa ar regex izvelk daļu un to izmanto tālākā mainīgajā. Tieši šādās vietās numurētās tveršanas grupas mēdz parādīties, tāpēc daudzi produkcijas serveri var atbilst bīstamajam paraugam, arī ja administrators to nekad nav uztvēris kā riskantu.

Savu konfigurāciju var pārbaudīt ātri. Meklē map blokus ar regulārās izteiksmes paraugu — rindas ar ~ vai ~* — un skaties, vai kāda virkne pēc tam atsaucas uz numurētu tveršanas grupu, piemēram $1, ko izveidojusi cita regex atbilstība. Ja tāda ķēde konfigurācijā ir, serveris atbilst bīstamajam paraugam neatkarīgi no slodzes vai trafika apjoma.

Cik daudz laika ir

Publisks skeneris, kas atrod ievainojamās konfigurācijas, jau ir pieejams, un pilnu izmantošanas kodu drošības pētnieki gaida augustā. Apstiprinātu uzbrukumu savvaļā securityonline.info uz 16. jūliju vēl nefiksēja. nginx ir viens no visplašāk lietotajiem tīmekļa serveriem, tāpēc ievainojamo konfigurāciju absolūtais skaits var būt liels arī pie neliela procenta. Skenerim pietiek dažu HTTP pieprasījumu, lai pārbaudītu katru publisku serveri.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no drošībasaistītie