A Zlib 1.4 kiadás számos biztonsági hibát javít: puffer-túlcsordulásokat, a pufferhatáron túli írásokat, a bemenet eleje előtti olvasást, inicializálatlan memória kimenetre másolását, az ablakon kívüli olvasást, valamint több minizip sebezhetőséget is. A biztonsági javítások mellett a Zlib 1.4 több CMake build rendszer frissítést, Android nagy fájlok támogatását, továbbfejlesztett dokumentációt és különféle hibajavításokat is tartalmaz.
A Zlib 1.4 kiadás letöltése és további részletek: zlib.net:
A zlib 1.4-es verziója számos jelentős változtatást tartalmaz az 1.3.2-es kiadáshoz képest. A frissítés elsősorban a biztonsági hibák javítására, a memória kezelésének megbízhatóbbá tételére, valamint a CMake-alapú fordítási folyamat korszerűsítésére összpontosít.
Kompatibilitást érintő, jelentős változások (Breaking changes)
A frissítés több olyan módosítást is tartalmaz, amely hatással lehet a meglévő projektekre és alkalmazásokra.
CMake és fordítási beállítások
- A minimálisan támogatott CMake-verzió 3.12-ről 3.15-re emelkedett.
- Az MSVC környezetben megváltoztak a könyvtárfájlok nevei:
- A
z.dllhelyettlibz.dllhasználatos. - A
z.libhelyettlibz.liblett az elnevezés. - A statikus könyvtár neve
libzs.liblett.
- A
- A minizip könyvtárainak elnevezése szintén megváltozott.
- Cygwin alatt a könyvtárfájlok nevei mostantól
libelőtagot kapnak. - A zlib részeként fordított kiegészítő modulok (contrib) és tesztek célnevei
zlib_előtagot kaptak. Több tesztelési cél elnevezését is egységesítették, példáulzlib_examplestaticésminigzipstaticnévre. - A zlib1.dll
ENABLE_BZIP2kapcsolójának neveZLIB1_DLL_ENABLE_BZIP2lett.
Adattípusok és működésbeli változások
- A
z_off_talapértelmezett típusa ismétlonglett, az 1.3.1-es verzióhoz hasonlóan. Az 1.3.2-es verzióban ezlong longvolt. Emiatt a Windows alatt az 1.3.2-es fejlécekkel fordított alkalmazásokat újra kell fordítani. - A
deflateReset()mostantól visszaállítja adeflateSetHeader()segítségével beállított gzip fejlécet is. Ha egy alkalmazás arra támaszkodott, hogy a fejléc visszaállítás után is megmarad, akkor azt újra be kell állítania. - A nyers DEFLATE-tömörítés mostantól
Z_STREAM_ENDértékkel tér vissza, ha a tömörítés pontosan a kimeneti puffer végén fejeződik be. Korábban ilyen esetbenZ_OKvolt a visszatérési érték. - A
gzopen()függvény"x"módban mostantól hibát jelez olyan rendszereken, ahol azO_EXCLnem támogatott, ahelyett, hogy egy már létező fájlt csonkolna. - A gzip-adatok olvasásakor a könyvtár először visszaadja a hiba bekövetkezése előtt már kitömörített adatokat, és csak ezt követően jelzi az olvasási hibát.
2. Biztonsági javítások (Security fixes)
A 1.4-es verzió egyik legfontosabb újdonsága a korábbi verziókban feltárt biztonsági sérülékenységek javítása.
A módosítások elsősorban a puffertúlcsordulások, a hibás memóriakezelés, a memórián kívüli olvasások és írások, valamint a nem megfelelő ZIP-fájlok feldolgozásából eredő problémák megszüntetésére irányulnak.
A zlib alapkönyvtár biztonsági javításai
gzwrite()– Puffertúlcsordulás: A nem blokkoló működési módban használtgzwrite()függvény puffertúlcsordulási hibáját javították. A hiba azonosítója: CVE-2026-85091.inflateGetDictionary()– Memórián kívüli írás: A függvény akár 8 MB-tal is túlírt a hívó által biztosított, 32 KB-os pufferen. A probléma hibás ablakméretet tartalmazó zlib-fejléc feldolgozásakor, majd azinflateReset()vagyinflateSync()meghívásakor jelentkezhetett. Az 1.3.1-es és 1.3.2-es verziót is érintette.inflateSync()– Hibás memóriakezelés: Ha az ablakméret még nem volt ismert, a függvény mindössze egy bájtos ablakot foglalt le, amelyet később túl lehetett írni.inflatePrime()– Hibás memóriacímzés: A függvény olyan állapotot idézhetett elő, amelyben azinflate()a bemeneti puffer kezdete előtti memóriaterületet olvasta.deflatePrime()– Puffertúlcsordulás: A függvény ismételt meghívása esetén a művelet túlléphette a rendelkezésre álló belső puffer határait.inflateBack()– Hibás távolságellenőrzés: A függvény nem megfelelően ellenőrizte a visszafelé történő hivatkozások távolságát, így inicializálatlan memóriaterületről is másolhatott adatokat a kimenetre.gzseek()– Inicializálatlan memória használata: Ha a függvényt előre történő pozicionálásra használták még azelőtt, hogy bármilyen adatot írtak volna, inicializálatlan memóriaterület kerülhetett a gzip-kimenetbe.deflateResetKeep()– Memórián kívüli olvasás: A tömörítési folyamat közbeni használat esetén a függvény a belső ablakon kívüli memóriaterületet is olvashatta.gzdopen()– Fájlkezelés: A függvény mostantól a megfelelő jelző használatával állítja be aclose-on-exectulajdonságot, ezzel javítva a fájlleírók kezelésének biztonságát.
Minizip biztonsági javításai
A minizip ZIP-fájlok létrehozására és kibontására szolgáló komponensében is több fontos hibát javítottak.
- Memóriakezelési hibák: Megszüntették a
block_central_name()függvényben előforduló dupla felszabadítást (double free), valamint azipAlreadyThere()ismételt meghívásakor, hibás központi könyvtár esetén fellépő NULL-pointer hivatkozást. - Extra mezők ellenőrzése: A
zipRemoveExtraInfoBlock()függvényben bevezették az extra mezők méretének ellenőrzését, valamint a hordozható és igazításbiztos adatolvasást. - ZIP64-adatok feldolgozása: Az
unzipmostantól nem olvas ZIP64-adatokat az adott extra mező határain kívülről. Emellett kizárólag a központi könyvtár végrekordja előtt közvetlenül található ZIP64-helymeghatározót használja. Ez azért fontos, mert korábban speciálisan összeállított archívumok esetén a minizip más bejegyzéseket jeleníthetett meg, mint más ZIP-kezelő programok. - Könyvtárbejárás elleni védelem (Path Traversal): A
miniunzkorábban képes lehetett a kibontási könyvtáron kívülre fájlokat vagy könyvtárakat létrehozni. Windows alatt akár tetszőleges helyre is írhatott fájlokat. A javítás során az útvonalak feldolgozását komponensenként végzik, így jelentősen csökkentették az ilyen típusú támadások lehetőségét.
Contrib/infback9 biztonsági javítás
Az inftree9.c fájlban megszüntették a tömbhatáron kívüli pointeraritmetikát.
A javítás a CVE-2026-4738 azonosítójú problémát érinti. Bár a sérülékenység kritikus besorolása túlzónak tekinthető, bizonyos speciális hardverarchitektúrákon, például CHERI-alapú rendszereken hibát vagy megszakítást okozhatott.

