さとくんの雑記帳

書きたいこと適当に書きます。備忘録的なこともします。ようつべ編集だるいのでこっちに書く、なんてこともあります。

※備忘録 iOS/iPadOSのブートプロセス (公式ドキュメント日本語訳)

セキュリティのお勉強関連と前々からやりたかったこととしての備忘録。

英語読めるけど脳死で読みたい時に日本語のほうが読みやすいよね、ということで。

 

※専門家ではないのでその筋の人から見たら出鱈目言うなと思うところがあると思います...その際はごめんなさい。

 

参考:Apple Platform Security 「Boot process for iOS and iPadOS devices」

support.apple.com

 

起動プロセスの大まかな流れ

Boot ROM

(A9以前のみLLB (Low Level Bootloader))

iBoot

iOS/iPadOSカーネル

 

各モードごとの詳細

1. Boot ROM

 read-onlyなもの。工場出荷時に記録されたAppleのルートCA公開鍵が格納されている。

 BootROM内公開鍵は無条件に信頼され、iBootの検証に使用される。

 

2. LLB (Low Level Bootloader)

  A9以前のデバイスで使用される。BootROMによって検証され、iBootを検証する。

 

3. iBoot

  ブートローダー。iOS/iPadOSカーネルを読み込む。

  読み込み時にApple公式署名かどうかも検証する。

 

各モードで失敗した場合の挙動

・Boot ROMがLLBを読み込めなかった

 DFUモード

 

・LLBがiBootを読み込めなかった

 リカバリーモード

 

・iBootがカーネルを読み込めなかった

 リカバリーモード

 

なお、いずれの場合でもiTunes(WindowsmacOS 10.14以前)やFinder(macOS 10.15以降)で復元が可能である。

 

※例外:Boot ROMが死んだ

  公式ドキュメントはおろかthe iPhone wikiの「Brick」ページ(https://www.theiphonewiki.com/wiki/Brick)にも記載はないが、おそらくDFUですら復元不可能である。事実上の高級文鎮。

 というのも、DFU自体がBoot ROMによって呼び出されるモードであるため、その大元のBoot ROMが死んでしまうと多分復旧不可。一般人ならここまでなることはないと思うが、万が一なってしまった場合は大人しくAppleに持ち込みましょう。

 

 追加のプロセス

・ベースバンドサブシステム

 セルラー通信を行うモデル(iPhoneiPad Wi-Fi+Cellularモデル。逆にいえばiPod touchとかiPad Wi-Fiモデル以外)で読み込まれる。

 このシステム(Appleによって署名済み)によって追加のセキュアブートプロセスが行われるとともに、ベースバンドプロセッサによってキーが検証される。

 

・Secure Enclave

 A7以降(iPhone 5siPad Air 2)の生体認証搭載モデルで使用される。

 Windows機で言うセキュアブートに相当することを行うもので、SEP(Secure Enclave Processor)内のsepOSによって検証される。sepOSはAppleによって署名されている。

 なお、sepOSはある程度新しいOSと古いOSとの間に互換性がないため、iOS/iPadOSをダウングレードするとsepOSは機能しなくなる。この場合、sepOSと互換性のあるOSに復元しない限りTouch ID・Face IDが機能しなくなる。なお、これはTouch ID・Face IDモジュールを非正規に交換した場合も、工場出荷時のペアリング情報と一致しないため同じである。

 

・BPR(Boot Process Register)

 SoC内に搭載されている。どのブートモードに入ったか(リカバリーモード、DFUモード等)を検知し、それに対してフラグを立てる。このフラグは後から取り消すことはできない。このフラグが設定された時点でその後のソフトウェアに各モードごとのブート時点で信頼されたソフトウェアがロードされていることが伝えられる。

 Secure Enclaveによって使用される。ユーザーデータへのアクセスを制限する目的で使用される。

 BPRは次の時点で設定される。

 ・DFUモード:A12以降のチップでBootROMによって設定される。

 リカバリーモード:A10・S2以降のチップでiBootによって設定される。

※BPRに関しては私自身うまく掴めなかった。

 

まとめ

iOSではそれぞれの段階でApple公式署名かどうかをチェックしている。

 

しかし、その中でもBoot ROMに限定すれば無条件に信頼される。これはread-onlyであるため基本的には不可変であると言う前提のものである。

これを逆手に取り、現在ではBoot ROM Exploitであるcheckm8脆弱性が主流である(A5~A11)。

また、過去にも数回Boot ROM Exploitが発見され利用されている。

 

基本的にはBoot ROM ExploitはPCに直接接続しなければ行えないが、こうしたデバイスはやはり危険な状態であることには変わりない。

A12以降ではiOS自体で使える新機能も数多くあり、checkm8脆弱性も存在しないので今買うならA12以降がおすすめである。

 

以上備忘録。