
AppEnumGuardは、CVE-2025-31207として追跡されているインストール済みアプリケーションの列挙サイドチャネルに対する防御用のrootHide tweakです。iOS 17.0–17.3.1のRelaxin脱獄向けに設計されており、RelaxinのrootHideアーキテクチャを使用しています。このリポジトリには、脆弱な結果を実証して緩和策を検証する、通常のサンドボックス化されたiOSテストアプリケーションも含まれています。
CVE-2025-31207は、AppleのFrontBoardアプリケーション起動ロジックにおける情報漏洩の脆弱性です。サンドボックス化されたアプリケーションは、プライベートなSpringBoardServices起動関数を通じて任意のバンドル識別子を送信し、異なるリターンコードを使用してインストール済みアプリケーションと存在しないアプリケーションを区別できます。これにより、銀行、メッセージング、セキュリティ、サイドローディング、脱獄関連アプリなど、ユーザーがインストールしたアプリケーションに関するプライベートな情報が明らかになる可能性があります。
Appleはこの問題を、アプリがインストール済みアプリを列挙できる可能性のあるロジック上の問題であると説明しています。AppleはiOSおよびiPadOS 18.5で改善されたチェックによりこれを修正しました。その結果、iOS 17.0–17.3.1はOSレベルで影響を受け続けています。
| コンポーネント | サポート対象 |
|---|---|
| iOS | 17.0–17.3.1 |
| 脱獄 | Relaxin |
| ブートストラップ/パッケージアーキテクチャ | rootHide / iphoneos-arm64e |
| デバイスアーキテクチャ | arm64e。tweakバイナリにはarm64eスライスのみが含まれます |
| パッケージ | 従来のrootlessビルドではなく、rootHideの.debをインストールしてください |
RelaxinはrootHideのブートストラップ/パッケージアーキテクチャを使用するため、AppEnumGuardはrootHide Theosでビルドされ、rootHideの.jbrootローダーパスを含みます。パッケージはfirmware (>= 17.0)とfirmware (<< 17.4)を宣言しており、サポートされているRelaxinの範囲である17.0–17.3.1に対応しています。
tweakとテスターは、実際のRelaxin/rootHideデバイス上で一緒に検証されました。tweakを削除した状態ではテスターが情報漏洩を検出し、tweakをインストールした後は緑色の合格結果を返しました。
公開されたプリミティブは、プライベートなSpringBoardServices関数SBSLaunchApplicationWithIdentifierAndURLAndLaunchOptionsを呼び出します。脆弱なシステムでは、インストール済みアプリケーションと存在しないアプリケーションに対して異なるエラーを返します:
9:ターゲットは存在するが、ポリシーにより起動が拒否される7:ターゲットは存在しないこのtweakはUIKitアプリケーションプロセスに注入されます。コンテナ内にインストールされた通常のアプリケーションの場合、プライベートな起動リクエストを送信せずに7を返します。アプリケーションコンテナ外のAppleやその他のシステムプロセスは、元の動作を維持します。
各GitHubリリースには、以下の両方のインストール可能なアーティファクトが含まれています:
AppEnumGuard_1.0.0_roothide_iphoneos-arm64e.deb — rootHide tweakAppEnumGuardTester_1.0.0_sandboxed.ipa — サンドボックス化された検証アプリ.debをインストールして、リスプリングします。WhatsAppがインストールされている場合の期待される結果:
| 状態 | ターゲット | 存在しないアプリ | テスター結果 |
|---|---|---|---|
| tweakなし | 9 | 7 | 赤 / FAIL |
| tweak有効 | 7 | 7 | 緑 / PASS |
元のデバイステストでは、両方の状態が再現されました。tweakをアンインストールすると赤い9 / 7の結果になり、tweakをインストールすると緑の7 / 7の結果になりました。
rootHide Theosをインストールしてから、次を実行します:
cd Tweak
THEOS=/path/to/theos-roothide \
make clean package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=roothide
テスターはXcodeのiPhoneOS SDKでコンパイルされており、脱獄や昇格されたentitlementsはありません:
./scripts/build-tester-ipa.sh
生成されたIPAはdist/に配置されます。これはアドホック署名されているため、通常の開発用IDで再署名できます。このテストは通常のアプリケーションサンドボックスから実行することを意図しているため、platform-applicationやcom.apple.private.security.no-sandboxを付与しないでください。
7 / 7テストは、ターゲットアプリケーションがインストールされていることが分かっている場合にのみ意味があります。MIT