iOS UIPasteboard
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
iOSデバイス上でのアプリケーション間のデータ共有は、UIPasteboard
メカニズムによって促進されており、主に2つのカテゴリに分かれています。
システム全体の一般ペーストボード: これは任意のアプリケーションとデータを共有するために使用され、デバイスの再起動やアプリのアンインストールを超えてデータを持続させるように設計されています。この機能はiOS 10から利用可能です。
カスタム/名前付きペーストボード: これらは、アプリ内または同じチームIDを共有する別のアプリとのデータ共有のために特に設計されており、作成したアプリケーションプロセスのライフサイクルを超えて持続するようには設計されていません。これはiOS 10で導入された変更に従っています。
セキュリティの考慮事項は、ペーストボードを利用する際に重要な役割を果たします。例えば:
ユーザーがペーストボードへのアクセスを管理するためのメカニズムはありません。
ペーストボードの不正なバックグラウンド監視のリスクを軽減するために、アクセスはアプリケーションがフォアグラウンドにあるときに制限されています(iOS 9以降)。
プライバシーの懸念から、持続的な名前付きペーストボードの使用は、共有コンテナの方が好まれます。
iOS 10で導入されたユニバーサルクリップボード機能は、一般的なペーストボードを介してデバイス間でコンテンツを共有できるようにし、開発者がデータの有効期限を設定し、自動コンテンツ転送を無効にすることができます。
機密情報が誤ってグローバルペーストボードに保存されないようにすることが重要です。さらに、アプリケーションは、意図しないアクションのためにグローバルペーストボードデータの悪用を防ぐように設計されるべきであり、開発者は機密情報をクリップボードにコピーすることを防ぐための対策を実装することが推奨されます。
静的分析では、ソースコードまたはバイナリを検索して以下を確認します:
generalPasteboard
を使用してシステム全体の一般ペーストボードの使用を特定します。
pasteboardWithName:create:
およびpasteboardWithUniqueName
を使用してカスタムペーストボードを作成します。持続性が有効になっているか確認しますが、これは非推奨です。
動的分析では、特定のメソッドをフックまたはトレースします:
システム全体の使用のためにgeneralPasteboard
を監視します。
カスタム実装のためにpasteboardWithName:create:
およびpasteboardWithUniqueName
をトレースします。
持続性設定を確認するために非推奨のsetPersistent:
メソッド呼び出しを観察します。
監視すべき重要な詳細には以下が含まれます:
ペーストボード名と内容(例えば、文字列、URL、画像のチェック)。
存在するアイテムの数とデータ型、標準およびカスタムデータ型チェックを活用します。
setItems:options:
メソッドを調査して有効期限およびローカル専用オプションを確認します。
監視ツールの使用例としては、objectionのペーストボードモニターがあり、一般的なペーストボードを5秒ごとにポーリングして変更を確認し、新しいデータを出力します。
以下は、objectionのアプローチに触発されたシンプルなJavaScriptスクリプトの例で、ペーストボードからの変更を5秒ごとに読み取り、ログに記録します:
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、練習する:HackTricks Training GCP Red Team Expert (GRTE)