ドーパミンとドーパミン-RootHide:検知されない脱獄の神話

最近の脱獄リリース ドーパミン 2.4.xとそのフォーク ドーパミン-ルートハイド 「検知されない脱獄」についての議論を巻き起こした。

新機能のHide Jailbreakは、脱獄の検知を完全に回避するステルス技術として、オンラインで瞬く間に話題になりました。フォーラムには成功談が溢れ、長年脱獄デバイスを拒否していた銀行アプリが突然使えるようになったり、セキュリティアプリがチェックをパスしたりと、コミュニティ内で噂は瞬く間に広まりました。ついに、真に検知されない脱獄が実現したのです。

しかし、アプリケーションセキュリティチームと脱獄コミュニティの間の猫とネズミのゲームを何年も追ってきたセキュリティ研究者として、私たちはその言葉を信じています。検出不能—詳しく調べる価値がある。

その認識は重要な点を見逃しています。

この神話を理解するには、まず、過去数世代の iOS で脱獄の設計がどのように変化したかを見る必要があります。

システム全体から選択的注入へ

初期の脱獄はグローバルに機能していました。カーネルにパッチが適用されたり、ファイルシステムが再マウントされたりすると、すべてのアプリが昇格環境で実行されました。システム全体が変更されたため、セキュリティツールはこれを簡単に検出できました。

Appleは、初期の脱獄に対して、それ以来、迅速かつ頻繁に対応してきました。これらのセキュリティ強化は、厳格な権限検証やサンドボックスの強化から、カーネルパッチ保護(KPP)、カーネルテキスト読み取り専用領域(KTRR)、ポインタ認証コード(PAC)、そしてシールされたシステムボリューム(SSV)まで、多方面に及んでいます。

これらの対策により、脱獄開発者は適応を迫られました。Dopamineのような最新の脱獄は、以前の脱獄のようにカーネルに直接パッチを当てるのではなく、まずカーネルの脆弱性を悪用して、特定のカーネルデータ構造を変更するために必要な最小限の権限を取得します。これらの構造が調整されると、脱獄はユーザーランド環境を初期化し、正常に動作し始めます。

に詳述されているように 脱獄を理解するApple の階層化された防御により、脱獄はより制約のあるアーキテクチャに強制されました。

システム全体に影響を与えるフックは依然として多く存在しますが、現代の脱獄では、それらの検出範囲を最小限に抑え、各アプリとサンドボックス内に可能な限りロジックを収めるよう積極的に取り組んでいます。Dopamine-RootHideのようなプロジェクトは、この理念をさらに推し進めています。

このモジュール式でスコープが限定された設計こそが、最終的にHide Jailbreakのような機能を技術的に実現可能にしたのです。脱獄のスコープはシステム全体の制御から局所的なプロセスインジェクションへと狭まり、システム全体への影響範囲が制限されています。

ドーパミン 2.4.x と「脱獄を隠す」

この興奮を引き起こした機能は、一見するとシンプルです。Dopamine 2.4.x の「Hide Jailbreak」というトグルです。

ドーパミン使用者の観点から見ると、それは魔法のように機能します。

  • 携帯電話の特定のアプリのトグルを有効にする
  • アプリを起動する
  • 動作します。脱獄は検出されず、制限もエラーもありません。

そして、これら全てが、他の脱獄アプリでは通常通り機能し続ける一方で発生します。テーマはレンダリングされ、改造されたシステムアプリも動作します。脱獄は「非表示」に設定されている場所を除いて、完全に有効なままです。

テストでは誇大宣伝が裏付けられたようです:

  • 従来のファイルシステムチェックでは脱獄痕跡を発見できなかった
  • 一般的なAPIベースの検出方法では否定的な結果が返されました
  • 高度なセキュリティ対策を備えたアプリは問題なく動作した
  • 既存の脱獄検出ライブラリは「脱獄は検出されませんでした」と報告しました

Dopamine 2.4.x の Hide Jailbreak トグルは、ジェイルブレイクを隠すのではなく、環境から完全に削除します。

ドーパミンが活性化すると、

  • 対象アプリのプロセス空間にフック、ライブラリ、または脱獄コードを挿入しません。
  • アンマウント /var/jb、脱獄バイナリと調整が保存される場所です。

しかし、ここで「神話」の部分が出てきます。実際には何も隠されていないのです。

脱獄アプリは、それ自体を隠したり、見えなくしたりはしません。むしろ、脱獄アプリは単に存在しないのです。インジェクションもフックも、微調整も一切ありません。アプリは最初から最後まで、脱獄コードに触れることなく動作します。

しかし、これはプロセス内部の話です。外部では、ジェイルブレイクされたデバイスは依然として、攻撃者にアプリのメモリやファイルへの高度なアクセス権を与えてしまいます。

これはステルスではなく、選択的な不在です。

技術的な現実を理解する

これがなぜ機能するのか、そしてなぜ重要なのかを理解するためには、現代の脱獄がプロセスレベルでどのように動作するのかを考察する必要がある。Dopamineのような現代の脱獄は、 launchdiOS上の他のすべてのプロセスを生成する最初のプロセスです。アプリが起動しようとすると、このフックがその生成をインターセプトします。その瞬間、脱獄プログラムは注入するかしないかを決定します。

Dopamine-RootHide の革新的な点は、「Hide Jailbreak」トグルを通じてユーザーがその決定を制御できることです。

アプリのトグルが有効になっている場合:

  • アプリのプロセスは脱獄コードなしで起動します
  • アプリは真にクリーンなプロセス空間を認識します。なぜなら、それはクリーンだからです。
  • 他のプロセスは完全な脱獄機能で実行を継続します

