
zlib-rs
La biblioteca zlib, desenvolupada per Jean-Loup Gailly i Mark Adler, és un component essencial ja que és utilitzada en una àmplia gamma d'aplicacions que estan enfocades a la compressió d'arxius en formats com ZIP, gzip i PNG degut a la seva eficiència i versatilitat. Aquesta biblioteca ha estat present des de 1995 i com a resultat del seu ampli ús, també ha estat blanc de múltiples vulnerabilitats de seguretat de la memòria.
El nucli de zlib és l'algorisme de compressió DEFLATE, que combina les tècniques de compressió sense pèrdua de dades de l'algorisme LZ77 amb una estructura d'arbre Huffman per assolir taxes de compressió notables. Aquesta combinació de tècniques fa que zlib sigui extremadament eficient en la compressió i descompressió de dades, i és especialment útil en aplicacions on l'espai d'emmagatzematge o l'amplada de banda són limitats.
A més de la compressió de fitxers, zlib també s'utilitza en la transferència de dades comprimides en xarxes per reduir la càrrega d'amplada de banda, en aplicacions d'emmagatzematge i processament de fitxers, així com en aplicacions multimèdia per a la compressió de dades d'àudio i vídeo.
Al llarg de el temps, zlib ha enfrontat algunes vulnerabilitats que han estat abordades en versions posteriors de zlib, com les esmentades CVE-2005-1849, CVE-2016-9840, CVE-2016-9841 i CVE-2016-9842 (només per esmentar algunes de les conegudes de zlib), que podien ser explotades per atacants per provocar una denegació de servei (DoS) o fins i tot executar codi arbitrari i que a causa de les falles de seguretat de memòria comuna per a les biblioteques de compressió escrites a C/C++, zlib segueix sent un blanc important.
Amb la finalitat d'abordar aquests problemes, sense deixar de banda la natura i bondats de zlib, la ISRG (l'organització darrere del projecte Let's Encrypt i dedicada a millorar la seguretat a internet) donà a conèixer recentment el llançament d'un nou projecte que té com a finalitat crear un anàleg de zlib en el llenguatge de programació Rust.
Contractem Tweede Golf el desembre de 2023 per a una implementació inicial basada en zlib-ng, amb un enfocament a mantenir un rendiment excel·lent alhora que introduïm la seguretat de la memòria.
que segueix
Actualment estem buscant finançament per completar el treball necessari perquè la implementació inicial estigui llesta per a la producció.
La nova alternativa té com a nom «zlib-rs» i aquesta es presenta com una solució de zlib escrita a Rust amb l'objectiu principal d'abordar els problemes de seguretat associats amb errors de memòria i vulnerabilitats que solen ser presents a les biblioteques de compressió escrites a C/C++.
El desenvolupament de zlib-rs sorgeix en resposta a estadístiques de Microsoft i Google que assenyalen que aproximadament el 70% de les vulnerabilitats es deuen a un maneig insegur de la memòria. En utilitzar Rust com a llenguatge de programació, s'espera reduir significativament el risc d'aquestes vulnerabilitats, com ara l'accés a àrees de memòria alliberades o el desbordament de memòria intermèdia.
El Projecte zlib-rs conté una implementació Rust del format de fitxer zlib que és compatible amb l'API zlib i el repositori actualment s'estan treballant en dues implementacions:
- zlib-rs, una implementació de Rust basada en zlib amb una API de Rust segura (actualment es considera inestable, però s'espera arribar a estabilitzar la implementació en poc temps).
- libz-rs-sys, una API C una API C per a zlib-rs . L'API és, en termes generals, equivalent a zlib-sys i zlib-ng-sys, però actualment no proporciona la família de funcions gz*. Des de la perspectiva de rust, aquesta API no és gaire ergonòmica per la qual cosa de moment es recomana el treball amb flate2.
Sobre el treball en el desenvolupament actual, s'esmenta que oferir un anàleg a Rust pugui atraure l'atenció d'altres i puguin sumar-se a la feina, ja que oferir una alternativa enfocada a la seguretat i la prevenció d'errors comuns, pugui en qüestió de alguns anys de treball i desenvolupament oferir un substitut transparent a zlib.
Finalment cal esmentar que actualment el treball de zlib-rs es publica a GitHub al següent repositori i el codi es distribueix sota la llicència Zlib. Pots consultar més sobre això en el següent enllaç.