iOS App Extensions
アプリ拡張機能は、他のアプリやシステムとやり取りすることで、カスタム機能やコンテンツを提供することで、アプリの機能を拡張します。これらの拡張機能には次のものがあります:
カスタムキーボード:デフォルトのiOSキーボードを置き換え、すべてのアプリでユニークなキーボードを提供します。
共有:ソーシャルネットワークや他の人と直接共有を可能にします。
Today(ウィジェット):通知センターのTodayビューから素早くコンテンツを提供したり、タスクを実行したりします。
ユーザーがこれらの拡張機能を利用すると、ホストアプリからテキストを共有するなど、拡張機能はそのコンテキスト内でこの入力を処理し、共有された情報を活用してタスクを実行します。これについては、Appleのドキュメントに詳細が記載されています。
セキュリティに関する考慮事項
主なセキュリティアスペクトは次のとおりです:
拡張機能とそれを含むアプリは、直接ではなく、プロセス間通信を介して通信します。
Todayウィジェットは、特定の方法でそのアプリに開くように要求できる点がユニークです。
共有データへのアクセスは、プライベートコンテナ内で許可されていますが、直接アクセスは制限されています。
HealthKitなどの特定のAPIはアプリ拡張機能にはオフリミットであり、iMessage拡張機能を除いて、長時間実行されるタスクを開始したり、カメラやマイクにアクセスしたりすることはできません。
静的解析
アプリ拡張機能の特定
ソースコード内でアプリ拡張機能を見つけるには、XcodeでNSExtensionPointIdentifier
を検索するか、拡張機能を示す.appex
ファイルをアプリバンドルで調査します。ソースコードがない場合は、grepやSSHを使用して、アプリバンドル内でこれらの識別子を見つけます。
サポートされるデータタイプ
拡張機能のInfo.plist
ファイルをチェックして、NSExtensionActivationRule
がサポートされるデータタイプを特定します。このセットアップにより、ホストアプリでのみ互換性のあるデータタイプが拡張機能をトリガーするようになります。
データ共有
アプリとその拡張機能間のデータ共有には、"App Groups"を介して設定された共有コンテナが必要であり、NSUserDefaults
を介してアクセスされます。この共有スペースは、拡張機能によって開始されるバックグラウンド転送に必要です。
拡張機能の制限
アプリは、特にカスタムキーボードなどの特定の拡張機能タイプを制限することができ、機密データの処理がセキュリティプロトコルと一致するようにします。
動的解析
動的解析には次のものが含まれます:
共有アイテムの検査:
NSExtensionContext - inputItems
にフックして、共有されたデータタイプと起源を確認します。拡張機能の特定:
NSXPCConnection
などの内部メカニズムを観察して、どの拡張機能がデータを処理しているかを発見します。
frida-trace
などのツールは、特にプロセス間通信の技術的な詳細に興味を持つ人々に、基礎プロセスの理解に役立ちます。
参考文献
Last updated