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