'Operation Triangulation' 攻撃チェーン
- 悪意ある iMessage 添付ファイルを送信し、ユーザーに気付かれないままアプリケーション内で処理させる。
- この添付ファイルは、文書化されていない Apple 専用の ADJUST TrueType フォント命令にあるリモートコード実行脆弱性 CVE-2023-41990 を悪用する。
- リターン指向/ジャンプ指向プログラミングと、NSExpression/NSPredicate クエリ言語で書かれた多段階処理を使って JavaScriptCore ライブラリ環境にパッチを当て、JavaScript で書かれた権限昇格エクスプロイトを実行する。
- JavaScript エクスプロイトは完全に判読不能なほど難読化されており、サイズも最小化されている。約 11,000 行のコードの大半は、JavaScriptCore とカーネルメモリの解析および操作に割かれている。
- JavaScriptCore のデバッグ機能 DollarVM($vm) を利用し、スクリプトから JavaScriptCore のメモリを操作し、ネイティブ API 関数を実行できる能力を獲得する。
- 旧型・新型の iPhone の両方をサポートするよう設計されており、最新モデルの脆弱性を悪用するための Pointer Authentication Code(PAC) バイパスも含まれる。
- XNU のメモリマッピングシステムコール (
mach_make_memory_entry および vm_map) にある整数オーバーフロー脆弱性 CVE-2023-32434 を悪用し、ユーザーレベルからデバイスの全物理メモリへの読み書きアクセスを獲得する。
- ハードウェアのメモリマップド I/O(MMIO) レジスタを使用して Page Protection Layer(PPL) を回避する。これは CVE-2023-38606 によって緩和された。
- すべての脆弱性の悪用後、JavaScript エクスプロイトはデバイス上で任意の処理を実行できるようになり、スパイウェアを直接実行する代わりに IMAgent プロセスを起動してデバイス上のエクスプロイト痕跡を消去するペイロードを注入するか、Safari プロセスを不可視モードで実行して次段階を含む Web ページへ転送する。
- Web ページには被害者を確認するスクリプトがあり、検査を通過すると次段階である Safari エクスプロイトを受け取る。
- Safari エクスプロイトは CVE-2023-32435 を使用してシェルコードを実行する。
- シェルコードは Mach オブジェクトファイル形式の別のカーネルエクスプロイトを実行する。これは CVE-2023-32434 および CVE-2023-38606 と同じ脆弱性を使用する。サイズと機能の面で非常に大規模だが、JavaScript で書かれたカーネルエクスプロイトとは完全に異なる。関連部分は両エクスプロイトで共有しているものの、コードの大半はカーネルメモリの解析と操作に割かれている。さまざまな侵入後ユーティリティを含むが、そのほとんどは使用されていない。
- エクスプロイトは root 権限を獲得し、スパイウェアをロードする別の段階を実行する。
謎と CVE-2023-38606 脆弱性
- 最近の iPhone モデルには、カーネルメモリの機微な領域に対する追加のハードウェアベースのセキュリティ保護機能がある。
- この保護機能は、攻撃者がカーネルメモリの読み書きを可能にしたとしても、デバイスを完全には制御できないようにするためのものだ。
- 攻撃者は、Apple が設計した SoC の別のハードウェア機能を使って、このハードウェアベースのセキュリティ保護を回避した。
- 攻撃者は、データ、宛先アドレス、データハッシュを、ファームウェアで使用されていないチップ上の未知のハードウェアレジスタに書き込む方法で、ハードウェアベースのメモリ保護を回避した。
- この未知のハードウェア機能は、おそらく Apple のエンジニアや工場がデバッグやテスト目的で使うことを意図していたか、あるいは誤って含められたものと推定される。
技術的詳細
- SoC 上のさまざまな周辺機器は、CPU がそれらを動作させるために使用できる特殊なハードウェアレジスタを提供する。
- これらのハードウェアレジスタは CPU がアクセスできるメモリにマップされており、「メモリマップド I/O(MMIO)」として知られている。
- Apple 製品(iPhone、Mac など)の周辺機器 MMIO アドレス範囲は、DeviceTree という特殊なファイル形式に保存されている。
- 攻撃で使用された MMIO の大半は、DeviceTree で定義されたどの MMIO 範囲にも属していない。
- 攻撃者がファームウェアで未使用の MMIO をどのように突き止めたのか、またどの周辺機器がこの MMIO アドレスに属するのかは不明である。
- これらの MMIO レジスタは GPU コプロセッサに属することが確認されている。
- 攻撃者はこれらの MMIO レジスタを使って Page Protection Layer(PPL) を回避し、ページテーブルエントリのパッチ適用に利用した。
- ハッシュ計算の方法により、攻撃で使われたこのハードウェア機能は、要求された位置に対してデータの直接メモリアクセス(DMA) 操作を実行できる。
GN⁺の見解
- この研究は、iPhone を標的とした非常に高度な攻撃チェーンを明らかにしている。これはセキュリティ研究者にとって極めて重要な発見であり、Apple 製品のセキュリティ強化に貢献しうる。
- 攻撃者がファームウェアで未使用のハードウェア機能をどのように突き止めたのかは、依然として謎のままである。これはハードウェアセキュリティ研究の重要性を強調している。
- この記事は、ソフトウェアおよびハードウェアセキュリティに関心のある人々にとって非常に興味深い内容を提供する。高度に複雑な攻撃手法と、それを分析する過程は、セキュリティ研究の深さと必要性を示している。
1件のコメント
Hacker Newsの意見
MMIO悪用で驚くべき点
Steve WeisのTwitter要約
Coresightについての説明
MMIOレジスタ発見可能性についての推測
チップのデバッグ機能でデータハッシュを使う理由への疑問
ハッシュアルゴリズムの特徴に関する観察
攻撃者の労力への感嘆
攻撃者が利用した機能についての説明
新たに発見された脆弱性の重要性