WebPを超える

NSOのBLASTPASS iMessage exploitは、ゼロクリック、ゼロデイの脆弱性であり、被害者の何らかの操作なしに、最新のiOSバージョンを実行しているiPhoneを侵害しました。このexploitは、攻撃者のiMessageアカウントから被害者に送信された、悪意のある画像を含むPassKit添付ファイルを利用していました。Appleは、2023年9月7日にiOSのバンド外セキュリティアップデートをリリースし、この脆弱性を修正しました。WebPチームもこの問題に対する修正案をリリースし、その後Chromeに統合されました。この脆弱性の根本原因は、WebPの非可逆圧縮画像形式、特にその形式で使用されているハフマン符号化におけるメモリ破損の問題でした。この脆弱性により、攻撃者は無効なハフマンツリーを定義することができ、デコードテーブルが構築されるときにメモリ破損を引き起こす可能性がありました。しかし、破損プリミティブは限定的で、バグがトリガーされた直後に画像パースは停止しました。この脆弱性の悪用方法は謎でした。なぜなら、ワンショットのゼロクリック設定でexploitをどのように実行するかが不明だったからです。破損プリミティブは非常に限定的で、サンプルにアクセスできなければ、脆弱性を悪用する方法を知ることはほぼ不可能でした。11月中旬、著者はBLASTPASS PKPassのサンプルファイルと、exploit試行失敗時のクラッシュログを多数入手し、それらのサンプルを分析してexploitの動作を解明することができました。分析の結果、メモリ破損の問題を引き起こす悪意のある画像ファイルを送り、限定的な破損プリミティブを使用して任意のコードを実行することで、脆弱性が悪用されていたことが明らかになりました。WebP形式は、ハフマン符号化を使用して画像を圧縮する比較的新しい画像ファイル形式です。非可逆圧縮形式はRIFFコンテナと別の非可逆圧縮形式を使用しており、脆弱性が発見されたのはこの部分です。脆弱性は、非可逆圧縮形式で使用されているハフマン符号化、特にデコードテーブルの構築方法にありました。著者のサンプル分析によると、このexploitは、限定的な破損プリミティブを使用して関数ポインタを上書きし、その後悪意のあるコードを実行するなど、複数の技術を組み合わせて任意のコードを実行していました。分析からは、このexploitが非常に高度であり、WebP形式とその使用されているハフマン符号化に関する深い理解が必要であったことも明らかになりました。全体的に見て、NSOのBLASTPASS iMessage exploitは、WebP形式とその使用されているハフマン符号化に関する深い理解を必要とする、非常に高度で複雑な脆弱性でした。脆弱性の悪用方法は謎でしたが、サンプルの分析により、複数の技術を組み合わせて任意のコードを実行することが可能であったことが明らかになりました。