Röviden összefoglalva: A 2026-os év harmadik észlelt puffer-túlcsordulása (és az F5 szerint RCE, ha nincs ASLR) során reguláris kifejezések és változók használata közben a freenginx fejlesztője, Makszim Dunin úgy határozott, itt az ideje véget vetni ennek, és hozzáadta a termékéhez a változó méretének ellenőrzését, mielőtt adatokat írna bele. Ezt az újítást magukkal hozták az nginx-hoz is, ami reményt ad arra, hogy a jövőben ne számítsunk új CVE-kre ezzel kapcsolatban.
Most a részletek.
Június 19-én készült commit-ra. a freenginxben, amely a változó leírójához hozzáadott egy end mezőt, jelezve a puffer végét. Korábban csak a kezdeti pozíció (pos) mutatója volt ott, a szükséges hosszúságot előre számolták (és most is számolják), és a változóba történő másolás időpontjára már feltételezték, hogy a korábban helyesen kiszámolt hosszúság garantálja, hogy az adatok beleférnek a pufferbe. Sajnos, 2026 májusában már kétszer is különböző figyelmetlenségek miatt ez nem így volt (1 (linux.org.ru), 2 (linux.org.ru)), ami puffertúlcsorduláshoz és kedvezőtlen következményekhez vezetett. Most viszont, amikor puffer változó jön létre, a végére mutató mutató is beállításra kerül, és ha az adatok nem férnek bele a változóba az írás előtt, a kérés feldolgozása kontrollált körülmények között hibával fejeződik be. Ez azt jelenti, hogy a hosszúsági számítások hibái továbbra is előfordulhatnak, de ezek most már nem ram-ot fognak ütni, hanem csak egy konkrét http-kérést fognak elutasítani. A következő commitok (2 (freenginx.org), 3 (freenginx.org)) hasonló védelmet vezettek be a kód más részein is, beleértve az access-log kezelésének kódját. Július 7-én megjelent a következő verzió: freenginx 1.31.3, amely tartalmazza ezt a javítást.
Július 15-én ezeket az elkötelezéseket átvette az nginx (1 (github.com), 2 (github.com), 3 (github.com), valamiért felcserélve a másodikat és a harmadikat a láncban), a problémát pedig érdemelt CVE-2026-42533, az F5 pedig kiadta az hivatalos SA (f5.com).
A konkrét sebezhetőséggel kapcsolatosan: ez a map direktívák használatakor jelentkezik, amelyek kiemelt paraméterekkel rendelkező reguláris kifejezéseket alkalmaznak. A többi szükséges feltétel, amely a működéséhez szükséges, eltér a commit leírásban és a SA szövegében: a SA-ban az áll, hogy később egy bizonyos string kiszámítása történik, amely a map-ból származó kiemelt paramétert használja, még mielőtt a map eredménye megérkezik. A commit leírásában azonban a példában e lépések között szerepel egy változó nullázása, amely a kiemelt paramétert tartalmazza. Bárhogy is legyen, a legtöbb futó nginx példányban valószínűleg nem lesz ilyen helyzet, így a sebezhetőség ilyen módon keveseket érintett. Érdemes megjegyezni, hogy a hosszmérési javításokban a konkrét esetben a commitokban látszólag nincsenek (vagy rosszul kerestem?), csupán egy védelem van, amely a problémát kontrollált HTTP-kérés hibává alakítja. Bár július 19-én a freenginxhez valamilyen javítások kerültek be5bfb, 7622, b906) a hasonló helyzetek hosszának számításához, de azonnal nem lehet megmondani, hogy ez az, vagy sem.
A sebezhetőség az nginx 0.9.6 verzióban jelent meg, a javítások a freenginx 1.31.3, nginx 1.30.4, nginx 1.31.3 verziókban kerültek be.
A SA ban az nginx köszönetet mondott számos személynek a sebezhetőség független bejelentéséért és a "koordinált információ közzétételi szabványok" betartásáért:
F5 köszönetet mond Ming Xuan-nak, DKD-nek (@pidifn), Ji’an Zhou-nak, és Zhen Yan-nak az AntAISecurityLab-tól, Rafael Gacek-nek, Sergii Negodiuk-nak az EVO.company-tól, Lam Jun Rong-nak a Calif.io-tól, Mufeed VH-nak a Winfunc Research-tól (winfunc.com), Vexera AI-nak (https://vexera.ai), Tu Tran Dinh-nek (@1w4y), Stan Shaw-nak (cyberstan), qianshuidewajueji-nek, zenneth-nek (randomguy6407), Zhenpeng (Leo) Lin-nek a depthfirst-től, Lukas Johannes Moeller-nek, Melih Tolga Sahin-nak a Vodafone Türkiye-től, Ayoub Nabil Boubagratnak (GitHub: @ayoubnabil), és Milan Jovic-nak (Kljunowsky) azért, hogy függetlenül felhívták figyelmünket erre a problémára, és követték a koordinált közzététel legmagasabb szabványait.
A freenginxhez tartozó kísérő információ a javításokról lényegében a commit üzenetre korlátozódik. Az OpenBSD 7.6 kiadás-es javítás még csak nem is volt megjelölve sem „biztonság” (security), sem „javítás” (bugfix) aláírással, csupán „kiegészítés” (feature). Valószínűleg a szerző nem tartotta ezt a problémát kritikusnak. A F5 által jelzett probléma üzenetei és a freenginx commit-ból átvett információ közötti kapcsolat, valamint hogy tájékoztatták-e őt (vagy más valaki) a freenginx szerzőjének a problémáról, nem derült ki.
Forrás: linux.org.ru
