概要
Google Project Zeroの研究者Jann Horn氏が、AppleのmacOSおよびiOSシステムにおける新たな脆弱性を開示しました。この脆弱性は、シリアライゼーションプロセスにおけるポインタリークを通じて、攻撃者がAddress Space Layout Randomization (ASLR) 保護をバイパスする可能性を秘めています。
この問題は、攻撃者が提供したデータをアプリケーションがデシリアライズし、その結果生成されたオブジェクトを再シリアライズして、そのシリアライズされたデータを攻撃者に返す場合に機能します。この脆弱性は、Appleデバイス上の特定のメモリ破損バグを悪用するために必要となるリモートASLRリークに関するProject Zeroチームの内部議論中に発見されました。
macOSやiOS上で具体的な実世界の攻撃経路は特定されていませんが、Horn氏は人工的なテストケースでNSKeyedArchiverシリアライゼーションを使用してこの技術を実証することに成功しました。
技術的詳細
この攻撃は、AppleのCore Foundationフレームワークのいくつかの主要コンポーネントを悪用します。
- NSNullシングルトンの悪用: 脆弱性は、共有キャッシュに保存されているCFNullシングルトンインスタンスを利用します。これは、カスタムハッシュハンドラが提供されていない場合に、ポインタアドレスをハッシュコードとして使用します。
- NSDictionaryハッシュテーブルの操作: 攻撃者は、特定のハッシュバケットにマッピングされるように慎重に選択されたNSNumberキーを挿入することで、NSDictionaryハッシュテーブルを操作し、データ構造に予測可能なパターンを作成できます。
- シリアライゼーション順序の分析: 再シリアライズされたNSDictionaryオブジェクト内のキーの順序を分析することで、攻撃者はハッシュバケットの位置を特定し、メモリアドレスに関する情報を抽出できます。
この手法では、特定のパターンを持つNSNumberキーとNSNullキーを含む複数のNSDictionaryインスタンスを含む、約50KBの特別に細工されたシリアライズデータを送信します。ターゲットアプリケーションがこのデータをデシリアライズして再シリアライズすると、出力される要素の順序からNSNullシングルトンのメモリアドレスに関する情報が明らかになります。
影響と対策
この脆弱性は、実世界での影響が実証されていない理論的な攻撃を表していますが、キー付きデータ構造におけるポインタベースのハッシュが、特定の条件下でアドレスリークにつながる可能性を示しています。この技術は、他のエクスプロイトと組み合わせることで、ASLR保護を無効にし、メモリ破損攻撃をより確実に実行する可能性があります。
Appleは、2025年3月31日のセキュリティリリースでこの脆弱性に対処しました。最も堅牢な緩和策は、オブジェクトアドレスをルックアップキーとして使用することを避けるか、ポインタ等価オラクルへの潜在的なアドレスリークを減らすためにキー付きハッシュ関数を実装することです。
Project Zeroは、実世界での攻撃経路が実証されていないため、この問題を公開バグトラッカーに登録することなくAppleに直接報告しました。この開示は、安全なシリアライゼーションの実践と、システムフレームワークにおけるポインタベースのハッシュメカニズムの潜在的なセキュリティ上の影響の重要性を浮き彫りにしています。
元記事: https://gbhackers.com/google-project-zero-apple-vulnerability-aslr-bypass/
