knihovna zlib, vyvinul Jean-Loup Gailly a Mark Adler, je nezbytnou součástí protože se používá v široké škále aplikací, které jsou zaměřené na kompresi souborů ve formátech jako ZIP, gzip a PNG díky své efektivitě a všestrannosti. Tato knihovna existuje od roku 1995 a v důsledku jeho širokého používání se také stal terčem mnoha zranitelností v zabezpečení paměti.
Jádrem zlib je kompresní algoritmus DEFLATE, který kombinuje techniky bezztrátové komprese dat algoritmu LZ77 s Huffmanovou stromovou strukturou pro dosažení pozoruhodných kompresních rychlostí. Díky této kombinaci technik je zlib extrémně efektivní při kompresi a dekompresi dat, takže je zvláště užitečný v aplikacích, kde je úložný prostor nebo šířka pásma omezená.
Kromě komprese souborů, zlib Používá se také při přenosu komprimovaných dat v sítích, aby se snížilo zatížení šířky pásma, v aplikacích pro ukládání a zpracování souborů, stejně jako v multimediálních aplikacích pro kompresi audio a video dat.
Přesčas, zlib čelil některým zranitelnostem, které byly vyřešeny v pozdějších verzích zlib, jako jsou výše uvedené CVE-2005-1849, CVE-2016-9840, CVE-2016-9841 a CVE-2016-9842 (jen zmínit některé známé ze zlib), které by mohly být zneužity útočníky způsobit odmítnutí služby (DoS) nebo dokonce spustit libovolný kód a že kvůli bezpečnostním chybám paměti, které jsou běžné pro kompresní knihovny napsané v C/C++, zůstává zlib hlavním cílem.
Aby se tyto problémy vyřešily, aniž bychom ponechali stranou povahu a výhody zlib, ISRG (organizace stojící za projektem Let's Encrypt a věnující se zlepšování bezpečnosti internetu) nedávno oznámila spuštění nového projektu Jeho účelem je vytvořit obdobu zlib v programovacím jazyce Rust.
V prosinci 2023 jsme najali Tweede Golf pro počáteční implementaci založenou na zlib-ng se zaměřením na udržení vynikajícího výkonu při současném zavedení bezpečnosti paměti.
Co bude dál
V současné době sháníme finanční prostředky na dokončení prací nezbytných pro přípravu počáteční implementace do výroby.
Nová alternativa se nazývá "zlib-rs" a toto je prezentováno jako řešení zlib napsané v Rustu s primárním cílem řešit bezpečnostní problémy spojené s chybami paměti a zranitelností, které se obvykle vyskytují v knihovnách komprese napsaných v C/C++.
Vývoj zlib-rs vzniká v reakci na statistiky od Microsoftu a Google, které naznačují, že přibližně 70 % zranitelností je způsobeno nezabezpečenou správou paměti. Použitím Rustu jako programovacího jazyka se očekává výrazné snížení rizika těchto zranitelností, jako je přístup k uvolněným paměťovým oblastem nebo přetečení vyrovnávací paměti.
El Proyecto zlib-rs obsahuje implementaci Rust formátu souboru zlib, která je kompatibilní s rozhraním zlib API a úložiště v současné době pracuje na dvou implementacích:
- zlib-rs, implementace Rust založená na zlib se zabezpečeným rozhraním Rust API (v současnosti je považována za nestabilní, ale očekává se, že implementaci brzy stabilizuje).
- libz-rs-sys, a C API a C API pro zlib-rs . Rozhraní API je v podstatě ekvivalentní zlib-sys a zlib-ng-sys, ale v současné době neposkytuje rodinu funkcí gz*. Z pohledu rzi není toto API příliš ergonomické, takže prozatím doporučujeme pracovat s flate2.
Pokud jde o práci v současném vývoji, je zmíněno, že nabídka analogu v Rustu může přitáhnout pozornost ostatních a mohou se přidat k dílu, protože nabídka alternativy zaměřené na bezpečnost a prevenci běžných chyb může v řádu několika let práce a rozvoje poskytují transparentní náhradu za zlib.
Na závěr se sluší zmínit, že dílo zlib-rs je aktuálně publikováno na GitHubu v následujícím úložišti a kód je distribuován pod licencí Zlib. Více o tom můžete zkontrolovat en následující odkaz.