IBoot

iBootは、ステージ2 ブートローダである。iPhone, iPad, Appleシリコン Mac, およびApple T2を搭載したインテルMac[2][3]…

IBoot
iBoot
Developer(s) Apple
Initial release June 29, 2007
Stable release
iBoot-11881.80.57~171 (RELEASE, iOS 18.3 RC and iOS 18.3.1)
Preview release
iBoot-11881.80.57~107 (RELEASE, iOS 18.3 beta 1)
Operating system Darwin, macOS, iPadOS and iOS[1]
Platform X64, AArch64
Type ブートローダ
License Proprietary software

iBootは、ステージ2 ブートローダである。iPhone, iPad, Appleシリコン Mac, およびApple T2を搭載したインテルMac[2][3]で採用されている。 iBootは、前モデルと比較して、ブートチェーンで実行される認証を改善する[1]。Apple T2を搭載したIntel Mac では、ブートプロセスはboot ROMからT2チップ上でコードを実行することから始まる。そのboot ROMは、iBootをT2チップにロードして実行する。その次にiBootはbridgeOSをT2チップにロードし、起動する。そしてbridgeOSはUEFIファームウェアをロードする。UEFIファームウェアはメインIntelプロセッサを起動し、Power-On Self Testプロセスを完了させる。UEFIファームウェアはboot.efiをロードし、macOSカーネルをロードして起動する[3]

iPhone、iPad、Appleシリコン搭載Macの場合、ブートプロセスはデバイスのブートROMを実行することから始まる。Apple A9またはそれ以前のAシリーズプロセッサを搭載したiPhoneやiPadでは、ブートROMはステージ1ブートローダであるLLB(Low-Level Bootloader)をロードし、iBootをロードする。Apple A10以降のSoCを搭載したデバイスやAppleシリコン搭載Macでは、ブートROMはiBootをロードする[4]。すべてがうまくいくと、iBootはiOS、iPadOS、macOSのカーネルと、オペレーティングシステムのその他のロードを進める[5][6][7]。iBootがiOS、iPadOS、macOSのロードに失敗したり、検証に失敗した場合、ブートローダはDFU(デバイスファームウェアアップデート)[8]モードにジャンプする[1][9]

カーネルと起動に必要なドライバ全てがロードされると、ブートローダはカーネルの初期化手順を開始する。この時点で、カーネルがルートデバイスを見つけるために必要なドライバがロードされる[10]

Apple A7以降を搭載したiPhoneやiPadでは、LLBとiBootはNANDフラッシュに保存される[11]Apple M1以降を搭載したMacでは、LLBは内蔵SSDに保存される[12]

ビルドスタイル

流出したiBootのソースコード(2018年2月7日)によると[13]、apps/iBoot/iBoot.mkでは、iBootのコピーをビルドする際に有効なビルドスタイルを「RELEASE」、「DEVELOPMENT」、「DEBUG」、「SECRET」と定義している。これらのビルドスタイルは、ブートローダがコンパイルされる際に特定の情報を定義する。例えば、開発中のデバイスの問題を見つけるためにデバッグコマンドを追加したり、シリアル経由でiBootコマンドプロンプトを使用してハードウェアテストを実行したりできる。

定義

RELEASE - リリース版

DEVELOPMENT - 開発用ハードウェアで使用されるビルドでは、「diags」コマンドなど、いくつかの開発用ツールにアクセスできる

DEBUG - iOSやその他の下位コンポーネントのデバッグに使用されるビルド

機能

iBootは、リカバリ、DFU、またはリストアモード時にコマンドプロンプトを表示する(iBootの「DEBUG」ビルドにも表示されるが、将来のビルドでは表示されなかった)。コマンドの使用可否は、使用するiBootのタイプ、特にビルドスタイル(RELEASE、DEVELOPMENT、DEBUG、SECRETなど)に依存する[要出典]

iBootのコマンドプロンプトを使用する場合、含まれるコマンドは、ブート引数(NVRAMで内部的に「boot-args」と呼ばれる)や、iBootが自動的にロードされたときにスタートアップコマンド(fsboot)を使用するかどうか(自動ブートとして知られている)などの動作を管理するために使用される[14][15]

メモリ安全性

