zlib-rs
zlibライブラリ、 Jean-Loup Gailly と Mark Adler によって開発されました。 必須のコンポーネントです 幅広い用途で使用されているため、 ZIP、gzip、PNG などの形式でのファイルの圧縮に重点を置いています。 その効率性と多用途性により。この図書館 1995年から存在しています また、広く使用された結果、複数のメモリ セキュリティの脆弱性の標的にもなりました。
zlib の中核は DEFLATE 圧縮アルゴリズムです。 これは、LZ77 アルゴリズムの可逆データ圧縮技術とハフマン ツリー構造を組み合わせて、驚異的な圧縮率を実現します。この技術の組み合わせにより、zlib はデータの圧縮および解凍を非常に効率的に行うことができるため、ストレージ容量や帯域幅が制限されているアプリケーションで特に役立ちます。
ファイル圧縮に加えて、zlib また、帯域幅の負荷を軽減するためにネットワーク上で圧縮データを転送する際にも使用されます。 ファイル ストレージおよび処理アプリケーションだけでなく、オーディオ データやビデオ データを圧縮するマルチメディア アプリケーションでも使用されます。
時間とともに、 zlib はいくつかの脆弱性に直面しており、すでに解決されています。 前述の CVE-2005-1849、CVE-2016-9840、CVE-2016-9841、CVE-2016-9842 (zlib の既知のものの一部について言及するだけ) など、zlib の新しいバージョンでは悪用される可能性があります。攻撃者は、サービス妨害 (DoS) を引き起こしたり、任意のコードを実行したりすることさえあります。また、C/C++ で書かれた圧縮ライブラリに共通するメモリ安全性の欠陥のため、zlib は依然として主要な標的となっています。
これらの問題に対処するためにzlib の性質と利点を脇に置くことなく、 ISRG (Let's Encrypt プロジェクトを支援し、インターネット セキュリティの向上に専念する組織) 最近新しいプロジェクトの立ち上げを発表しました その目的は、Rust プログラミング言語で zlib の類似物を作成することです。
メモリ安全性を導入しながら優れたパフォーマンスを維持することに重点を置き、zlib-ng に基づく初期実装のために 2023 年 XNUMX 月に Tweede Golf を採用しました。
次は何ですか?
私たちは現在、初期実装を本番環境に向けて準備するために必要な作業を完了するための資金を募集しています。
新しい代替手段は次のように呼ばれます «zlib-rs» そしてこれは次のように表されます Rustで書かれたzlibソリューション その主な目的は、C/C++ で書かれた圧縮ライブラリに通常存在するメモリ エラーや脆弱性に関連するセキュリティ問題に対処することです。
zlib-rsの開発 反応して生まれる Microsoft と Google の統計によれば、およそ 脆弱性の 70% は、安全でないメモリ管理が原因です。 Rust をプログラミング言語として使用することで、解放されたメモリ領域へのアクセスやバッファ オーバーフローなどの脆弱性のリスクが大幅に軽減されることが期待されます。
プロジェクト zlib-rs には、zlib API と互換性のある zlib ファイル形式の Rust 実装が含まれています リポジトリは現在 2 つの実装に取り組んでいます。
- zlib-rs、 安全な Rust API を備えた zlib ベースの Rust 実装 (現在は不安定であると考えられていますが、間もなく実装が安定すると予想されます)。
- libz-rs-sys、 C API zlib-rs の C API。この API は、zlib-sys および zlib-ng-sys とほぼ同等ですが、現在 gz* ファミリの関数は提供していません。 Rust の観点から見ると、この API はあまり人間工学的ではないため、現時点では flate2 を使用することをお勧めします。
現在の開発作業に関しては、Rust で類似のものを提供することで他の人の注目を集め、セキュリティと一般的なエラーの防止に重点を置いた代替案を提供することで数年以内に開発に参加できる可能性があると述べられています。作業と開発の多くは、zlib の透過的な代替手段を提供します。
最後に、zlib-rs の作業は現在 GitHub の次のリポジトリで公開されており、コードは Zlib ライセンスに基づいて配布されていることに言及する価値があります。 あなたはそれについてもっとチェックすることができます en 次のリンク。