固定マウントポイントに依存していたオリジナルのDopamineとは異なり、 /var/jbDopamine-RootHideは実行のたびにマウントパスをランダム化します。ファイルシステムの書き込み可能領域内に、予測不可能な名前で新しいマウントポイントが作成されるため、期待される場所が存在しないという理由から、従来のパスベースの検出は効果がありません。

Dopamine-RootHideは表面下では完全にアクティブな状態を維持しています。カーネルデータ構造とシステムフックは依然として変更されます。しかし、保護されたアプリのサンドボックス内からは、これらのランダム化されたマウントポイントはほぼアクセス不能であり、プロセスはアクティブな脱獄環境から実質的に分離されています。この設計により、OS全体で機能する脱獄状態と、クリーンで隔離されたプロセスという2つの状態を同時に維持することが可能になります。

これをプロセス レベルのコンテナ化と考えてください。各アプリは独自のバブル内で実行され、Dopamine-RootHide は各バブルに含まれるものを制御します。

これが意味するもの:機能と制限

メカニズムを理解すると、Dopamine-RootHide が何を達成するのか、またその限界はどこにあるのかが明らかになります。

保護されたアプリからうまく隠されるもの:

  • 脱獄ファイルとディレクトリ(まだ存在しますが、アプリはそれらを表示できません)
  • 挿入されたコードまたは dylib (そのプロセスには何も挿入されていないため)
  • 変更されたシステムコール(そのプロセス空間のみ)
  • 標準検出ライブラリのチェック(アプリ自身のプロセスを調べる)

潜在的に検出可能なもの:

  • システム全体のカーネルの変更(カーネルレベルからチェックした場合)
  • デバイス上に他のジェイルブレイクされたプロセスが存在する
  • システムの動作における異常な動作
  • システムの整合性をチェックするハードウェアベースの認証
  • プロセスレベルの検査を超えた高度な整合性チェック

カーネルの状態をチェックしたり、ハードウェアセキュリティ機能を使用したり、行動監視を採用したりといった深いシステム分析を実行するアプリは、潜在的に次のようなことを検出できる可能性がある。 何か アプリ自体のプロセスがクリーンに見えても、システム レベルで変更されている可能性があります。

したがって、「検出不能」という表現は誤解を招く恐れがあります。より正確な表現は、次のようになります。 従来のプロセスレベルのチェックでは検出できません。

セキュリティエンジニアへの影響

アプリケーションセキュリティチームにとって、この進化は検知と対応戦略に関する新たな考え方を要求しています。従来の二項対立的なアプローチ、「脱獄を検知=アプリをブロックする」は、脱獄がシステム全体に及んでいた当時は理にかなっていました。脱獄が少しでも存在すれば、すべてのプロセスが影響を受けます。

現代の現実はより複雑です。デバイスがジェイルブレイクされていても、特定のアプリのプロセスは正常に動作している可能性があります。単純なジェイルブレイク検出では、もはや全体像を把握できません。

前述のように 脱獄を理解する企業は、脱獄の兆候に反応する際には、ハンマーではなくメスを使うべきです。Dopamine-RootHideのような選択的インジェクションアーキテクチャにおいては、このアドバイスはさらに重要になります。

以下の更新された戦略を検討してください。

  • 脱獄自体だけでなく、脱獄によって可能になる攻撃の検出に重点を置く
  • 脱獄指標を他の行動シグナルと組み合わせる
  • プロセス状態だけでなくシステム状態も検査するランタイム整合性チェックを実装する
  • 複数の警備員が同時に発砲したときにRASPを使用して応答をトリガーする
  • バイナリブロックの決定ではなく、リスクベースの対応を検討する

脱獄自体は、脱獄を可能にする手段です。アプリのセキュリティにとって重要なのは、脱獄によって改ざん、コードインジェクション、あるいは特定のアプリケーションに対する悪意のある動作が可能になるかどうかです。

結論

「脱獄を隠す」という表現は意味論的な誤りです。Dopamineが隠蔽と表現しているのは、実質的に脱獄ではなく、特定のプロセスに対して自身の環境を無効にする操作です。

隠蔽されると、脱獄はアプリのプロセス空間内で機能しなくなり、従来のチェックで分析できる範囲が狭まります。しかし、これはデバイスがクリーンなスマートフォンのように動作することを意味するわけではありません。脱獄されたデバイスは、スマートフォンの所有者(潜在的な攻撃者)にプロセス外でシステムレベルの権限を付与したままになります。

これはステルスではなく、選択的な不在です。脱獄は自身を偽装するのではなく、単に検出対象に存在しないだけです。アプリがクリーンな環境で実行されている場合でも、デバイスは脱獄レベルのアクセス権限で動作するため、より広範な露出が残ります。

真の軍拡競争は、Dopamine-RootHideと、それを摘発しようとするアプリケーションセキュリティチームの間で繰り広げられています。Dopamine-RootHideは、新しいリリースごとに、パスのランダム化、インジェクションパターンの変更、アーティファクトの隠蔽方法の変更など、ステルスロジックを調整しています。検出ルールが改良されるたびに、Dopamine-RootHideも適応していきます。両者が互いの動きに絶えず反応しているため、新たに導入された変更は革命的なものでも、大きな技術的課題でもありませんが、依然として継続的な警戒が必要です。

この急速な反復により、古いバージョンでは脱獄が何を実行しているのかが徐々に把握できなくなるため、組織が新しいアプリケーション セキュリティ バージョンに対応することが極めて重要になります。

これらの変更をほぼリアルタイムで把握し続けることが、検出機能を最新の状態に保つ唯一の方法です。したがって、最も信頼性の高い防御策は、脱獄によって可能になる動作(改ざん、操作など)を検出し、Dopamine-RootHideの進化に即座に対応できるよう、検出ツールと保護ツールを常に最新の状態に保つことです。

お勧めの関連ガジェット