Zlib biblioteka, sukūrė Jean-Loup Gailly ir Mark Adler, yra esminis komponentas nes jis naudojamas įvairiose srityse sutelktas į failų glaudinimą tokiais formatais kaip ZIP, gzip ir PNG dėl savo efektyvumo ir universalumo. Ši biblioteka veikia nuo 1995 m ir dėl plačiai paplitusio naudojimo ji taip pat buvo daugelio atminties saugos spragų taikinys.
zlib esmė yra DEFLATE glaudinimo algoritmas, kuris sujungia LZ77 algoritmo duomenų glaudinimo be nuostolių metodus su Huffmano medžio struktūra, kad būtų pasiekti puikūs glaudinimo rodikliai. Dėl šio metodų derinio zlib itin efektyviai suspaudžia ir išskleidžia duomenis, todėl jis ypač naudingas programose, kuriose saugojimo vieta arba pralaidumas yra ribotas.
Be failų glaudinimo, zlib Jis taip pat naudojamas perduodant suspaustus duomenis tinkluose, siekiant sumažinti pralaidumo apkrovą, failų saugojimo ir apdorojimo programose, taip pat daugialypės terpės programose, skirtose garso ir vaizdo duomenims suspausti.
Su laiku, zlib susidūrė su kai kuriais pažeidžiamumais, kurie buvo pašalinti vėlesnėse zlib versijose, pvz., anksčiau minėtose CVE-2005-1849, CVE-2016-9840, CVE-2016-9841 ir CVE-2016-9842 (tik paminėti kai kuriuos žinomus iš zlib), kurios gali būti išnaudotos užpuolikai gali sukelti paslaugų atsisakymą (DoS) ar net vykdyti savavališką kodą ir dėl atminties saugos trūkumų, būdingų C/C++ suspaudimo bibliotekoms, zlib išlieka pagrindiniu taikiniu.
Siekiant išspręsti šias problemas, nepaliekant nuošalyje zlib prigimties ir privalumų, ISRG (organizacija, atsakinga už projekto Let's Encrypt ir skirta interneto saugumui gerinti) neseniai paskelbė apie naujo projekto pradžią Kurio tikslas – sukurti zlib analogą Rust programavimo kalba.
2023 m. gruodžio mėn. pasamdėme „Tweede Golf“, kad pradėtume diegimą, pagrįstą „zlib-ng“, daugiausia dėmesio skirdami puikiam našumui ir atminties saugai.
Kas toliau?
Šiuo metu ieškome finansavimo, kad užbaigtume darbus, būtinus, kad pradinis diegimas būtų paruoštas gamybai.
Nauja alternatyva vadinama „zlib-rs“ ir tai pateikiama kaip zlib sprendimas, parašytas Rust pagrindinis tikslas – išspręsti saugumo problemas, susijusias su atminties klaidomis ir pažeidžiamumu, kurie paprastai yra suspaudimo bibliotekose, parašytose C/C++.
zlib-rs kūrimas kyla kaip atsakas į „Microsoft“ ir „Google“ statistiką, kuri rodo, kad maždaug 70% pažeidžiamumų atsiranda dėl nesaugaus atminties valdymo. Naudojant Rust kaip programavimo kalbą, tikimasi žymiai sumažinti šių pažeidžiamumų, pvz., prieigos prie atlaisvintų atminties sričių ar buferio perpildymo, riziką.
El proyecto zlib-rs yra zlib failo formato Rust įgyvendinimas, suderinamas su zlib API ir saugykla šiuo metu dirba su dviem diegimais:
- zlib-rs, zlib pagrindu sukurtas „Rust“ diegimas su saugia „Rust“ API (šiuo metu laikomas nestabiliu, bet tikimasi, kad jis netrukus stabilizuos diegimą).
- libz-rs-sys, a C API C API, skirta zlib-rs . API iš esmės atitinka zlib-sys ir zlib-ng-sys, tačiau šiuo metu nepateikia gz* funkcijų šeimos. Žvelgiant iš rūdžių perspektyvos, ši API nėra labai ergonomiška, todėl kol kas rekomenduojama dirbti su flate2.
Kalbant apie šiuo metu vykstantį darbą, minima, kad Rust analogo pasiūlymas gali patraukti kitų dėmesį ir jie gali prisijungti prie darbo, nes pasiūlius alternatyvą, orientuotą į saugumą ir įprastų klaidų prevenciją, galima per kelerius metus. darbas ir plėtra yra skaidrus zlib pakaitalas.
Galiausiai verta paminėti, kad „zlib-rs“ darbas šiuo metu yra paskelbtas „GitHub“ šioje saugykloje, o kodas platinamas pagal „Zlib“ licenciją. Galite sužinoti daugiau apie tai en šią nuorodą.