TL;DR: Përballë mbushjes së tretë të zbuluar për vitin 2026 që ndodhi (dhe, sipas F5, RCE nëse nuk ka ASLR) gjatë punës me regex dhe variablat, zhvilluesi i freenginx, Maksim Dunin, vendosi se ishte koha ta ndalonte këtë, dhe shtoi në produktin e tij kontrollin e madhësisë së variablës para se të shkruante të dhëna në të. Nga aty ky risi u mor dhe nga nginx, e cila jep shpresë për të ndalur CVE të reja mbi këtë temë.
Tani detajet.
Më 19 qershor u bë komit në freenginx, që shton në përshkrimin e variablës një fushë end, e cila tregon fundin e mbushjes. Më parë kishte vetëm një tregues drejt fillimit të tij (pos), dhe gjatësia e nevojshme llogaritej (dhe tani llogaritet) paraprakisht, dhe në momentin e kopjimit të të dhënave në variabël supozohej se gjatësia e llogaritur më parë do të garantonte që të dhënat të gjenin vend në mbushje. Fatkeqësisht, dy herë në maj 2026 për shkak të mangësive të ndryshme, kjo nuk ka qenë kështu (1 (linux.org.ru), 2 (linux.org.ru)), që ka çuar në mbushje të mbushjes dhe pasojat e këqija. Pra tani, kur krijohet mbushja, plotesohet gjithashtu dhe treguesi i fundit të saj, dhe para se të shkruhen të dhënat në variabël, nëse të dhënat nuk hynë, përpunimi i kërkesës do të mbyllet në mënyrë të kontrolluar me një gabim. Domethënë, gabimet në llogaritjen e gjatësisë mund të ndodhin përsëri, por tani do të dështojnë vetëm një kërkesë të veçantë http, dhe nuk do të dëmtojnë memorien. Me angazhimet e ardhshme (2 (freenginx.org), 3 (freenginx.org)) mbrojtja e ngjashme u shtua në vende të tjera të kodit, duke përfshirë kodin për mbajtjen e access-logut. Më 7 korrik u publikua versioni freenginx 1.31.3, që përfshin këtë rregullim.
Më 15 korrik këta angazhime u morën nga nginx (1 (github.com), 2 (github.com), 3 (github.com), për ndonjë arsye ndërruan vendet e dytë dhe të tretë në zinxhir), problemit iu dha CVE-2026-42533, dhe F5 publikoi zyrtarisht SA (f5.com).
Sa lidhje me njĂ« dobĂ«si tĂ« veçantĂ« kĂ«tĂ« herĂ«: ajo shfaqet gjatĂ« pĂ«rdorimit tĂ« direktivĂ«s map me regex me parametra tĂ« dhĂ«nĂ«. NĂ« lidhje me kushtet e tjera tĂ« nevojshme pĂ«r funksionimin e saj, teksti nĂ« pĂ«rshkrimin e komitetit dhe teksti nĂ« SA paksa ndryshojnĂ«: nĂ« SA thuhet se pĂ«r mĂ« vonĂ« duhet tĂ« ketĂ« njĂ« llogaritje tĂ« njĂ« vargu, i cili pĂ«rdor parametrin e dhĂ«nĂ«, i mbetur nga map, para se tĂ« sillet rezultati i po atij map. NĂ« pĂ«rshkrimin e komitetit, nĂ« shembujt midis kĂ«tyre hapave merr pjesĂ« gjithashtu rivlerĂ«simi i njĂ« variabli qĂ« pĂ«rmban parametrin e dhĂ«nĂ«. ĂfarĂ«do qĂ« tĂ« ndodhĂ«, nĂ« shumicĂ«n e nginx-ve tĂ« funksionuar, njĂ« gjĂ« e tillĂ« ndoshta nuk do tĂ« haset, dhe kĂ«shtu dobĂ«sia nĂ« kĂ«tĂ« mĂ«nyrĂ« ka prekur pak njerĂ«z. Duhet gjithashtu tĂ« theksohet se rregullimet e llogaritjes sĂ« gjatĂ« nĂ« kĂ«tĂ« rast tĂ« veçantĂ« nĂ« rregullimet e komituara duket se nuk ekzistojnĂ« (ose ndoshta nuk kam kĂ«rkuar siç duhet?), ka vetĂ«m mbrojtje qĂ« e shndĂ«rron problemin nĂ« njĂ« dĂ«shtim tĂ« kontrolluar tĂ« HTTP-sĂ«. Edhe pse mĂ« 19 korrik nĂ« freenginx janĂ« shtuar disa rregullime5bfb, 7622, b906) tĂ« llogaritjes sĂ« gjatĂ« pĂ«r njĂ« situatĂ« tĂ« ngjashme, por nuk kuptohet menjĂ«herĂ« nĂ«se Ă«shtĂ« kĂ«shtu apo jo.
Dobësia shfaqet në versionin nginx 0.9.6, rregullimet janë përfshirë në versionet freenginx 1.31.3, nginx 1.30.4, nginx 1.31.3.
Në SA të nginx janë shprehur falënderime ndaj disa individëve për njoftimin e pavarur mbi dobësinë dhe për mbajtjen e "standardet e shpërndarjes të koordinuara":
F5 e nxit 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 njoftimin e pavarur tĂ« kĂ«tij problemi dhe pĂ«r ndjekjen e standardeve mĂ« tĂ« larta tĂ« shpĂ«rndarjes tĂ« koordinuara.
Në freenginx, informacioni shoqërues mbi rregullimin në fakt kufizohet në njoftimin gjatë komitetit. Në changelog- e ky rregullim as nuk është shënuar me asnjë nënshkrim "siguri" (security), as "rregullim" (bugfix), thjesht "shtesë" (feature). Ndoshta autori nuk e ka konsideruar këtë problem kritik. Si lidhen njoftimet për problemin nga individët e përmendur në F5 dhe komiteti i marrë nga freenginx, nëse ata (ose ndokush tjetër) i kanë raportuar problemin autorit të freenginx, nuk mund të zbulohet.
Burimi: linux.org.ru
