{"id":20847,"date":"2026-06-19T22:55:04","date_gmt":"2026-06-19T19:55:04","guid":{"rendered":"https:\/\/sysadmin.courses\/%d0%b4%d0%b2%d0%b0-%d0%ba%d1%80%d0%b8%d1%82%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%d1%85-%d0%b1%d0%b0%d0%b3%d0%b0-%d0%b2-nginx-use-after-free-%d0%b2-http-3-%d0%b8-heap-overflow-%d0%b2-grpc-%d0%bf%d1%80\/"},"modified":"2026-06-19T22:58:07","modified_gmt":"2026-06-19T19:58:07","slug":"du-kritiniai-nginx-klaidai-use-after-free-http-3-ir-heap-overflow-grpc-tarpininkavimo-modulyje","status":"publish","type":"post","link":"https:\/\/sysadmin.courses\/lt\/du-kritiniai-nginx-klaidai-use-after-free-http-3-ir-heap-overflow-grpc-tarpininkavimo-modulyje\/","title":{"rendered":"Du kritiniai nginx klaidai: use-after-free HTTP\/3 ir heap overflow gRPC tarpininkavimo modulyje"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u012esivaizduokite: j\u016bs\u0173 nginx veikia kaip API \u0161liuzas, perduodantis HTTP\/2 sraut\u0105 \u012f mikroservis\u0173 infrastrukt\u016br\u0105. Ka\u017ekada nustat\u0117te <code>ignore_invalid_headers off<\/code>, kad praleistum\u0117te nestandartinius antra\u0161t\u0117s i\u0161 vieno i\u0161 vidini\u0173 servis\u0173, ir padidinote <code>large_client_header_buffers<\/code> iki 4 MB dideliems JWT \u017eetonams. Viskas veikia skland\u017eiai. Tada 2026 m. bir\u017eelio 17 d. F5 i\u0161leid\u017eia neplanin\u012f saugumo prane\u0161im\u0105 \u2014 ir paai\u0161k\u0117ja, kad b\u016btent \u0161i konfig\u016bracija leid\u017eia neautentifikuotam nutolusiajam u\u017epuolikui sutrikdyti nginx darbini\u0173 proces\u0173 darb\u0105 vienu u\u017eklausimu. Ir tai tik viena i\u0161 dviej\u0173 kritini\u0173 klaid\u0173, i\u0161taisyt\u0173 t\u0105 dien\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F5 apra\u0161\u0117 \u0161e\u0161ias pa\u017eeid\u017eiamumo vietas NGINX produkt\u0173 ekosistemoje. Dvi i\u0161 j\u0173 \u2014 kritinio RCE lygio, abi su CVSS v4.0: 9.2 balu. CVE-2026-42530 \u2014 use-after-free modulyje <code>ngx_http_v3_module<\/code>, kuris apdoroja HTTP\/3 per QUIC. CVE-2026-42055 \u2014 heap tipo buferio perpildymas HTTP\/2 tarpininkavimo ir gRPC moduliuose. Abu leid\u017eia neautentifikuotam nutolusiajam u\u017epuolikui sugriauti nginx darbini\u0173 proces\u0173 darb\u0105, o sistemose be ASLR arba galint j\u012f apeiti \u2014 potencialiai vykdyti savavali\u0161ko kodo vykdym\u0105. Abu i\u0161taisyti nginx 1.31.2 versijoje, i\u0161leistoje t\u0105 pa\u010di\u0105 dien\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aktyvaus i\u0161naudojimo publikavimo metu nefiksuota. Ta\u010diau tai laikina situacija: CVE-2026-42945 (NGINX Rift) 2026 m. gegu\u017e\u0119 per ma\u017eiau nei savait\u0119 nuo vie\u0161o atskleidimo tapo aktyviai naudojama atakose. Veikiantis i\u0161naudojimo kodas buvo atkurtas i\u0161 pataisymo skirtumo beveik akimirksniu. N\u0117ra prie\u017easties tik\u0117tis, kad \u0161ios dvi klaidos elgsis kitaip.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KAIP VEIKIA KLAIDA HTTP\/3 (CVE-2026-42530)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HTTP\/3 veikia per QUIC transporto protokol\u0105, kuris \u2014 skirtingai nei TCP \u2014 duomenis perduoda per kelis nepriklausomus srautus vienos jungtis ribose. HTTP\/3 antra\u0161\u010di\u0173 glaudinimui naudojamas QPACK mechanizmas \u2014 jis sud\u0117tingesnis nei HTTP\/2 naudojamas HPACK, nes QUIC srautai gali atvykti bet kokia tvarka. QPACK naudoja du specialius valdymo srautus: encoder stream (siunt\u0117jas siun\u010dia glaudinimo lentel\u0117s atnaujinimus) ir decoder stream (gav\u0117jas patvirtina). Protokolas numato, kad kiekvienas i\u0161 \u0161i\u0173 sraut\u0173 atidaromas vien\u0105 kart\u0105 per jungt\u012f ir nebeatveriamas i\u0161 naujo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Klaida <code>ngx_http_v3_module<\/code> yra tai, kaip nginx apdoroja situacij\u0105, kai klientas jau veikian\u010dios HTTP\/3 sesijos metu bando atidaryti QPACK encoder stream i\u0161 naujo. Pirm\u0105 kart\u0105 atidarant sraut\u0105, nginx paskiria atmint\u012f duomen\u0173 strukt\u016broms. U\u017edarius \u2014 atlaisvina j\u0105. Kai klientas atidaro sraut\u0105 pakartotinai, nginx netinkamai patikrina \u0161i\u0105 ribin\u0119 s\u0105lyg\u0105: darbo procesas bando pasiekti jau atlaisvintas duomen\u0173 strukt\u016bras. Klasikinis use-after-free (CWE-416): skaitymas arba ra\u0161ymas \u012f atmint\u012f, kuri jau gr\u0105\u017einta alokatorius arba perduota kitam objektui.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pa\u017eeid\u017eiamos tik NGINX Open Source versijos 1.31.0 ir 1.31.1 \u2014 versijos, kuriose HTTP\/3 palaikymas buvo prid\u0117tas arba i\u0161 esm\u0117s pertvarkytas. \u0160aka 1.30.x nepaveikta. CWE-416 u\u017efiksuotas F5 prane\u0161ime vidinio ID NPS-8 numeriu. Klaid\u0105 atrado Trung Nguyen (@everping) i\u0161 CyStack \u2014 jo vardas nurodytas oficialaus nginx changelog dokumente. F5 advisory K000161616 papildomai nurodo Zhenpeng (Leo) Lin (depthfirst), Evan Hellman (@xintenseapple) i\u0161 Trail of Bits kartu su OpenAI, bei komandas AntAISecurityLab ir Nebula Security (@nebusecurity).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KAIP VEIKIA KLAIDA HTTP\/2 TARPININKAVIME IR gRPC (CVE-2026-42055)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0160i pa\u017eeid\u017eiamumo vieta reikalauja trij\u0173 nestandartini\u0173 konfig\u016bracijos parametr\u0173 vienu metu. Pirmas: HTTP\/2 tarpininkavimas \u012fjungtas per <code>proxy_http_version 2<\/code> arba naudojama direktyva <code>grpc_pass<\/code>. Antras: direktyva <code>ignore_invalid_headers<\/code> nustatyta \u012f <code>off<\/code>. Tre\u010dias: <code>large_client_header_buffers<\/code> dydis vir\u0161ija 2 megabaitus. Pagal nutyl\u0117jim\u0105 visi trys parametrai nesudarys problem\u0173 \u2014 <code>ignore_invalid_headers<\/code> numatytoji reik\u0161m\u0117 yra <code>on<\/code>, o <code>large_client_header_buffers<\/code> pagal nutyl\u0117jim\u0105 \u2014 4 buferiai po 8 KB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nusta\u010dius <code>ignore_invalid_headers off<\/code>, nginx nustoja filtruoti antra\u0161tes su netaisyklingais pavadinimais \u012f\u0117jimo ta\u0161ke ir perduoda jas toliau \u2014 \u012fskaitant formuojant u\u017eklausas \u012f vidin\u012f server\u012f. Moduliai <code>ngx_http_proxy_v2_module<\/code> ir <code>ngx_http_grpc_module<\/code> formuoja vidinio serverio u\u017eklaus\u0173 antra\u0161tes, kopijuodami duomenis \u012f heap bufer\u012f. \u0160io buferio dydis skai\u010diuojamas remiantis prielaida, kad antra\u0161t\u0117s buvo patikrintos. Kai <code>large_client_header_buffers<\/code> vir\u0161ija 2 MB ir tikrinimas i\u0161jungtas \u2014 u\u017epuolikas gali si\u0173sti pakankamai dideles antra\u0161tes, kad kopijavimas per\u017eengt\u0173 paskirto buferio ribas. Heap tipo buferio perpildymas (CWE-122) gadina gretimus alokatorius metaduomenis arba gyvus objektus heap atmintyje.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Klaid\u0105 atrado Mufeed VH i\u0161 Winfunc Research \u2014 jo vardas nurodytas oficialiame nginx.org changelog dokumente versijai 1.31.2. Paveiktos nginx versijos nuo 1.13.10 iki 1.31.1: tai did\u017eiulis versij\u0173 diapazonas, apimantis beveik de\u0161imtmet\u012f. Pataisymas \u012ftrauktas \u012f NGINX Open Source 1.31.2 (mainline) ir 1.30.3 (stable), o komercin\u0117ms versijoms \u2014 \u012f NGINX Plus 37.0.2.1 ir R36 P6.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KAIP TAI I\u0160NAUDOJAMA<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CVE-2026-42530 (HTTP\/3 UAF): u\u017epuolikas u\u017emezga HTTP\/3 ry\u0161\u012f su serveriu per UDP\/443. Jokio i\u0161ankstinio autentifikavimo nereikia \u2014 QUIC jungtis i\u0161 prigimties vie\u0161ai prieinama. Sesijos metu u\u017epuolikas atidaro QPACK encoder stream, u\u017edaro j\u012f ir atidaro i\u0161 naujo \u2014 veiksmas, kur\u012f protokolas draud\u017eia, ta\u010diau nginx 1.31.0\u20131.31.1 apdoroja netinkamai. Darbo procesas bando pasiekti jau atlaisvintas duomen\u0173 strukt\u016bras ir gri\u016bna su atminties pa\u017eeidimu. nginx automati\u0161kai paleid\u017eia i\u0161 naujo sugriovusius darbo procesus, tod\u0117l servisas atsistato \u2014 ta\u010diau kartojant t\u0105 pa\u010di\u0105 sesij\u0105 DoS trunka be pertraukos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CVE-2026-42055 (HTTP\/2\/gRPC heap overflow): u\u017epuolikas siun\u010dia HTTP u\u017eklaus\u0105 su ty\u010dia didel\u0117mis arba netaisyklingomis antra\u0161t\u0117mis \u2014 pakankamai didel\u0117mis, kad kopijavimas \u012f vidinio serverio strukt\u016bras per\u017eengt\u0173 apskai\u010diuoto buferio ribas. \u012e\u0117jimo filtravimas i\u0161jungtas direktyva <code>ignore_invalid_headers off<\/code>, tod\u0117l antra\u0161t\u0117s patenka tiesiai \u012f tarpininkavimo modulio heap bufer\u012f. Rezultatas tas pats: darbo proceso gri\u016btis, DoS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Svarbi detal\u0117 i\u0161 F5 advisory: &#8222;conditions beyond their control&#8221; \u2014 ty\u010dia pasirinkta formuluot\u0117. Ji rei\u0161kia, kad u\u017epuolikas negali visi\u0161kai kontroliuoti vis\u0173 s\u0105lyg\u0173: serveris turi b\u016bti sukonfig\u016bruotas specifi\u0161kai. B\u016btent tod\u0117l pa\u017eeid\u017eiamumas reikalauja trij\u0173 direktyv\u0173 derinio \u2014 tai ne tiesiog &#8222;si\u0173sk didel\u0119 antra\u0161t\u0119&#8221;, o &#8222;si\u0173sk didel\u0119 antra\u0161t\u0119 \u012f server\u012f, kuris ty\u010dia i\u0161jung\u0117 apsaug\u0105 ir padidino bufer\u012f&#8221;. Ta\u010diau i\u0161 u\u017epuoliko perspektyvos: jei konfig\u016bracija atitinka \u2014 technini\u0173 kli\u016b\u010di\u0173 neb\u0117ra. Viena HTTP u\u017eklausa su i\u0161p\u016bstomis antra\u0161t\u0117mis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KAS NUTINKA TOLIAU \u2014 PRIKLAUSO NUO KONFIG\u016aRACIJOS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sistemose su \u012fjungtu ASLR (numatytasis parametras visuose \u0161iuolaikiniuose Linux distributysuose) abi klaidos patikimai sukelia DoS \u2014 darbo proceso gri\u016bt\u012f ir paleidim\u0105 i\u0161 naujo. ASLR kiekvieno paleidimo metu atsitiktinai parinks atminties adresus, tod\u0117l nusp\u0117jamas vykdymo srauto valdymas po atminties pa\u017eeidimo tampa \u017eymiai sud\u0117tingesnis. Tai n\u0117ra apsauga nuo gri\u016bties, ta\u010diau nuo RCE \u2014 reik\u0161minga, nors ir ne absoliuti kli\u016btis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sistemose be ASLR arba kai j\u012f galima apeiti \u2014 o vie\u0161as CVE-2026-42530 vaizdo demonstravimas jau egzistuoja ir tyr\u0117jai patvirtina ASLR ap\u0117jimo realum\u0105 \u2014 atminties pa\u017eeidimas tampa valdoma primityvine galimybe. CVE-2026-42055 heap overflow gadina gretimus alokatorius metaduomenis arba gyvus objektus \u2014 standartinis kelias \u012f vykdymo srauto per\u0117mim\u0105 nepriklausom\u0173 saugumo tyr\u0117j\u0173 vertinimu. CVE-2026-42530 use-after-free suteikia skaitymo\/ra\u0161ymo primityv\u0105 \u012f atlaisvint\u0105 atmint\u012f \u2014 analogi\u0161ka pradin\u0117 med\u017eiaga. F5 abiej\u0173 CVE advisory tai ai\u0161kiai nurodo: sistemose be ASLR arba galint j\u012f apeiti galimas savavali\u0161ko kodo vykdymas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Svarbi detal\u0117 i\u0161 oficialaus nginx.org changelog: CVE-2026-48142 \u2014 buferio perra\u0161ymas <code>ngx_http_charset_module<\/code> modulyje, i\u0161taisytas tame pa\u010diame 1.31.2 leidime \u2014 oficialiai apra\u0161ytas kaip sukeliantis &#8222;ribot\u0105 darbo proceso atminties atskleidim\u0105&#8221;. thecybersecguru.com tyr\u0117jai nurodo, kad tokia darbo proceso atminties nutek\u0117jimo galimyb\u0117 yra klasikinis \u012frankis ASLR ap\u0117jimui prie\u0161 paleid\u017eiant CVE-2026-42530 ar CVE-2026-42055. Tai j\u0173 vertinimas, o ne oficiali F5 pozicija. Visi trys CVE u\u017edaromi vienu atnaujinimu iki 1.31.2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>CHRONOLOGIJA<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. bir\u017eelio 17 d. \u2014 F5 i\u0161leid\u017eia neplanin\u012f saugumo prane\u0161im\u0105 K000161614, apra\u0161ant\u012f \u0161e\u0161is CVE NGINX produkt\u0173 ekosistemoje. Tuo pa\u010diu metu i\u0161leid\u017eiamos nginx 1.31.2 (mainline) ir 1.30.3 (stable) versijos su pataisymais. &#8222;Neplaninis&#8221; \u010dia yra esminis \u017eodis: F5 paprastai saugumo prane\u0161imus leid\u017eia pagal ketvirtin\u012f grafik\u0105. Nukrypimas nuo jo rei\u0161kia, kad laukti kito ciklo buvo ne\u012fmanoma.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. bir\u017eelio 19 d. \u2014 SecurityLab ir Xakep.ru publikuoja naujienas. nginx.org svetain\u0117je atnaujinamas saugumo prane\u0161im\u0173 s\u0105ra\u0161as su \u0161e\u0161iais naujais \u012fra\u0161ais. \u0160ios publikacijos metu aktyvaus CVE-2026-42530 ir CVE-2026-42055 i\u0161naudojimo nefiksuota, vie\u0161as PoC nepaskelbtas. SOCRadar duomenimis, tyr\u0117jai CVE-2026-42530 seka neoficialiu pavadinimu nginx-quicburst, o vie\u0161as vaizdo demonstravimas jau egzistuoja \u2014 tai signalas, kad techninis supratimas apie pa\u017eeid\u017eiamum\u0105 i\u0161plito gerokai pla\u010diau nei pirmin\u0117 tyr\u0117j\u0173 grup\u0117.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KOD\u0116L TAI SVARBU<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Abi klaidos \u2014 tinklo lygio, be autentifikavimo, nereikalaujan\u010dios jokios vartotojo s\u0105veikos. Tai palankiausios s\u0105lygos u\u017epuolikui: pakanka IP lygio prieigos prie j\u016bs\u0173 nginx 443 prievade. Nereikia sp\u0117lioti slapta\u017eod\u017eio, i\u0161naudoti CMS pa\u017eeid\u017eiamumo ar laukti, kol kas nors paspaus nuorod\u0105. Vienas UDP paketas \u2014 darbo procesas gri\u016bva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CVSS bal\u0173 painiava \u010dia reali ir verta supratimo. CVE-2026-42530 ir CVE-2026-42055 gavo tris skirtingus \u012fvertinimus priklausomai nuo \u0161altinio: CVSS v3.1 \u2014 8.1 (High, pagal CSA Singapore ir Tenable duomenis), CVSS v4.0 \u2014 9.2 (Critical, pagal F5 advisory), ir nginx.org vidinis rimtumo lygis \u2014 atitinkamai &#8222;major&#8221; ir &#8222;medium&#8221;. Visi trys teisingi \u2014 jie tiesiog matuoja skirtingus dalykus. CVSS v4 pakeit\u0117 tinklo lygio atminties pa\u017eeidimo klaid\u0173 vertinimo formul\u0119 ir link\u0119s jas vertinti auk\u0161\u010diau nei v3.1. nginx.org vidinis reitingas atspindi komandos nuomon\u0119 apie i\u0161naudojimo patikimum\u0105 \u2014 istori\u0161kai konservatyvesn\u0119. Jei j\u016bs\u0173 pa\u017eeid\u017eiamum\u0173 valdymo sistema orientuojasi tik \u012f vien\u0105 skal\u0119, galite gauti &#8222;medium&#8221; ir &#8222;critical&#8221; tam pa\u010diam klaidos tipui i\u0161 skirting\u0173 patikim\u0173 \u0161altini\u0173. Remkit\u0117s CVSS v4.0: 9.2 \u2014 tai aktualesn\u0117 sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CVE-2026-42055 apima nginx 1.13.10 \u2014 1.31.1. Tai beveik de\u0161imtmetis leidim\u0173 su pa\u017eeid\u017eiamu kodu \u2014 su s\u0105lyga, kad konfig\u016bracija atitinka. &#8222;Nestandartin\u0117 konfig\u016bracija&#8221; \u010dia nerei\u0161kia egzoti\u0161ka: HTTP\/2 tarpininkavimas su i\u0161pl\u0117stais buferiais ir atsipalaidavusiu antra\u0161\u010di\u0173 tikrinimo \u2014 tai b\u016btent tai, k\u0105 daro aptarnaujant gRPC sraut\u0105, didelius JWT \u017eetonus ir nestandartines API schemas. Gamybin\u0117 mikroservis\u0173 infrastrukt\u016bra.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ATNAUJINIMAS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pirmiausia patikrinkite dabartin\u0119 nginx versij\u0105 \u2014 tai parodys, kurioje \u0161akoje esate ir ar reikia veikti:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nginx -v<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jei vykdymo rezultatas rodo 1.31.0 arba 1.31.1 \u2014 esate pa\u017eeid\u017eiami abiem CVE-2026-42530 ir CVE-2026-42055. Bet kuri versija nuo 1.13.10 iki 1.31.1 \u2014 pa\u017eeid\u017eiami CVE-2026-42055. Atnaujinkite iki 1.31.2 (mainline) arba 1.30.3 (stable). Ubuntu\/Debian sistemose, jei nginx \u012fdiegtas i\u0161 oficialaus nginx.org saugyklos \u2014 \u0161i komanda atnaujins iki naujausios versijos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update &amp;&amp; apt install nginx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jei nginx \u012fdiegtas i\u0161 distrib\u016btyvo standartin\u0117s saugyklos (pavyzd\u017eiui, Ubuntu universe) \u2014 ten gali b\u016bti sena versija, negavusi pataisymo. Patikrinkite, i\u0161 kur at\u0117jo paketas: <code>apt-cache policy nginx<\/code>. Jei matote adres\u0105 tipo <code>nginx.org\/packages<\/code> \u2014 viskas tvarkoje. Jei distrib\u016btyvo adresas \u2014 patikrinkite versij\u0105 ir prireikus perjunkite \u012f oficiali\u0105 nginx.org saugykl\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">RHEL\/CentOS\/AlmaLinux sistemose naudokite dnf \u2014 \u0161i komanda atnaujins nginx iki naujausios versijos sukonfig\u016bruotose saugyklose:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dnf update nginx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Po atnaujinimo patikrinkite, kad veikia nauja versija \u2014 vykdymo rezultatas tur\u0117t\u0173 rodyti 1.31.2 arba 1.30.3:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nginx -v &amp;&amp; systemctl status nginx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jei negalite nedelsiant atnaujinti \u2014 naudokite laikinas priemones. Jos suma\u017eina rizik\u0105, bet nepakei\u010dia pataisymo: atnaujinkite kuo grei\u010diau. CVE-2026-42530 atveju: i\u0161junkite HTTP\/3, pa\u0161alindami parametr\u0105 <code>quic<\/code> i\u0161 vis\u0173 <code>listen<\/code> direktyv\u0173. Tai visi\u0161kai panaikina atakos pavir\u0161i\u0173, nes pa\u017eeid\u017eiamumas nepasiekiamas be HTTP\/3. Patikrinkite, kad <code>quic<\/code> neliko niekur konfig\u016bracijoje \u2014 komanda i\u0161ves visas eilutes, kuriose sutinkamas \u0161is \u017eodis:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -r \"quic\" \/etc\/nginx\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jei vykdymo rezultate yra eilut\u0117s tipo <code>listen 443 quic reuseport;<\/code> arba <code>http3 on;<\/code> \u2014 b\u016btent \u0161ias eilutes reikia pakomentuoti arba i\u0161trinti, po to perkrauti nginx. Jei vykdymo rezultatas tu\u0161\u010dias \u2014 HTTP\/3 ne\u012fjungtas, CVE-2026-42530 j\u016bs\u0173 nelie\u010dia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CVE-2026-42055 atveju: atkurkite numatyt\u0105j\u0105 <code>ignore_invalid_headers<\/code> reik\u0161m\u0119 (tai yra <code>on<\/code>) arba suma\u017einkite <code>large_client_header_buffers<\/code> \u017eemiau 2 MB. Vieno i\u0161 dviej\u0173 pakanka \u2014 pa\u017eeid\u017eiamumas reikalauja abiej\u0173 s\u0105lyg\u0173 vienu metu. Patikrinkite, ar konfig\u016bracijoje yra problemin\u0117s direktyvos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -r \"ignore_invalid_headers\\|large_client_header_buffers\" \/etc\/nginx\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jei eilu\u010di\u0173 n\u0117ra \u2014 CVE-2026-42055 j\u016bs\u0173 nelie\u010dia su numatytosiomis nuostatomis. Jei eilu\u010di\u0173 yra \u2014 patikrinkite reik\u0161mes: <code>ignore_invalid_headers off<\/code> kartu su <code>large_client_header_buffers<\/code> didesniu nei 2 MB yra pa\u017eeid\u017eiama kombinacija. Po bet koki\u0173 konfig\u016bracijos pakeitim\u0173 \u2014 sintaks\u0117s patikrinimas ir perkrovimas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nginx -t &amp;&amp; systemctl reload nginx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>I\u0160VADOS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dvi kritinio lygio nginx klaidos per vien\u0105 dien\u0105 \u2014 tai n\u0117ra \u012fprastas \u012fvykis, ir neplaninis F5 prane\u0161imas tai patvirtina. CVE-2026-42530 lie\u010dia siaur\u0105, ta\u010diau augan\u010di\u0105 grup\u0119 \u2014 tuos, kurie \u012fjung\u0117 HTTP\/3 palaikym\u0105 nginx 1.31.x. CVE-2026-42055 apima did\u017eiul\u012f versij\u0173 diapazon\u0105 \u2014 1.13.10 \u2014 1.31.1 \u2014 esant nestandartinei, ta\u010diau praktikoje paplitusiai konfig\u016bracijai.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Visi trys pa\u017eeid\u017eiamumai \u2014 CVE-2026-42530, CVE-2026-42055 ir CVE-2026-48142 \u2014 u\u017edaromi vienu atnaujinimu iki 1.31.2. Pataisymas egzistuoja, jis stabilus, i\u0161leistas t\u0105 pa\u010di\u0105 dien\u0105 kaip ir prane\u0161imas. Atnaujinkite dabar. Debian\/Ubuntu sistemose: <code>apt update &amp;&amp; apt install nginx<\/code>. RHEL\/AlmaLinux: <code>dnf update nginx<\/code>. NGINX Rift parod\u0117, kad laikas tarp &#8222;pataisymas i\u0161leistas&#8221; ir &#8222;i\u0161naudojimas realiose atakose&#8221; matuojamas dienomis, o ne savait\u0117mis.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u012esivaizduokite: j\u016bs\u0173 nginx veikia kaip API \u0161liuzas, perduodantis HTTP\/2 sraut\u0105 \u012f mikroservis\u0173 infrastrukt\u016br\u0105. Ka\u017ekada nustat\u0117te ignore_invalid_headers off, kad praleistum\u0117te nestandartinius antra\u0161t\u0117s i\u0161 vieno i\u0161 vidini\u0173 servis\u0173, ir padidinote large_client_header_buffers iki 4 MB dideliems JWT \u017eetonams. Viskas veikia skland\u017eiai. Tada 2026 m. bir\u017eelio 17 d. F5 i\u0161leid\u017eia neplanin\u012f saugumo prane\u0161im\u0105 \u2014 ir paai\u0161k\u0117ja, kad b\u016btent \u0161i konfig\u016bracija leid\u017eia neautentifikuotam nutolusiajam u\u017epuolikui sutrikdyti nginx darbini\u0173 proces\u0173 darb\u0105 vienu u\u017eklausimu. Ir tai tik viena i\u0161 dviej\u0173 kritini\u0173 klaid\u0173, i\u0161taisyt\u0173 t\u0105 dien\u0105. F5 apra\u0161\u0117 \u0161e\u0161ias pa\u017eeid\u017eiamumo vietas NGINX produkt\u0173 ekosistemoje. Dvi i\u0161 j\u0173 \u2014 kritinio RCE lygio, abi su CVSS v4.0: 9.2 balu. CVE-2026-42530 \u2014 use-after-free modulyje ngx_http_v3_module, kuris apdoroja HTTP\/3 per QUIC. CVE-2026-42055 \u2014 heap tipo buferio perpildymas HTTP\/2 tarpininkavimo ir gRPC moduliuose. Abu leid\u017eia neautentifikuotam nutolusiajam u\u017epuolikui sugriauti nginx darbini\u0173 proces\u0173 darb\u0105, o sistemose be ASLR arba galint j\u012f apeiti \u2014 potencialiai vykdyti savavali\u0161ko kodo vykdym\u0105. Abu i\u0161taisyti nginx 1.31.2 versijoje, i\u0161leistoje t\u0105 pa\u010di\u0105 dien\u0105. Aktyvaus i\u0161naudojimo publikavimo metu nefiksuota. Ta\u010diau tai laikina situacija: CVE-2026-42945 (NGINX Rift) 2026 m. gegu\u017e\u0119 per ma\u017eiau nei savait\u0119 nuo vie\u0161o atskleidimo tapo aktyviai naudojama atakose. Veikiantis i\u0161naudojimo kodas buvo atkurtas i\u0161 pataisymo skirtumo beveik akimirksniu. N\u0117ra prie\u017easties tik\u0117tis, kad \u0161ios dvi klaidos elgsis kitaip. KAIP VEIKIA KLAIDA HTTP\/3 (CVE-2026-42530) HTTP\/3 veikia per QUIC transporto protokol\u0105, kuris \u2014 skirtingai nei TCP \u2014 duomenis perduoda per kelis nepriklausomus srautus vienos jungtis ribose. HTTP\/3 antra\u0161\u010di\u0173 glaudinimui naudojamas QPACK mechanizmas \u2014 jis sud\u0117tingesnis nei HTTP\/2 naudojamas HPACK, nes QUIC srautai gali atvykti bet kokia tvarka. QPACK naudoja du specialius valdymo srautus: encoder stream (siunt\u0117jas siun\u010dia glaudinimo lentel\u0117s atnaujinimus) ir decoder stream (gav\u0117jas patvirtina). Protokolas numato, kad kiekvienas i\u0161 \u0161i\u0173 sraut\u0173 atidaromas vien\u0105 kart\u0105 per jungt\u012f ir nebeatveriamas i\u0161 naujo. Klaida ngx_http_v3_module yra tai, kaip nginx apdoroja situacij\u0105, kai klientas jau veikian\u010dios HTTP\/3 sesijos metu bando atidaryti QPACK encoder stream i\u0161 naujo. Pirm\u0105 kart\u0105 atidarant sraut\u0105, nginx paskiria atmint\u012f duomen\u0173 strukt\u016broms. U\u017edarius \u2014 atlaisvina j\u0105. Kai klientas atidaro sraut\u0105 pakartotinai, nginx netinkamai patikrina \u0161i\u0105 ribin\u0119 s\u0105lyg\u0105: darbo procesas bando pasiekti jau atlaisvintas duomen\u0173 strukt\u016bras. Klasikinis use-after-free (CWE-416): skaitymas arba ra\u0161ymas \u012f atmint\u012f, kuri jau gr\u0105\u017einta alokatorius arba perduota kitam objektui. Pa\u017eeid\u017eiamos tik NGINX Open Source versijos 1.31.0 ir 1.31.1 \u2014 versijos, kuriose HTTP\/3 palaikymas buvo prid\u0117tas arba i\u0161 esm\u0117s pertvarkytas. \u0160aka 1.30.x nepaveikta. CWE-416 u\u017efiksuotas F5 prane\u0161ime vidinio ID NPS-8 numeriu. Klaid\u0105 atrado Trung Nguyen (@everping) i\u0161 CyStack \u2014 jo vardas nurodytas oficialaus nginx changelog dokumente. F5 advisory K000161616 papildomai nurodo Zhenpeng (Leo) Lin (depthfirst), Evan Hellman (@xintenseapple) i\u0161 Trail of Bits kartu su OpenAI, bei komandas AntAISecurityLab ir Nebula Security (@nebusecurity). KAIP VEIKIA KLAIDA HTTP\/2 TARPININKAVIME IR gRPC (CVE-2026-42055) \u0160i pa\u017eeid\u017eiamumo vieta reikalauja trij\u0173 nestandartini\u0173 konfig\u016bracijos parametr\u0173 vienu metu. Pirmas: HTTP\/2 tarpininkavimas \u012fjungtas per proxy_http_version 2 arba naudojama direktyva grpc_pass. Antras: direktyva ignore_invalid_headers nustatyta \u012f off. Tre\u010dias: large_client_header_buffers dydis vir\u0161ija 2 megabaitus. Pagal nutyl\u0117jim\u0105 visi trys parametrai nesudarys problem\u0173 \u2014 ignore_invalid_headers numatytoji reik\u0161m\u0117 yra on, o large_client_header_buffers pagal nutyl\u0117jim\u0105 \u2014 4 buferiai po 8 KB. Nusta\u010dius ignore_invalid_headers off, nginx nustoja filtruoti antra\u0161tes su netaisyklingais pavadinimais \u012f\u0117jimo ta\u0161ke ir perduoda jas toliau \u2014 \u012fskaitant formuojant u\u017eklausas \u012f vidin\u012f server\u012f. Moduliai ngx_http_proxy_v2_module ir ngx_http_grpc_module formuoja vidinio serverio u\u017eklaus\u0173 antra\u0161tes, kopijuodami duomenis \u012f heap bufer\u012f. \u0160io buferio dydis skai\u010diuojamas remiantis prielaida, kad antra\u0161t\u0117s buvo patikrintos. Kai large_client_header_buffers vir\u0161ija 2 MB ir tikrinimas i\u0161jungtas \u2014 u\u017epuolikas gali si\u0173sti pakankamai dideles antra\u0161tes, kad kopijavimas per\u017eengt\u0173 paskirto buferio ribas. Heap tipo buferio perpildymas (CWE-122) gadina gretimus alokatorius metaduomenis arba gyvus objektus heap atmintyje. Klaid\u0105 atrado Mufeed VH i\u0161 Winfunc Research \u2014 jo vardas nurodytas oficialiame nginx.org changelog dokumente versijai 1.31.2. Paveiktos nginx versijos nuo 1.13.10 iki 1.31.1: tai did\u017eiulis versij\u0173 diapazonas, apimantis beveik de\u0161imtmet\u012f. Pataisymas \u012ftrauktas \u012f NGINX Open Source 1.31.2 (mainline) ir 1.30.3 (stable), o komercin\u0117ms versijoms \u2014 \u012f NGINX Plus 37.0.2.1 ir R36 P6. KAIP TAI I\u0160NAUDOJAMA CVE-2026-42530 (HTTP\/3 UAF): u\u017epuolikas u\u017emezga HTTP\/3 ry\u0161\u012f su serveriu per UDP\/443. Jokio i\u0161ankstinio autentifikavimo nereikia \u2014 QUIC jungtis i\u0161 prigimties vie\u0161ai prieinama. Sesijos metu u\u017epuolikas atidaro QPACK encoder stream, u\u017edaro j\u012f ir atidaro i\u0161 naujo \u2014 veiksmas, kur\u012f protokolas draud\u017eia, ta\u010diau nginx 1.31.0\u20131.31.1 apdoroja netinkamai. Darbo procesas bando pasiekti jau atlaisvintas duomen\u0173 strukt\u016bras ir gri\u016bna su atminties pa\u017eeidimu. nginx automati\u0161kai paleid\u017eia i\u0161 naujo sugriovusius darbo procesus, tod\u0117l servisas atsistato \u2014 ta\u010diau kartojant t\u0105 pa\u010di\u0105 sesij\u0105 DoS trunka be pertraukos. CVE-2026-42055 (HTTP\/2\/gRPC heap overflow): u\u017epuolikas siun\u010dia HTTP u\u017eklaus\u0105 su ty\u010dia didel\u0117mis arba netaisyklingomis antra\u0161t\u0117mis \u2014 pakankamai didel\u0117mis, kad kopijavimas \u012f vidinio serverio strukt\u016bras per\u017eengt\u0173 apskai\u010diuoto buferio ribas. \u012e\u0117jimo filtravimas i\u0161jungtas direktyva ignore_invalid_headers off, tod\u0117l antra\u0161t\u0117s patenka tiesiai \u012f tarpininkavimo modulio heap bufer\u012f. Rezultatas tas pats: darbo proceso gri\u016btis, DoS. Svarbi detal\u0117 i\u0161 F5 advisory: &#8222;conditions beyond their control&#8221; \u2014 ty\u010dia pasirinkta formuluot\u0117. Ji rei\u0161kia, kad u\u017epuolikas negali visi\u0161kai kontroliuoti vis\u0173 s\u0105lyg\u0173: serveris turi b\u016bti sukonfig\u016bruotas specifi\u0161kai. B\u016btent tod\u0117l pa\u017eeid\u017eiamumas reikalauja trij\u0173 direktyv\u0173 derinio \u2014 tai ne tiesiog &#8222;si\u0173sk didel\u0119 antra\u0161t\u0119&#8221;, o &#8222;si\u0173sk didel\u0119 antra\u0161t\u0119 \u012f server\u012f, kuris ty\u010dia i\u0161jung\u0117 apsaug\u0105 ir padidino bufer\u012f&#8221;. Ta\u010diau i\u0161 u\u017epuoliko perspektyvos: jei konfig\u016bracija atitinka \u2014 technini\u0173 kli\u016b\u010di\u0173 neb\u0117ra. Viena HTTP u\u017eklausa su i\u0161p\u016bstomis antra\u0161t\u0117mis. KAS NUTINKA TOLIAU \u2014 PRIKLAUSO NUO KONFIG\u016aRACIJOS Sistemose su \u012fjungtu ASLR (numatytasis parametras visuose \u0161iuolaikiniuose Linux distributysuose) abi klaidos patikimai sukelia DoS \u2014 darbo proceso gri\u016bt\u012f ir paleidim\u0105 i\u0161 naujo. ASLR kiekvieno paleidimo metu atsitiktinai parinks atminties adresus, tod\u0117l nusp\u0117jamas vykdymo srauto valdymas po atminties pa\u017eeidimo tampa \u017eymiai sud\u0117tingesnis. Tai n\u0117ra apsauga nuo gri\u016bties, ta\u010diau nuo RCE \u2014 reik\u0161minga, nors ir ne absoliuti kli\u016btis. Sistemose be ASLR arba kai j\u012f galima apeiti \u2014 o vie\u0161as CVE-2026-42530 vaizdo demonstravimas jau egzistuoja ir tyr\u0117jai patvirtina ASLR ap\u0117jimo realum\u0105 \u2014 atminties pa\u017eeidimas tampa valdoma primityvine galimybe. CVE-2026-42055 heap overflow gadina gretimus alokatorius metaduomenis arba gyvus objektus \u2014 standartinis kelias \u012f vykdymo srauto per\u0117mim\u0105 nepriklausom\u0173 saugumo tyr\u0117j\u0173 vertinimu. CVE-2026-42530 use-after-free suteikia skaitymo\/ra\u0161ymo primityv\u0105 \u012f atlaisvint\u0105 atmint\u012f \u2014 analogi\u0161ka pradin\u0117 med\u017eiaga. F5 abiej\u0173 CVE advisory tai ai\u0161kiai nurodo: sistemose be ASLR arba galint j\u012f apeiti galimas savavali\u0161ko kodo vykdymas. Svarbi detal\u0117 i\u0161 oficialaus nginx.org changelog: CVE-2026-48142 \u2014 buferio perra\u0161ymas ngx_http_charset_module modulyje, i\u0161taisytas tame pa\u010diame 1.31.2 leidime \u2014 oficialiai apra\u0161ytas kaip sukeliantis &#8222;ribot\u0105 darbo proceso atminties atskleidim\u0105&#8221;. thecybersecguru.com tyr\u0117jai nurodo, kad tokia darbo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":20844,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[202,199,186,155],"tags":[635,636,637,638,639,640,641,642,314,643,393,644,338,381,645],"class_list":["post-20847","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cve-lt","category-linux-lt","category-nginx-lt","category-saugumas","tag-aslr","tag-cve-2026-42055","tag-cve-2026-42530","tag-f5","tag-grpc","tag-heap-overflow","tag-http-2","tag-http-3","tag-nginx","tag-nginx-security","tag-patch","tag-quic","tag-rce","tag-use-after-free","tag-vulnerability"],"_links":{"self":[{"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/posts\/20847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/comments?post=20847"}],"version-history":[{"count":2,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/posts\/20847\/revisions"}],"predecessor-version":[{"id":20851,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/posts\/20847\/revisions\/20851"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/media\/20844"}],"wp:attachment":[{"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/media?parent=20847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/categories?post=20847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/tags?post=20847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}