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