Freenginx och nginx kontrollerar nu storleken pÄ en textvariabel innan data skrivs till den (+ CVE)


3

TL; DREfter att ha stött pÄ det tredje buffertöverflödet som upptÀcktes 2026 (och, enligt F5, en RCE om det inte finns nÄgon ASLR) nÀr man arbetade med regexps och variabler, bestÀmde sig freenginx-utvecklaren Maxim Dunin för att det var dags att stoppa det och lade till en variabelstorlekskontroll i sin produkt innan data skrevs till den. Nginx har sedan dess kopierat den hÀr funktionen, vilket ger hopp om att nya CVE:er relaterade till detta problem kommer att elimineras.

Nu till detaljerna.

19 juni gjordes begĂ„ i Freenginx, som lĂ€gger till ett slutfĂ€lt till variabeldeskriptorn, vilket indikerar slutet pĂ„ bufferten. Tidigare fanns det bara en pekare till dess början (pos), den erforderliga lĂ€ngden berĂ€knades (och berĂ€knas fortfarande) i förvĂ€g, och nĂ€r data kopierades till variabeln antogs det att den korrekt berĂ€knade lĂ€ngden skulle garantera att data skulle passa in i bufferten. TyvĂ€rr har detta redan visat sig vara felaktigt tvĂ„ gĂ„nger i maj 2026 pĂ„ grund av olika förbiseenden.1 (linux.org.ru), 2 (linux.org.ru)), vilket ledde till buffertöversvĂ€mningar och allvarliga konsekvenser. NĂ€r en variabels buffert skapas fylls Ă€ven pekaren till dess slut, och innan data skrivs till variabeln, om data inte passar, avslutas begĂ€ran med ett fel pĂ„ ett kontrollerat sĂ€tt. Detta innebĂ€r att lĂ€ngdberĂ€kningsfel fortfarande kan kvarstĂ„, men de slösar inte minne; de ​​misslyckas bara med den specifika HTTP-förfrĂ„gan. Följande commits (2 (freenginx.org), 3 (freenginx.org)) liknande skydd lades till i andra delar av koden, inklusive Ă„tkomstloggningskoden. En version publicerades den 7 juli Freenginx 1.31.3, vilket inkluderar den hĂ€r korrigeringen.

Den 15 juli hÀmtades dessa commits av nginx (1 (github.com), 2 (github.com), 3 (github.com), av nÄgon anledning byter man ut den andra och tredje i kedjan), tilldelades problemet CVE-2026-42533, och F5 slÀppte en officiell SA (f5.com).

AngĂ„ende den specifika sĂ„rbarheten den hĂ€r gĂ„ngen: den manifesterar sig nĂ€r map-direktivet anvĂ€nds med regexps med extraherade parametrar. AngĂ„ende de andra villkoren som krĂ€vs för att den ska utlösas, skiljer sig texten i commit-beskrivningen och texten i SA:n nĂ„got: SA anger att en viss strĂ€ng mĂ„ste berĂ€knas hĂ€rnĂ€st, vilket anvĂ€nder den extraherade parametern som Ă€r kvar frĂ„n map, före resultatet av samma map. I commit-beskrivningen i exemplet, mellan dessa steg, nollstĂ€lls Ă€ven variabeln som innehĂ„ller den extraherade parametern. Hur som helst Ă€r det osannolikt att detta intrĂ€ffar i de flesta nginx-maskiner som körs, och dĂ€rför drabbade sĂ„rbarheten fĂ„ personer. Det Ă€r ocksĂ„ vĂ€rt att notera att en korrigering för lĂ€ngdberĂ€kningen specifikt för detta fall inte finns i de committade redigeringarna (eller sökte jag dĂ„ligt?), det finns bara ett skydd som förvandlar problemet till ett kontrollerat HTTP-förfrĂ„gningsfel. Även om vissa korrigeringar lades till i freenginx den 19 juli (5bfb, 7622, b906) berĂ€kna lĂ€ngden för en liknande situation, men det Ă€r inte omedelbart klart om sĂ„ Ă€r fallet eller inte.

SÄrbarheten uppstod i version 0.9.6 av nginx, korrigeringar inkluderades i versionerna freenginx 1.31.3, nginx 1.30.4 och nginx 1.31.3.

Nginx SA tackar ett antal personer för att de oberoende rapporterat sÄrbarheten och följt "samordnade offentliggörandestandarder":

F5 tackar Ming Xuan, DKD (@pidifn), Ji'an Zhou och Zhen Yan frĂ„n AntAISecurityLab, Rafael Gacek, Sergii Negodiuk frĂ„n EVO.company, Lam Jun Rong frĂ„n Calif.io, Mufeed VH frĂ„n Winfunc Research (winfunc.com), Vexera AI (https://vexera.ai), Tu Tran Dinh (@1w4y), Stan Shaw (cyberstan), qianshuidewajueji, zenneth (randomguy6407), Zhenpeng (Leo) Lin frĂ„n depthfirst, Lukas Johannes Moeller, Melih Tolga Sahin frĂ„n Vodafone TĂŒrkiye, Ayoub Nabil Boubagrat (GitHub: @ayoubnabil) och Milan Jovic (Kljunowsky) för att de oberoende uppmĂ€rksammat oss pĂ„ denna frĂ„ga och följt de högsta standarderna för samordnad offentliggörande.

I freenginx Àr den medföljande informationen om fixen faktiskt begrÀnsad till commit-meddelandet. changelogDenna fix Àr inte ens mÀrkt som "sÀkerhet" eller "buggfix", bara "funktion". Tydligen ansÄg författaren inte att problemet var kritiskt. Det Àr omöjligt att faststÀlla sambandet mellan de rapporterade problemen av de ovannÀmnda individerna i F5 och commiten som kopierades frÄn freenginx, eller om de (eller nÄgon annan) rapporterade problemet till freenginx-författaren.

KĂ€lla: linux.org.ru

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster