iOS Custom URI Handlers / Deeplinks / Custom Schemes
これは関連情報からの要約です https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/
基本情報
カスタムURLスキームを使用すると、アプリはカスタムプロトコルを使用して通信できます。これについては Apple Developer Documentation で詳しく説明されています。これらのスキームはアプリによって宣言され、その後、これらのスキームに従って受信URLを処理します。このベクトルを通じた攻撃を防ぐために、すべてのURLパラメータを検証し、不正なURLを破棄することが重要です。
例として、URI myapp://hostname?data=123876123
が特定のアプリケーションアクションを呼び出すとします。注目すべき脆弱性は、Skypeモバイルアプリで、skype://
プロトコルを介して許可されていない通話アクションを許可していたことです。登録されたスキームは、アプリの Info.plist
の CFBundleURLTypes
の下に見つけることができます。悪意のあるアプリケーションは、URIを再登録して機密情報を傍受することができます。
アプリケーションクエリスキームの登録
iOS 9.0 以降、アプリが利用可能かどうかを確認するには、canOpenURL:
によって Info.plist
の LSApplicationQueriesSchemes
にURLスキームを宣言する必要があります。これにより、アプリがクエリできるスキームが50に制限され、アプリの列挙を防いでプライバシーが向上します。
URLハンドリングとバリデーションのテスト
開発者は、application:didFinishLaunchingWithOptions:
やapplication:openURL:options:
などの特定のメソッドを検査して、URLパスの構築とバリデーションを理解すべきです。例えば、Telegramは、さまざまなメソッドを使用してURLを開くようです。
他のアプリに対するURLリクエストのテスト
openURL:options:completionHandler:
のようなメソッドは、他のアプリとやり取りするためのURLを開くために重要です。アプリのソースコードでこのようなメソッドの使用を特定することは、外部通信を理解するための鍵となります。
廃止されたメソッドのテスト
application:handleOpenURL:
やopenURL:
などのURLを開くための廃止されたメソッドの処理は、セキュリティ上の影響を確認するために特定およびレビューする必要があります。
URLスキームのFuzzing
URLスキームのFuzzingを行うことで、メモリ破損のバグを特定することができます。Fridaのようなツールは、異なるペイロードを持つURLを開いてクラッシュを監視することで、このプロセスを自動化することができます。iGoat-SwiftアプリでのURLの操作によって具体例が示されています。
参考文献
Last updated