Do freenginx a nginx bola pridaná kontrola veľkosti textovej premennej predtým, ako sa do nej zapíšu údaje (+ CVE)


3

TL;DR: Po zistení tretieho prepĺňania vedúcej pamäte (a podľa F5, RCE ak nie je ASLR) pri práci s regulárnymi výrazmi a premennými, sa vývojár freenginx Maxim Dunin rozhodol, že je načase to zastaviť, a pridal do svojho produktu kontrolu veľkosti premennej predtým, ako do nej zapíše údaje. Odtiaľto si toto novinky vzal aj nginx, čo dáva nádej na ukončenie nových CVE na túto tému.

Teraz podrobnosti.

19. júna bola spravená změnu vo freenginx, ktorá pridáva do popisu premennej pole end, ktoré signalizuje koniec buffera. Predtým tam bol len ukazovateľ na jeho začiatok (pos), potrebná dĺžka sa vypočítavala (a stále vypočítava) vopred, a v čase kopírovania údajov do premennej sa predpokladalo, že správne vypočítaná dĺžka zaručuje, že údaj sa zmestí do buffera. Bohužiaľ, už dvakrát v máji 2026 to z rôznych prehliadnutí tak nebolo (1 (linux.org.ru), 2 (linux.org.ru)), čo viedlo k preplneniam buffera a zlým následkom. Takže teraz pri vytváraní buffera premennej sa ukladá aj ukazovateľ na jej koniec, a pred zápisom do premennej údajov, ak sa údaje do nej nezmestia, spracovanie požiadavky bude kontrolovateľne ukončené s chybou. To znamená, že chyby vo vypočítaní dĺžky môžu aj naďalej existovať, ale teraz sa nebudú šíriť po pamäti, ale len zlyhávať konkrétnu http-žiadosť. Nasledujúcimi commitmi (2 (freenginx.org), 3 (freenginx.org)) bola pridaná podobná ochrana do iných častí kódu, vrátane kódu pre vedenie prístupového logu. 7. júla bola zverejnená verzia freenginx 1.31.3, ktorá obsahuje toto opravenie.

15. júla boli tieto commity prevzaté nginx-om (1 (github.com), 2 (github.com), 3 (github.com), nejakým spôsobom zamieňajúc druhý a tretí v reťazci), problému bola pridelená CVE-2026-42533, a F5 vydalo oficiálne SA (f5.com).

Pokiaľ ide o konkrétnu zraniteľnosť tentokrát: prejavuje sa pri používaní direktívy map s regulárnymi výrazmi a vyčlenenými parametrami. Čo sa týka ostatných podmienok potrebných na jej aktiváciu, text v popise commitu a text v SA sa trochu líšia: v SA je uvedené, že v budúcnosti by malo byť vypočítané akési reťazec, ktorý využíva vyčlenený parameter z map, skôr ako výsledok toho istého mapu. V popise commitu je v príklade medzi týmito krokmi zahrnuté aj nulovanie premennej, ktorá obsahuje vyčlenený parameter. Ako tak, v väčšine nasadených nginx-ov sa podobné pravdepodobne nestretne, a zraniteľnosť takto malo koho zasiahla. Takisto je potrebné poznamenať, že opravy výpočtu dĺžky konkrétne v tomto prípade v zakommitovaných úpravách sa zdajú chýbať (alebo som hľadal zle?), existuje iba ochrana, ktorá tento problém premení na kontrolované zlyhanie HTTP požiadavky. Hoci 19. júla sa do freenginx pridali akési opravy (5bfb, 7622, b906) výpočtu dĺžky pre podobnú situáciu, ale presne na prvý pohľad to nie je jasné, či to tak je alebo nie.

Zraniteľnosť sa objavila vo verzii nginx 0.9.6, opravy sa dostali do verzií freenginx 1.31.3, nginx 1.30.4, nginx 1.31.3.

V SA nginx sú uvedené poďakovania niekoľkým osobám za nezávislé správy o zraniteľnosti a dodržiavanie „štandardov koordinovaného zverejnenia informácií“:

F5 uznáva Ming Xuan, DKD (@pidifn), Ji’an Zhou a Zhen Yan z AntAISecurityLab, Rafaela Gaceka, Sergiia Negodiuka z EVO.company, Lama Jun Ronga z Calif.io, Mufeed VH z Winfunc Research (winfunc.com), Vexera AI (https://vexera.ai), Tu Tran Dinh (@1w4y), Stan Shaw (cyberstan), qianshuidewajueji, zenneth (randomguy6407), Zhenpeng (Leo) Lin z depthfirst, Lukasa Johannesa Moellera, Melih Tolga Sahina z Vodafone Türkiye, Ayoub Nabil Boubagrat (GitHub: @ayoubnabil) a Milana Jovica (Kljunowsky) za to, že na túto problematiku nezávisle upozornili a dodržiavali najvyššie štandardy koordinovaného zverejnenia.

Vo freenginx sprievodné informácie o oprave sa v podstate obmedzujú na správu pri commite. V changelog-e nie je táto oprava označená ani podpisom „bezpečnosť“ (security), ani „oprava“ (bugfix), jednoducho „pridanie“ (feature). Pravdepodobne autor považoval tento problém za nie kritický. Ako súvisia správy o probléme zo strany uvedených osôb v F5 a získaný z freenginx commit, či informovali (alebo niekto iný) autora freenginx o probléme, zistiť sa nepodarilo.

Zdroj: linux.org.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster