2

私は現在、iOS アプリケーションを監査していますが、このシナリオに遭遇したため、何らかの形で悪用される可能性があるのではないかと考えました。

UIViewControllerシナリオは次のとおりです。クラス名、つまりサブクラス名を文字列として含む plist があります。

そのような文字列がロードされ、次のように一致するクラスを取得するために使用されます。

NSString *className = ... // loaded from plist 
UIViewController *vc = [(UIViewController *)[NSClassFromString(className) alloc] initWithNibName:className bundle:[NSBundle mainBundle]];

UIViewController(ジェイルブレイクされたデバイス上で) plist を改ざんして、アプリケーションに任意のサブクラスをロードさせることができるかどうか疑問に思っています。

何かご意見は?

4

1 に答える 1

3

はい、脆弱性がありますが、@LonelyDeveloper がコメントで述べたように、ジェイルブレイクされたデバイスに関する心配はほとんどないと思います。

あなたが投稿したコードを使用して、誰かがアプリの Info.plist を変更すると (ジェイルブレイクされた電話で実行できUIViewControllerます)、アプリは の別のサブクラスをロードします。それだけの場合、アプリに既に存在するサブクラス、またはアプリが既に読み込んでいるライブラリのみになります。

これを行うと、アプリが正しく機能しなくなる可能性があります。アプリに完全に悪意のあることを行わせるには、あまり良い方法とは思えません。

アプリには他の欠陥が必要です。たとえば、これがデータをキャッシュする銀行アプリだとしましょう。アプリが開き、ログイン ビュー コントローラーが表示されます。アカウント ビュー コントローラーには機密情報が表示されますが、アプリでは、ログイン ビュー コントローラーを介してパスワードを正しく入力しない限り、アカウント ビュー コントローラーを表示できません。この plist の読み込みで、plist が を読み込むように指示LoginViewControllerし、攻撃者が plist を変更して を指定するAccountViewControllerと、保護すべき情報にアクセスできる可能性があります。しかし、このシナリオは欠陥の組み合わせを示していると思います。

ただし、悪意のあるユーザー (誰かがあなたの電話を盗んだ) または Cydia からの悪意のあるダウンロードによってMobileSubstrateの微調整がインストールされた場合、アプリから間違ったビュー コントローラーだけでなく、の任意のサブクラスを読み込むことができます。UIViewControllerただし、これにより、plist クラスをロードしなくてもこれを行うことができます。MobileSubstrate の微調整では、フックを使用してあらゆる種類の新しいコードを事実上必要な場所に挿入できます。

したがって、この脆弱性はすでに存在しており、ジェイルブレイク コミュニティとジェイルブレイク リポジトリが悪意のあるソフトウェアから適切に保護できることを信頼する必要があります。これが、脱獄したデバイスに基本的に Cydia、SBSettings、Activator、および Saurik の UNIX コマンド ライン ツールのみをインストールする理由です。

于 2013-06-22T23:28:43.403 に答える