目次
関連ブログ
iPhoneに関して言えば、「脱獄」という言葉(iOSが「iOS」と名付けられる以前、最初のiOSバージョンで造られた言葉)は、テクノロジーと制限からの解放という概念を組み合わせたものです。
- 刑務所: 元々は比喩的な監獄や監禁を意味します。iPhoneにおいては、AppleがiOSオペレーティングシステム上で動作するサードパーティ製アプリに課している制限や制約を表します。Appleは、App Storeのポリシーとシステムセキュリティ対策を通じて、ユーザーがデバイスでできることとできないことを厳格に管理しています。これらの制限には、App Store以外のソースからのアプリのインストール、デバイスの外観や機能のカスタマイズ、オペレーティングシステムの内部構造へのアクセスなどが含まれます。
- ブレーク: 監禁から逃れる、あるいは解放することを意味します。iPhoneの脱獄という文脈では、AppleのiOSによって設定された制限を回避または迂回することを意味します。このプロセスには、iOSシステムの脆弱性を悪用してルートアクセスまたは管理者権限を取得することが含まれており、ユーザーはAppleが通常許可していない方法でデバイスを改造することができます。
iPhoneを脱獄すると、エンドユーザーは完全な実行および書き込み権限を取得できます。つまり、iPhoneにおける「脱獄」とは、基本的にAppleのiOSによって課せられた制限や制約から解放され、ユーザーがデバイスをより自由にコントロールし、好みに合わせてカスタマイズできるようになることを意味します。この用語は、Appleの制限という比喩的な「牢獄」からiPhoneを解放し、デバイスをより自由に、より柔軟に扱うことができるという考えを反映しています。
携帯電話を解放したいという欲求が、ハッカー、好奇心旺盛なユーザー、そして 脅威アクター自尊心のあるコミュニティであればどこでもそうであるように、Redditグループ(r/脱獄)が形成され、YouTubeチャンネルが作成(そして削除)され、ダークウェブ/グレーウェブはコミュニティメンバー間での脱獄のヒント、テクニック、手順の共有をサポートしています。脱獄は長きにわたり求められており、脱獄を発見、実行、そして共有する者は、脱獄コミュニティ内で名声や悪評を得ます。
脱獄は保証を無効にし、法的影響を及ぼす可能性があるため、Appleが公式にサポートまたは奨励しているものではありません。また、Appleのポリシーから「抜け出す」ことはAppleの保証を無効にするものの、それ自体は違法ではなく、脱獄コミュニティの多くは、必ずしも悪意のある目的ではなく、脱獄に参加する権利、あるいは義務であると考えています。ハッカー、脅威アクター、そして陽気ないたずら好きのコミュニティが、AppleのOSをロックダウンしようとする取り組みを妨害することに専念する草の根脱獄コミュニティを緩やかに形成している一方で、iOSをクラックする営利産業も根付いています。NSO、Cellebrite、Paragonなどの企業は、高度な脱獄技術を有料で提供しています。そして、世界中の法執行機関や政府機関は、公に認めたくないものの、脱獄に取り組んでいます。 ほぼ確実に これらのサービスを利用してください。
世界の中に、 アプリケーションセキュリティジェイルブレイクは、脅威アクターがアプリケーションを改ざん(変更)しようとする際、まず最初に行うべきことの一つが、変更したアプリケーションが確実に実行できるように、携帯電話をジェイルブレイクすることであるため、非常に重要な意味を持ちます。言い換えれば、携帯電話のジェイルブレイクは違法でも非倫理的でもないものの、ほとんどの場合、改ざんされたアプリを実際に使用するために必要なステップです。したがって、ジェイルブレイクされた携帯電話を検出することは、あらゆるセキュリティ対策において不可欠です。 アプリケーションの強化 ソリューションを提供します。
同時に、Appleは脱獄を完全に阻止するために、時間、資金、労力、そして創意工夫を惜しみなく投入してきました。時が経つにつれ、脱獄はより複雑になり、Appleのセキュリティ強化により、デバイスを完全に脱獄するには複数のエクスプロイトが必要となることも少なくありません。Appleの脱獄防止への取り組みは、長く歴史に残るほどの進化を遂げてきました。いわば、いたちごっこの様相を呈しており、脱獄「コミュニティ」とApple社内におけるイノベーションを促してきました。
脱獄の検出は、公開されているアプリケーションのセキュリティを確保する上で不可欠ですが、すべての脱獄が同じように行われるわけではありません。一部の脱獄は、セキュリティ上の大きな脅威にさえなりません。
この投稿では、1) iPhone のジェイルブレイクの進化について説明し、2) どのタイプのジェイルブレイクが本来の意味でシステム リソースへの完全なアクセスを許可するか、またどのタイプが従来のジェイルブレイクよりも強力ではないかについて詳しく説明します。
iOSと脱獄の共同進化
図1:DEF CONで陽気に過ごす脱獄者たちのグループ(2011年8月)。写真提供:Dreamyshade – 自身の作品、CC BY-SA 4.0、https://commons.wikimedia.org/w/index.php?curid=38871495
初期の頃: BootROMエクスプロイト
当初、ジェイルブレイクは主にiOSデバイスのブートプロセスの基本コンポーネントであるブートROMに焦点を当てていました。ブートROMはハードウェアに恒久的に刻み込まれた低レベルのソフトウェアであるため、このレベルのエクスプロイトは特に強力です。ブートROMへの攻撃は、ブートローダー、カーネル、そして最終的にはユーザーランド環境という信頼チェーン全体に影響を及ぼします。ブートROMエクスプロイトが成功すると、デバイスへの比類のないアクセスが可能になり、ソフトウェアのアップデートやリセット後も維持される永続的な変更が可能になります。この時代は、次のような有名なエクスプロイトによって特徴づけられました。 リメラ1n および Pwnagetoolは、iPhone のロックを一括解除し、カスタムファームウェアのインストールやシステムの大幅な変更を可能にしました。
iBootへの移行:ブートローダーの脆弱性
AppleがbootROMを強化すると、攻撃者はiOSのブートプロセスの次の段階であるiBootに狙いを定めました。redsn0wやSn0wbreezeといったブートローダーの脆弱性は、bootROMの脆弱性ほど永続的ではありませんが、それでもデバイスを広範囲に制御することができました。iBootを侵害することで、攻撃者はカーネルとユーザーランド環境に影響を与え、大幅なカスタマイズを可能にし、Appleのエコシステム制限を回避できました。これらの脆弱性はソフトウェアアップデートで修正可能だったため、永続性は低いものの、依然として効果的な脱獄手段となっています。
カーネル時代:パッチと保護
カーネルエクスプロイトへの進化は、脱獄戦術の大きな進化を示しました。カーネルレベルの脆弱性は、次のようなツールによって悪用されます。 パング, Taig, ヤールは、起動プロセスを変更することなく、署名のないコードの実行やシステムの大幅な変更を可能にしました。この時代は、Appleのセキュリティアーキテクチャにおける運用の柔軟性に重点を置いた、より洗練された脱獄のアプローチを確立しました。 エレクトラ および 明らかにする この戦略をさらに実証し、iOS のセキュリティ プロトコルに準拠しているという体裁を保ちながら、Apple の防御を回避してシステムを変更しました。
現代の脱獄:精密かつプロセス固有のエクスプロイト
2015年は脱獄の歴史における転換点となりました。bootROMとiBootの両方の防御を効果的に強化したAppleは、カーネル内の様々な脆弱性に対して定期的なパッチで対応するだけではもはや満足せず、一連のイノベーションで脱獄コミュニティに対する攻勢に転じました。その結果、脱獄コミュニティ、そしてCellebriteやNSOといった企業は、事実上、足手まといの状態となりました。
iOS 9(2015年9月)で、Appleは最も重要なセキュリティアップデートであるカーネルパッチ保護(KPP)を導入しました。KPPとは、カーネルキャッシュ内の読み取り実行メモリと読み取り専用メモリを保護するためにカーネルに実装されたコードのことです。KPPは、定期的にランダムチェックを行うことで保護を行います。
2015年9月以降、脱獄はKPPLessとKPP Bypassの2つに分けられています。KPPLessはKPPを実行したまま、つまりKPPチェックを回避する手法です。KPP BypassはKPPを完全に無効化します。KPPが登場する以前は、攻撃者がセキュリティコードにパッチを当てるには、カーネルへの書き込み権限が必要でした。
2016年6月にiOS 10に搭載され出荷されたA10チップでは、AppleはKTRR(カーネルテキスト読み取り専用領域)を導入しました。これは、実行時のiOSカーネルの改ざんを阻止するものです。以前のチップでは、EL3にロードされた監視プログラムを介してこの対策を講じていましたが、この方法には根本的な欠陥があり、脱獄コミュニティは以前から監視プログラムを回避する方法を見つけていました。A10チップ以降、Appleはセキュリティチェックを事実上ハードウェア自体に移行し、脱獄者(コミュニティと営利セクターの両方)の生活を困難にしました。
2018年6月、AppleはiOS 12のリリースに伴い、ポインタ認証の実装であるPAC(Pointer Authentication Code)を導入しました。PACはポインタの上位ビットを利用して暗号署名を格納し、ポインタ値と追加コンテキストを検証することでセキュリティを強化します。ポインタに認証コードを追加し、認証済みポインタのPACを検証し、元のポインタ値を復元するための特別な命令が導入されました。これにより、システムは特定のポインタが攻撃者によって改ざんされた可能性について暗号的に強力な保証を行うことができ、アプリケーションのセキュリティを大幅に向上させる可能性が生まれます。
その年の後半(2018年9月)にA12チップが登場した際、Appleはページ保護層(PPL)を導入しました。PPLの目的は、カーネルの読み取り/書き込み/実行権限を取得した後でも、脅威アクターがプロセスの実行コードやページテーブルを変更できないようにすることです。これは、攻撃の連鎖をより困難にするもう1つのエクスプロイト緩和策です。これは、APRRを活用してページテーブルを保護する「カーネル内のカーネル」を作成することで実現されます。カーネルがページテーブルを変更する唯一の方法は、「PPLルーチン」を呼び出してPPLに入ることです。これは、XNUからPPLへのシステムコールに類似しています。これにより、ページテーブルを変更できるカーネルコードへのエントリポイントが、これらのPPLルーチンだけに制限されます。このA12の変更が脱獄コミュニティにとって重要だった理由をまとめてみましょう。
脱獄コミュニティは、2021年6月にAppleがiOS15をリリースするまで、比較的穏やかな時期を過ごしていました。iOS15では、Sealed System Volume(SSV)が導入され、脱獄コミュニティに大きな衝撃を与えました。SSVはカーネルレベルのセキュリティ機能で、Appleのみが知る暗号署名でボリュームを封印することで、システムコンテンツを変更しようとするコードを拒否し、iOSの起動前に不正な変更が行われるのを防ぎます。この手法により、脱獄コミュニティは従来の脱獄アーキテクチャの構造を根本的に変更せざるを得なくなりました。それ以来、脱獄はルートレスとルートフルの2つに分かれています。
ルートレス脱獄では、すべてのファイルと変更がルート外に保存され、通常は / var および /プライベート/プリブートルートフル脱獄は、バインドマウントを使用して「偽の」ルートを作成し、それが本物のルートのように動作します。 rootfsただし、bootROM エクスプロイトが必要です。
カーネルコードにパッチを適用せずにジェイルブレイクが行われたため、影響はシステム全体ではなく、プロセスごとに拡大しました。つまり、オペレーティングシステム全体のジェイルブレイクではなく、プロセスごとにジェイルブレイクが行われるようになったのです。
こう考えてみましょう。「前近代的」な脱獄の時代では、カーネルにパッチを当てるだけでシステム全体に影響が出ていました。しかし今では、多くの脱獄(キメラ, checkra1n)はカーネルデータ構造を改ざんしますが、カーネルコードに直接パッチを適用するのではなく、改ざんはプロセスごとに行われます。この状態は脱獄の検出を複雑にします。システムの整合性の大部分は損なわれていないように見えますが、プロセスが脱獄されたかどうかを判断するロジックが実装されています。つまり、意図しない限り、プロセスは脱獄されたままになります。つまり、このタイプの脱獄によって、Appleがアプリのアクセスを意図していないリソースへのアクセスが許可されたとしても、すべてのプロセスへのアクセスが許可されるわけではないということです。これは、脱獄自体が必ずしも携帯電話上のすべての(あるいはいずれかの)アプリにとって危険ではないことを意味するため、重要です。
この新しい脱獄方法は、控えめに言っても技術的に複雑です。 打ち上げ すべてのプロセスが呼び出され、execveフックが挿入され、プロセス作成直後にすべての新しいプロセスジェイルブレイクが挿入されます。そして残念なことに(ジェイルブレイクコミュニティの観点から見ると)、こうした技術的な創造性はすべて「自由」の減少につながります。
の意味 Application Security エンジニアと DevSecOps マネージャー
では、アプリケーションセキュリティエンジニアであるあなたにとって、これは何を意味するのでしょうか?私たちが提供する最高の防御策の一つは「ランタイムアプリケーション自己保護(RASP)RASPを使用すると、お客様はガードや保護機能が作動した際にアプリが自動的に反応するようにプログラムできます。一部のお客様は、脱獄が作動した際にアクションを起こすために長年RASPを使用しています。
しかし、Appleと脱獄コミュニティの間で繰り広げられてきた長年のいたちごっこから私たちが学んだことがあるとすれば、それはすべての脱獄が同等に作られているわけではないということだ。中にはコンピューターへの「テザリング」を必要とするものもあり、好奇心旺盛なユーザーや、最も執念深い脅威アクターや学者以外の人々には機能的な価値がほとんどない。「セミテザリング」、「ルートレス」、「ルートフル」など、様々な種類が存在する。中には、その限定的な範囲ゆえに「脱獄」と呼ぶに値しないものもあり、実用的な「製品」というよりはハッカーの実験に近い。Appleによる脱獄阻止への継続的な取り組みは、脱獄コミュニティに革新を促した一方で、現代の脱獄の威力を徐々に弱めてきた。言い換えれば、脱獄コミュニティを窮地に追い込もうとするAppleの執拗な追求は、「脱獄」という言葉が、これらのハックがもたらす利点を表すにはあまりにも大げさに思えるようにさせてしまったのだ。しかし、こうした小さな偉業を達成するために必要な技術的洞察力は高まっている。
そのため、顧客向けアプリケーションを開発する企業には、脱獄の兆候への対応において、ハンマーではなくメスを使うことをお勧めします。例えば、脱獄が発生したことを記録するだけで十分な場合があり、脱獄専用の対応をプログラムする必要がなくなるかもしれません。対応策をプログラムする必要がある場合は、ランタイムアプリケーション自己保護(RASP)戦略を策定する際に、脱獄と同時に起動される他の防御策も考慮してください。脱獄は攻撃を可能にする手段です。攻撃者を阻止するために脱獄検出だけに頼るのではなく、脱獄によって可能になる攻撃を検出することが重要です。
詳しくはこちら Digital.ai Application Security iOSアプリを保護するには(脱獄の検出など) 製品概要.
企業を拡大する準備はできていますか?
探求
世界の最新情報 Digital.ai
App Aware Insights のご紹介: 保護されたアプリケーションのための共有可能な脅威分析
アプリケーションが実際にどのように標的にされているかを理解するのは、従来から…
ジュラシック・パークが教えてくれたこと Application Security: 生命は道を見つける(そして攻撃者も道を見つける)
「あなた方の科学者たちは、彼らが…かどうかということにとても気を取られていました。