Apple Exclavesについて
(randomaugustine.medium.com)モノリシックOSカーネルの問題点
- 現代のオペレーティングシステムは一般に、2つの主要な保護ドメインに分かれている:
- 非特権ドメイン(ユーザーモード): プログラムはファイルアクセス、ネットワーク通信などの強力な処理を直接実行できない
- 特権ドメイン(カーネルモード): システムコールを通じてプログラムがカーネルに処理実行を要求すると、カーネルコードがその処理を行い、結果をユーザーモードに返す
- ほとんどのオペレーティングシステムはモノリシックカーネル設計を採用している:
- カーネルはシステムのすべてのハードウェア、メモリ、ユーザーデータに対する無制限のアクセス権を持つ
- ソフトウェアに欠陥がなく、セキュリティ侵害の試みがなければ問題ないが、現実にはバグやセキュリティ脆弱性が存在する
- モノリシックカーネルは規模が大きいためセキュリティ脆弱性が発生する可能性が高く、1つの脆弱性がシステム全体の破壊につながる危険がある
- マイクロカーネル設計はセキュリティを強化するため、カーネルから機能の大半を取り除き、別個の非特権プロセスで処理する:
- セキュリティを強化できる
- 性能低下やアプリケーションソフトウェアの複雑性増大という問題が生じうる
- それでも性能上の利点から、モノリシックカーネルは依然として広く使われている
- AppleのXNUカーネル:
- iOS、macOS、tvOS、visionOS、watchOSで共通して使われるカーネル
- Machベースのマイクロカーネルだが、システム機能の大半が同一の特権範囲で実行されるため、実質的にはモノリシックカーネルのように動作する
- したがって、モノリシックカーネルと同様のセキュリティ脆弱性が起こりうる
分離の取り組み
- ソフトウェアおよびハードウェアベースの分離技術の導入がさまざまに試みられてきた:
- Microsoft Virtualisation-based Security (VBS) – WindowsのCredential Guardで使用
- Intel Software Guard Extension (SGX) および VT-X2
- ARM TrustZone – Samsung Knox、Samsung Pay、Android Verified Boot、AndroidのセキュアPIN入力などで使用
Appleもカーネルからデータを分離しようとする試みを徐々に拡大してきた
-
2013 — Apple Secure Enclave
- 2013年にiPhone 5sで初めて導入
- Secure Enclaveは独立した強化CPUコア上で動作し、マイクロカーネルベースのOSであるSepOS上で稼働する
- SepOSのカーネルにはApple独自のL4組み込みマイクロカーネルcL4を使用
- 暗号鍵や生体情報(例: Face ID)などの機微なデータを保存・保護
- iOSカーネルとは独立して動作し、安全な相互作用を通じてのみiOSにサービスを提供
- iOSカーネルが侵害されても、追加のエクスプロイトが発生しない限りSecure Enclaveは影響を受けない
- Secure EnclaveとSecure Exclaveは別概念である点に注意
-
2017 — ページ保護レイヤー(Page Protection Layer, PPL)
- iPhone 8およびiPhone XのA11プロセッサで導入されたセキュリティ機能
- ハードウェア + ソフトウェアベースの機能で、カーネルの特定部分にのみメモリページテーブルの修正権限を与える
- それ以外のカーネルはページテーブル修正権限が制限される
- 攻撃面が小さくなり、回避の試みはまれになる
- PPLは保護レイヤーを追加したが、依然としてカーネルの権限の大半は維持されており、完全なセキュリティ強化には限界があった
-
2021–2023 — セキュアページテーブルモニター(Secure Page Table Monitor, SPTM)
- iPhone 13のA15プロセッサおよびiOS 17で導入された新機能
- PPLを置き換え、追加のメモリ機能を保護し、それらを複数のサブシステムへ分離する
- コード署名検証を行い、Appleにより署名されたコードのみが実行されるようセキュリティを強化
- この時期にXNUソースコード内でexclaveへの間接的な言及が現れる
- SPTMが管理するサブシステムがexclaveである可能性が指摘される
-
2024 — Exclave: XNUの主要なセキュリティモデル刷新
- M4およびA18プロセッサをサポートするXNUソースコードでExclaveの概念が登場
- 以前のプロセッサではExclaveは有効化されていない
- ExclaveがXNUのセキュリティモデルを大幅に再設計した成果物であることが明確になった
-
XNU Exclave
免責事項: Exclaveの内部構造は完全にはオープンソース化されていないため、一部の内容は推測または解釈である可能性がある
- ExclaveはXNUの既存のモノリシックカーネル型セキュリティモデルを大きく強化する新たな機能群
- ExclaveはXNUから隔離されたリソースであり、カーネルが侵害されても保護される
- Exclaveの特性:
- OSビルド時にあらかじめ定義される
- 名前またはIDで識別される
- さまざまなタイプで構成される
- ブート時に初期化される
- 独立したドメインとして組織化される
- SPTMが新しいExclave専用ページタイプでExclaveメモリを保護する
- Exclaveリソースの種類
- 共有メモリバッファ – カーネルとExclaveの両方からアクセス可能
- XNUでは読み取り専用または読み書き可能に設定できる
- オーディオバッファとセンサー – カメラおよびマイクアクセス表示のセキュリティを強化
- Conclave – 複数のリソースを独自のセキュリティドメインにグループ化し、これを管理するConclave Managerが存在
- サービス – XNUのスレッドが呼び出すとExclave内でコードを実行
- 共有メモリバッファ – カーネルとExclaveの両方からアクセス可能
-
セキュアカーネル — seL4ベース?
- ExclaveサービスがXNUから独立して実行されるために、新たなカーネル**Secure Kernel (SK)**が導入
- SKイメージファイル内で"cL4"バージョン文字列が確認されている
- SKはApple既存のcL4(L4ベース)カーネルではなく、seL4ベースである可能性が高い
- XNUがSKと通信する際に使うIPC構造がseL4の構造と似ている
- SKで使用される文字列から、seL4で使われる概念(例: capabilities, frames, untyped memory など)が多数見つかっている
- Appleが2024年4月にseL4 Foundationへ参加したのは偶然ではないかもしれない
- C1プロセッサ(Appleの新しいベースバンドチップ)のカーネルもL4ベースに見える
-
セキュアワールド — ARM TrustZone?
- SepOSは別個のプロセッサで動作し、SKは高速アプリケーションプロセッサ上で動作する
- そのため追加のプロセッサ特権レベルが必要であり、次のいずれかで実装されている可能性がある:
- 仮想化拡張のサポート
- AppleのSPTM拡張
- ARM TrustZone技術の利用が最も有力
- TrustZoneの構造
- システムを2つのワールドに分離:
- Secure World – セキュアコードを実行
- Insecure World – 通常コードを実行(XNUおよびiOSが動作)
- XNUソースコードではTrustZoneのSecure WorldとInsecure Worldの切り替えに関する言及が多数見つかっている
- AppleはTrustZoneが提案するTrusted Applicationモデルの代わりにExclaveサービスモデルを適用している
- SKは隔離環境内でExclaveサービスとリソースを提供し、セキュリティを強化する
- Secure WorldからInsecure Worldへ脱出してXNUを侵害するのは非常に困難と予想される
- システムを2つのワールドに分離:
- RINGGATE
- AppleがSPTMを使ってSecure World ↔ Insecure Worldの切り替えを管理している可能性がある
- コード内ではこの切り替えが**"RINGGATE"**と呼ばれている
結論
- Exclave導入の意味
- 高度な脅威アクターによる継続的な攻撃に対応するため、AppleはExclaveを導入し、オペレーティングシステムのセキュリティ水準を強化した
- 機微なリソースを隔離することで、次のような効果が期待される:
- 攻撃面の縮小
- 単一のカーネル脆弱性の影響低減
- モノリシックカーネル防御は終わりのない挑戦であり、Exclaveはそれを解決するための1つのアプローチ
- 長期的に正しい方向なのか、それとも一時しのぎなのかは不確か
- 個人的な希望 → 将来的にはCHERIおよびARM Morelloベースの再設計に期待 😊
- しかし現時点ではコンシューマ機器メーカーとして最大級の防御の試み
- この記事では、具体的にどのコンポーネントがExclaveへ移されたのかは明確には扱っていない
- ビルドイメージから、次のような要素がExclaveで実行されているように見える:
- セキュアなカメラ/マイク表示インジケータ
- Apple Neural Engine(ANE)機能の一部
- 一部のデバイスドライバ
- Secure Enclaveとの通信コンポーネント
- ビルドイメージから、次のような要素がExclaveで実行されているように見える:
- 今後さらに多くのコンポーネントがExclaveへ移行される可能性がある
- Exclaveのセキュリティ効果は、こうした移行作業の最適化水準にかかっている
- ExclaveがApple Private Cloud Computeインフラで使われる可能性がある
- クラウドベースAIで高い水準のセキュリティとプライバシーを保証できる
1件のコメント
Hacker Newsのコメント