Megjelent a Zlib 1.4, több mint egy tucat biztonsági hibajavítással

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

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.dll helyett libz.dll használatos.
    • A z.lib helyett libz.lib lett az elnevezés.
    • A statikus könyvtár neve libzs.lib lett.
  • A minizip könyvtárainak elnevezése szintén megváltozott.
  • Cygwin alatt a könyvtárfájlok nevei mostantól lib elő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ául zlib_examplestatic és minigzipstatic névre.
  • A zlib1.dll ENABLE_BZIP2 kapcsolójának neve ZLIB1_DLL_ENABLE_BZIP2 lett.

Adattípusok és működésbeli változások

  • A z_off_t alapértelmezett típusa ismét long lett, az 1.3.1-es verzióhoz hasonlóan. Az 1.3.2-es verzióban ez long long volt. 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 a deflateSetHeader() 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 esetben Z_OK volt a visszatérési érték.
  • A gzopen() függvény "x" módban mostantól hibát jelez olyan rendszereken, ahol az O_EXCL nem 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ált gzwrite() 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 az inflateReset() vagy inflateSync() 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 az inflate() 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 a close-on-exec tulajdonsá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 a zipAlreadyThere() 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 unzip mostantó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 miniunz korá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.