AppleはiOS 14以降、メモリ安全性を向上させるため、iBootのビルドに使用されるCコンパイラのツールチェーンを変更した。この改良は、バッファオーバーフローヒープ悪用、型混同の脆弱性、use-after-free攻撃など、一般的なメモリ破壊の脆弱性のクラス全体を軽減するように設計されている。これらの修正により、攻撃者が特権を不正に昇格させて、任意のコード実行を伴う攻撃など、悪意のあるコードの実行を防止できる可能性がある[16]

ソースコード漏洩事件

2018年、iOS 9のiBootソースコードの一部がGitHubに流出し、当時のiPhone、iPad、iPod touch、Apple Watchの各モデルが被害を受けた[17]。 その後、AppleはGitHubに対し、リポジトリの削除を求める著作権削除要請(DMCA)を出した。この流出にはAppleの従業員が関与していると考えられていた。しかし、Appleによって確認されたわけではない。iBootのソースコードの公開に関与したのは「ZioShiba」という名前のユーザであることがわかっている。

履歴

iBoot-87.1最も古いバージョンであることが知られている。

iBootの最も古いバージョンはiBoot-87.1で、2006年から2007年にかけ製造された、最初期のプロトタイプiPhoneに搭載されたものである[18]。このバージョンは、iBootの最初のバージョン(iBoot-99)と同じ機能を持っていたが、最終リリース前の機能は持っていなかった。このバージョンのiBootは、iBootの「最初期ベータ版」と考えられる。初代iPhoneiPhone OS 1のリリースに伴い、最初にリリースされたiBootのバージョンはiBoot-159だった。

出典

  1. ^ a b c Ryan, Peter Y. A.; Naccache, David; Quisquater, Jean-Jacques (2016-03-17) (英語). The New Codebreakers: Essays Dedicated to David Kahn on the Occasion of His 85th Birthday. Springer. ISBN 9783662493014. https://books.google.com/books?id=NA_NCwAAQBAJ&q=apple+bootloader&pg=PA419 
  2. ^ Hayes, Darren R. (2014-12-17) (英語). A Practical Guide to Computer Forensics Investigations. Pearson IT Certification. ISBN 9780132756150. https://books.google.com/books?id=s5beBQAAQBAJ 
  3. ^ a b Intelプロセッサ搭載Macのブートプロセス”. Appleプラットフォームのセキュリティ. Apple. 2025年8月9日閲覧。
  4. ^ iPhoneおよびiPadデバイスのブートプロセス”. Apple Support. 2025年8月9日閲覧。
  5. ^ Apple Inc. (2016年5月). “iOS Security Guide”. apple.com. 2016年2月27日時点のオリジナルよりアーカイブ。2025年11月2日閲覧。
  6. ^ iPhoneおよびiPadデバイスのブートプロセス”. Appleプラットフォームのセキュリティ. Apple. 2025年8月9日閲覧。
  7. ^ Appleシリコン搭載Macのブートプロセス”. Appleプラットフォームのセキュリティ. Apple. 2025年8月9日閲覧。
  8. ^ iFixit Support: DFU Restore” (英語). iFixit. 2019年9月29日閲覧。
  9. ^ *OS: iBoot”. 2025年11月2日閲覧。
  10. ^ The Early Boot Process” (英語). developer.apple.com. 2017年8月26日閲覧。
  11. ^ LLB” (英語). The Apple Wiki (2023年9月10日). 2024年11月27日閲覧。
  12. ^ hoakley (2021年1月14日). “M1 Macs radically change boot and recovery” (英語). The Eclectic Light Company. 2024年11月27日閲覧。
  13. ^ Khandelwal (2018年2月8日). “Apple's iBoot Source Code for iPhone Leaked on Github” (英語). The Hacker News. 2025年7月9日閲覧。
  14. ^ iRecovery on GitHub”. GitHub. 2025年11月2日閲覧。
  15. ^ iBoot information from the Apple Wiki.”. 2025年11月2日閲覧。
  16. ^ Memory safe iBoot implementation”. Apple Platform Security. Apple. 2023年1月25日閲覧。
  17. ^ “Apple confirms iPhone source code leak”. BBC News. 9 February 2018.
  18. ^ iBoot-87.1 on the iPhone 2G by mcg29 on Twitter.” (2024年3月6日). 2025年11月2日閲覧。

外部リンク

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.