ソフトウェア

iPhoneの「脱獄」はどんな仕組みで行われているのか?


Android端末の「root化」と対をなすような立ち位置で、iPhoneのシステム管理者権限を取得する「脱獄」という行為。これらは一部のソフトウェア愛好家の間で盛んに行われていて、App Store以外からアプリを入手したりシステムの動作を改善したりできる反面、セキュリティリスクなどが高くなってしまう特徴があります。この「脱獄」がどのような仕組みなのかを、ソフトウェア開発者のフィリップ・テン氏が解説しています。

Exploiting the iPhone 4, Part 1: Gaining Entry | Phillip Tennen
https://axleos.com/exploiting-the-iphone-4-part-1-gaining-entry/


脱獄はアプリやシステムにさまざまな改変を加えられますが、失敗すると二度と起動できなくなるリスクや、実行すると保証を受けられなくなるなどのデメリットがあります。


脱獄の第一歩はまずデバイスを入手するところから始まります。テン氏は今回iPhone 4を使用します。


脱獄にはいろいろな方法があります。テン氏は当初Appleの公式開発環境「Xcode」を使おうとしたそうですが、Xcodeの最新バージョンではiPhone 4に搭載されている古いiOSをいじれず、結局ブートROMの脆弱(ぜいじゃく)性を突く方法を採用しています。


ブートROMの脆弱性は通常、USB経由でデバイスとやりとりするホストマシン上で何らかのコードを書くことで悪用できます。iPhone 4には公に知られている脆弱性を突いたエクスプロイトlimera1nがあり、テン氏はこれを利用することにしました。

ブートROMは、Appleの用語ではSecureROMと呼ばれています。SecureROMはiOSのブートプロセスの最初の段階であり、ブートプロセスの次の部分をブートストラップするもの。SecureROMは、次にロードするものがすべて信頼できるものであること、言い換えれば、Appleが出荷し署名した正確なイメージのみを実行することを保証する役割を担っています。


SecureROMは、状況に応じて、ふたつのコンポーネントのいずれかをロードします。デバイスがファイルシステムから「通常の」ブートを行っている場合、SecureROMは、NOR上のディスクパーティションからLLB(Low Level Bootloader)と呼ばれるコンポーネントをブートします。あるいはデバイスがDFU(デバイスファームウェアアップデート)モードでUSB経由でコンピューターに接続されている場合、iBSS(iBoot Single Stage)ブートローダを送信することで、iPhoneの復元プロセスを開始できます。

SecureROMが、LLBまたはiBSSが信頼できるものであるかを確認するように、LLBとiBSSも同様に、次にロードするものが信頼できるものであることを確認しなければなりません。各ステージのフローはおおよそこのようになります。各ステージは信頼できるものだけをロードするので、最終的なユーザー向けコードは常に信頼できるものになるはずです。


各ステージで大きく異なる特徴のひとつが、SecureROMは暗黙のうちに信頼されているというものです。他のすべてのステージはiOSのアップデートをリリースすることで脆弱性を修正できますが、SecureROMはデバイスの製造時に読み取り専用メモリに刻み込まれるものであり、あるSecureROMのバージョンで製造されたデバイスに見つかった脆弱性は、永久に修正されないことになります。テン氏が突くのが、この脆弱性です。

iPhone 4に搭載されたSoC「A4」の脆弱性を突くのが前述のlimera1nです。limera1nは、DFUモードでコンピューターに接続したときに悪用可能なエクスプロイト。テン氏はこれを使うため、Bootrom-Dumperというプロジェクトを活用しました。Bootrom-Dumperは、limera1nの実装方法や、どのようなコードをペイロードに含めることができるか、USB経由でデバイスからメモリを読み取る方法についてテン氏に知見を与えました。


USB経由でiOSデバイスにデータを書き込めるだけでなく、デバイスが読み取り要求にも応答するというのは、テン氏にとって驚きでした。テン氏の理解は、A4のMMUはSRAMのベース0x84000000にマッピングし、DFUデバイスと通信するホストはリクエストタイプが0x21、リクエストIDが1のUSBコントロールパケットを送信することでiBSSイメージを分割して送信できるということ。加えて、コントロールパケットで送信されたデータは0x84000000からSRAMにコピーされ、ホストがより多くのパケットを送信するにつれて、より高いアドレスにシフトし、SecureROMは次のパケットがどこにコピーされるべきかを追跡する内部カウンタをいくつか保持しており、これらのカウンタをクリアすることができるということでした。

この考えに基づくと、ホストがリクエストタイプ0xA1、リクエストIDが2の制御パケットを送ると、デバイスも応答します。デバイスは0x84000000のメモリの内容を読み出し、それをホストに送信します。デバイス上でコードを実行する能力を持っていて、好きなものを何でも0x84000000にコピーできる場合には、このシステムが活用できます。


テン氏がBootrom-Dumperをベースに、自分自身のlimera1n実装を書き、SecureROMもダンプしてみたところ、無事目的を達成し、iPhone 4でコードを実行できるようになったそうです。


その後、テン氏はiPhone 4用の脱獄環境「gala」を構築しています。galaのリポジトリはGitHubで公開されています。

GitHub - codyd51/gala: A4 / iOS 4 jailbreak
https://github.com/codyd51/gala

この記事のタイトルとURLをコピーする

・関連記事
iPhoneを実際に攻撃するゼロデイエクスプロイトチェーンが発見される、できる限り早くアップデート行う必要あり - GIGAZINE

iPhone 12で仮想マシンを動作させLinuxを起動&LibreOfficeをサクサク動かすムービーが公開される - GIGAZINE

iPad Air 2で最新Linuxを動かしてしまった愛好家が登場、古いiPhoneやiPadがLinuxマシンとして再生する可能性 - GIGAZINE

iPhoneで「積極的に悪用された可能性があるゼロデイ脆弱性」を修正したとAppleが発表 - GIGAZINE

脱獄iPhone向けのアプリストアとして有名なCydiaがAppleを独占禁止法違反で訴える - GIGAZINE

in モバイル,   ソフトウェア, Posted by log1p_kr

You can read the machine translated English article here.