libwebp の脆弱性 CVE-2023-5129 は危険:iMessage ゼロクリック攻撃の原因?

Critical libwebp Vulnerability Under Active Exploitation – Gets Maximum CVSS Score

2023/09/27 TheHackerNews — WebP フォーマットで画像をレンダリングするための、libwebp 画像ライブラリに存在する深刻な脆弱性について、Google が新たな CVE 識別子を割り当てた。この脆弱性 CVE-2023-5129 (CVSS : 10.0) は、ハフマン符号化アルゴリズムに根ざした問題と説明されている。

特別に細工された WebP ロスレス・ファイルにおいて、 libwebp によりヒープ領域に境界外データが書き込まれる可能性がある。ReadHuffmanCodes() 関数は、事前に計算されたサイズの配列 kTableSize から得られたサイズで、HuffmanCode バッファを割り当てるものだ。

color_cache_bits 値により、使用されるサイズが定義される。kTableSize 配列は、8 Bit の first-level table lookups のためのサ イズのみを考慮するが、second-level table lookups は考慮しない。 libwebp は、15 Bit までのコードを許可する (MAX_ALLOWED_CODE_LENGTH)。

BuildHuffmanTable() が second-level table を埋めようとすると、境界外にデータを書き込む可能性が生じる。サイズの小さい配列への OOB 書き込みにより、ReplicateValue が発生する。

特別に細工された画像を処理する際に、任意のコード実行へいたる可能性のあるバグ (CVE-2023-41064CVE-2023-4863) に対処する修正プログラムを、Apple/Google/Mozilla がリリースした後に、この問題は生じた。どちらの不具合も、ライブラリの根底にある同じ問題に起因すると疑われている。

Citizen Lab によると、BLASTPASS と呼ばれる iMessage ゼロクリック・エクスプロイト・チェーンの一部として、CVE-2023-41064 は CVE-2023-41061 と連鎖していたという。その結果として、Pegasus という傭兵スパイウェアが展開されたと言われているが、その他の技術的な詳細は、現在のところ不明である。

その一方で CVE-2023-4863 だが、Google Chrome の脆弱性というスコープに収めたことは間違いである。WebP 画像を処理する libwebp ライブラリに依存する全てのアプリケーションに、この脆弱性が影響を及ぼすという事実と乖離するものであり、この脆弱性が、これまで考えられていたよりも広範な影響を及ぼすことが判明している。

先週の Rezillion の分析では、脆弱性 CVE-2023-4863 が存在する、広く使われているアプリケーション/コードライブラリ/フレームワーク/オペレーティングシステムの一覧が明らかになっている。

Rezillion は、「このパッケージの効率性は際立っており、サイズと速度の点で JPEG と PNG を凌駕している。その結果として、多数のソフトウェア/アプリケーション/パッケージによる採用され、また、libwebp を依存先とするパッケージも採用されている。libwebp の広大かつ急速な普及により、攻撃対象が大幅に拡大し、ユーザーと組織の両方にとって深刻な懸念が生じている」と指摘している。

Google が Chrome 117.0.5938.115 をリリースし、ChromeOS/ChromeOS Flex Stableチャネルでも、脆弱性 CVE-2023-4863 を修正したことを受けて、今回の情報開示が行われた。

また、2022年12月にGoogle Project Zero が発表した、営利目的のスパイウェア・ベンダーによる CVE-2023-0266/CVE-2023-26083 の悪用に関する新たな詳細も提供された。この悪用は、U.A.E. の Samsung Android 端末を標的とし、カーネルの任意の読取/書込アクセスを取得するというものだった。

それらの脆弱性は、Variston IT というスペインのスパイウェア会社の顧客またはパートナーにより、他の3つの脆弱性 (CVE-2022-4262/CVE-2022-3038/CVE-2022-22706) と連鎖して使用されたと考えられている。

セキュリティ研究者である Seth Jenkins は、「この攻撃者が、カーネル GPU ドライバの複数のバグを悪用して、エクスプロイト・チェーンを構築したことも、注目に値する。これらのサードパーティ Android ドライバは、コードの品質や定期的なメンテナンスの程度にばらつきがあり、攻撃者にとって格好の標的となる」と述べている。