出来事の日付:2026年10月3日

Halide Compressionは、主にRustで書かれたオープンソースのWebP画像デコーダー「wpd」を公開した。信頼できない画像を処理する際のメモリー安全性に関するリスクを減らすことを目的としている。プロジェクトはBSD 2-Clauseライセンスで提供される。

画像デコーダーは、ブラウザー、OS、メッセージアプリをはじめ、多くの製品に組み込まれている。利用者の端末の外部から受け取ったファイルを日常的に解析するため、実装の欠陥は攻撃者にとって価値のあるものになり得る。Halideは、デコーダーの安全性が広範な影響を持つ例として、広く使われるアプリケーションに影響し、実際の攻撃で悪用されたlibwebpの脆弱性CVE-2023-4863を挙げた。

新しいデコーダーは主要な実装にRustを使う一方、性能が特に重要な一部の処理には手書きのアセンブリを残している。Halideによると、これらのSIMDルーチンは意図的に範囲を限定し、正しさを確認している。安全性が保証されないコンポーネントの排除をより重視する組織は、このアセンブリを使わずにwpdをコンパイルできる。その構成では、残るunsafeコードは検証済みの依存ライブラリーzerocopyに限られると同社は説明する。

Halideは、採用を促す理由として速度も打ち出している。同社のテスト素材では、libwebpより優れたシングルスレッド性能と、複数スレッドへの拡張時のより高い性能向上を報告している。ただし、この測定は開発元自身のベンチマーク環境で、特定のlibwebpのリビジョンとimage-webpのバージョンを使って行われたものだ。性能向上がどこまで幅広く当てはまるかを確かめるには、さまざまなハードウェアや画像群を用いた独立したテストが必要となる。

このプロジェクトは、対象を狭く限定した実験ではなく、libwebpの代替として設計されている。静止画とアニメーションに対応し、対応モードでは出力変換や行の部分処理も行える。Halideは、一部の組み合わせに制限があると説明している。サブフレームのアニメーションモードでは切り抜き、拡大縮小、反転を行えず、行の部分デコードはアニメーションや変換を伴う出力に対応しない。

公開時のブログ記事によると、アニメーションと静止画が混在する処理では、並列処理によって、より大きな改善を得られる場合がある。同社は、シングルスレッドでの結果は並列実行ではなく、アルゴリズムの改善によるものだとしている。移行を検討する利用者は、こうした性能についての主張を、互換性、成熟度、プラットフォーム対応、任意で使うアセンブリのセキュリティ上の意味とあわせて評価する必要がある。

今回の公開で、wpdはfcvvdpやfmetricsと並ぶHalide Compressionのオープンソース製品群に加わった。開発元は、libwebpと同等の機能を実現することが引き続き目標だとし、採用を妨げ得る障壁について意見を求めている。また、重要なソフトウェアへの導入に向け、サイバーセキュリティ企業との協力も模索している。

より安全な実装であっても、画像解析のリスクがなくなるわけではない。新しいコードに論理的な誤りが含まれることはあり、依存関係はレビューを必要とし、アセンブリを使う処理経路には依然として慎重な監査が求められる。それでも、デコーダーの大部分をCからメモリー安全な言語へ移すことで、メディア処理ライブラリーで繰り返し問題となってきた範囲外アクセスやライフタイムに関する不具合の一部の類型を排除できる。