TL;DR: Takuar përballë mbushjes së tretë të zbuluar për vitin 2026 (dhe, sipas F5, RCE nëse nuk ka ASLR) gjatë punës me regexp dhe variablat, zhvilluesi i freenginx, Maksim Dunin, vendosi se ishte koha për ta ndalur këtë dhe shtoi në produktin e tij një kontroll të madhësisë së variablave para se të shkruhet në to. Nga aty ky novacion u mor dhe për në nginx, që jep shpresë për të ndaluar CVE të reja mbi këtë temë.
Tani detajet.
Më 19 qershor u realizua komit në freenginx, që shton në përshkrimin e variablave një fushë end, e cila tregon fundin e buffer-it. Më parë aty kishte vetëm një tregues në fillimin e tij (pos), dhe gjatësia e nevojshme llogaritej (dhe tani llogaritet) paraprakisht, dhe në momentin e kopjimit të të dhënave në variablat supozohej se gjatësia e llogaritur saktë më parë siguron se të dhënat do të hyjnë në buffer. Fatkeqësisht, tashmë dy herë në maj 2026 për shkak të lëshimeve të ndryshme kjo nuk ishte e vërtetë (1 (linux.org.ru), 2 (linux.org.ru)), e cila rezultoi në mbushje të buffer-it dhe pasoja të këqija. Ashtu që tani, gjatë krijimit të buffer-it variabla, plotësohet gjithashtu treguesi në fundin e saj, dhe para se të shkruhen të dhënat në variablë, nëse të dhënat nuk hyjnë, përpunimi i kërkesës do të përfundojë në mënyrë të kontrolluar me një gabim. Pra, gabimet e llogaritjes së gjatësisë mund të vazhdojnë të ekzistojnë, por ato tani nuk do të godasin memorien, por vetëm do të dështojnë kërkesën specifike http. Me komitët e ardhshme (2 (freenginx.org), 3 (freenginx.org)) u shtua një mbrojtje e ngjashme në vende të tjera të kodit, duke përfshirë kodin e mbajtjes së access-logut. Më 7 korrik, u publikua versione freenginx 1.31.3, duke përfshirë këtë rregullim.
Më 15 korrik këto komitete u morën nga nginx (1 (github.com), 2 (github.com), 3 (github.com), për çudi këmbimi i dytë dhe të tretë në zinxhir), problemit iu caktua CVE-2026-42533, dhe F5 publikoi një SA (f5.com).
NĂ« lidhje me njĂ« dobĂ«si tĂ« caktuar kĂ«tĂ« herĂ«: ajo shfaqet kur pĂ«rdoret direktiva map me regex me parametra tĂ« dallueshĂ«m. PĂ«rsa i pĂ«rket kushteve tĂ« tjera tĂ« nevojshme pĂ«r aktivizimin e saj, teksti nĂ« pĂ«rshkrimin e komitit dhe teksti nĂ« SA paksa ndryshojnĂ«: nĂ« SA Ă«shtĂ« pĂ«rmendur se mĂ« vonĂ« duhet tĂ« llogaritet njĂ« varg, i cili pĂ«rdor parametrin e dallueshĂ«m qĂ« mbetet nga map, pĂ«rpara se rezultati i kĂ«tij map. NĂ« pĂ«rshkrimin e komitit nĂ« shembullin ndĂ«rmjet kĂ«tyre hapave merr pjesĂ« gjithashtu zeroja e njĂ« variabli, qĂ« pĂ«rmban parametrin e dallueshĂ«m. Siç mund tĂ« jetĂ«, nĂ« shumicĂ«n e nginx-ave tĂ« instaluar, njĂ« gjĂ« e tillĂ« ka shumĂ« mundĂ«si tĂ« mos e gjejĂ«, dhe dobĂ«sia nĂ« kĂ«tĂ« mĂ«nyrĂ« ka prekur pak njerĂ«z. ĂshtĂ« po ashtu pĂ«r t'u vĂ«nĂ« re se nuk duket se korrigjimi i llogaritjes sĂ« gjatĂ«si specifike nĂ« kĂ«tĂ« rast nĂ« korrigjimet e komituara Ă«shtĂ« i pranishĂ«m (ose nuk kam kĂ«rkuar mirĂ«?), ka vetĂ«m mbrojtje, e cila e shndĂ«rron problemin nĂ« njĂ« dĂ«shtim tĂ« kontrolluar tĂ« HTTP-sĂ«. MegjithatĂ«, mĂ« 19 korrik nĂ« freenginx janĂ« shtuar disa korrigjime (5bfb, 7622, b906) pĂ«r llogaritjen e gjatĂ«si pĂ«r njĂ« situatĂ« tĂ« ngjashme, por nuk Ă«shtĂ« e qartĂ« nĂ«se Ă«shtĂ« kjo ose jo.
Dobësia u shfaq në versionin nginx 0.9.6, korrigjimet arritën në versionet freenginx 1.31.3, nginx 1.30.4, nginx 1.31.3.
Në SA të nginx përmenden falënderime për disa individë për njoftimet në lidhje me dobësinë dhe përndjekjen e "standardeve të zbuluar të koordinuar":
F5 e njohin Ming Xuan, DKD (@pidifn), Jiâan Zhou dhe Zhen Yan tĂ« AntAISecurityLab, Rafael Gacek, Sergii Negodiuk tĂ« EVO.company, Lam Jun Rong tĂ« Calif.io, Mufeed VH tĂ« Winfunc Research (winfunc.com), Vexera AI (https://vexera.ai), Tu Tran Dinh (@1w4y), Stan Shaw (cyberstan), qianshuidewajueji, zenneth (randomguy6407), Zhenpeng (Leo) Lin tĂ« depthfirst, Lukas Johannes Moeller, Melih Tolga Sahin tĂ« Vodafone TĂŒrkiye, Ayoub Nabil Boubagrat (GitHub: @ayoubnabil), dhe Milan Jovic (Kljunowsky) pĂ«r sjelljen e pavarur tĂ« kĂ«tij problemi nĂ« vĂ«mendjen tonĂ« dhe pĂ«r ndjekjen e standardeve mĂ« tĂ« larta tĂ« zbuluar tĂ« koordinuar.
Në freenginx, informacioni shoqërues për korrigjimin në fakt është i kufizuar në mesazhin gjatë komitit. Në changelog-e kjo korrigjim as që është shënuar me mbishkrimin "siguri" (security), as "korrigjim" (bugfix), por thjesht "shtesë" (feature). E mundshme që autori nuk e ka konsideruar këtë problem kritik. Si përputhen njoftimet për problemin nga individët e përmendur në F5 dhe komiti i marrë nga freenginx, nëse ata (ose dikush tjetër) i kanë lajmëruar autorit të freenginx për problemin, nuk arritëm ta zbulojmë.
Burimi: linux.org.ru
