記事

iOS 14 剪貼簿読み取り問題:プライバシーと利便性のジレンマを解説|対策と影響

iOS 14で多くのアプリがクリップボードを読み取る理由と、そのプライバシーリスクを明確化。ユーザーの不安を解消しつつ、安全に利便性を保つ方法を提案します。

iOS 14 剪貼簿読み取り問題:プライバシーと利便性のジレンマを解説|対策と影響

本記事は AI による翻訳をもとに作成されています。表現が不自然な箇所がありましたら、ぜひコメントでお知らせください。

記事一覧


iOS 14 のクリップボード盗用騒動、プライバシーと利便性のジレンマ

なぜ多くの iOS アプリがあなたのクリップボードを読み取るのか?

Photo by [Clint Patterson](https://unsplash.com/@cbpsc1?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText){:target="_blank"}

Photo by Clint Patterson

⚠️ 2022/07/22 更新:iOS 16 の今後の変更点

iOS 16以降、ユーザーが自ら貼り付け操作を行わない場合、アプリが剪貼簿を読み取ろうとすると確認ダイアログが表示され、ユーザーが許可しないとアプリは剪貼簿の情報を取得できません。

[UIPasteBoardのiOS 16におけるプライバシー変更](https://sarunw.com/posts/uipasteboard-privacy-change-ios16/){:target="_blank"}

UIPasteBoardのiOS 16におけるプライバシー変更

議題

剪貼簿がAPPに読み取られたときの上部通知メッセージ

クリップボードがアプリに読み取られたときの上部通知メッセージ

iOS 14 からは、ユーザーに対してアプリがクリップボードを読み取ったことを通知します。特に中国本土のアプリは悪名高く、メディアの過剰な報道もあって大きなプライバシー不安を引き起こしました。しかし実際には、中国のアプリだけでなく、アメリカ、台湾、日本など世界中の大小さまざまなアプリが対象となっています。では、なぜこれほど多くのアプリがクリップボードを読み取る必要があるのでしょうか?

Google Search

Google 検索

安全

剪貼板には個人情報やパスワードが含まれることがあります。例えば、1Password、LastPassなどのパスワード管理アプリでパスワードをコピーした場合です。APPが読み取ることができれば、サーバーに送信して記録することも可能であり、すべては開発者の良心次第です。もし調査したい場合は、中間者攻撃によるスニッフィング を使って、APPがサーバーに送信するデータに剪貼板の情報が含まれているか監視することができます。

起源

クリップボード API は、iOS 3(2009年)から存在しますが、iOS 14 からユーザーに通知するポップアップが追加されました。つまり、その間に10年以上が経過しており、悪意のあるアプリなら既に十分なデータを収集しているはずです。

なぜ

なぜ多くの国内外のアプリが起動時にクリップボードを読み取るのでしょうか?

ここでまず定義しておきますが、私が言っている状況は 「APPを開いたとき」 のことであり、APP使用中にクリップボードを読み取る場合ではありません。APP使用中の読み取りは、Google Mapが直前にコピーした住所を自動で貼り付けるなど、APP内の機能利用に近いものです。ただし、中にはクリップボード情報を繰り返し盗み取るAPPも否定できません。

「包丁は野菜を切ることも、人を殺すこともできる。使う人が何に使うかによる」

APPが起動時にクリップボードを読み取る主な理由は、「iOS Deferred Deep Link」を使ってユーザー体験を強化するためです。上記の流れのように、ある製品がウェブとAPPの両方を提供している場合、ユーザーにAPPをインストールしてもらいたい(より高いエンゲージメントのため)ため、ユーザーがウェブサイトを閲覧しているときにAPPのダウンロードを促します。しかし、ダウンロード後にAPPを開いたときに、ウェブで見ていたページを自動的に表示させたいのです。

例:SafariでPxHomeのモバイルウェブ版を閲覧 → 気に入った商品を購入したい → PxHomeがトラフィックをアプリに誘導 → アプリをダウンロード → アプリを開く → さっきウェブで見た商品を表示

もしこれを行わなければ、ユーザーは 1. ウェブページに戻ってもう一度クリックするか 2. アプリ内で再度商品を検索するしかありません。どちらの場合も購入のハードルが上がり、迷いの時間が増え、購入に至らない可能性があります!

一方で、運営面では、どのソースから成功したインストールかを把握することが、マーケティングや広告予算の投資に大きく役立ちます。

なぜ必ずクリップボードを使うのか、他に代替方法はないのか?

これは ネズミと猫のゲーム です。iOS(Apple)は開発者がユーザーの出所を逆追跡することを望んでいません。iOS 9 以前は情報をウェブの Cookie に保存し、アプリインストール後にその Cookie を読み取っていましたが、iOS 10 以降はこの方法がAppleにより封じられました。行き詰まった開発者たちは最終手段として「クリップボードに情報を渡す」方法を使い、iOS 14 で再びユーザーに通知が表示され、開発者は困惑しています。

もう一つの方法は Branch.io を利用し、ユーザーのプロファイル(IP、端末情報)を記録してマッチングで情報を取得する方法です。原理的には可能ですが、バックエンド、データベース、APP に関わる多大な人力を投入して研究・実装する必要があり、誤判定や衝突が起こる可能性もあります。

隣の Android Google はもともとこの機能をサポートしており、iOSのように回りくどいことをする必要はありません。

影響を受けるAPP

多くのAPP開発者は、自分のアプリでもクリップボードのプライバシー問題が発生していることに気づいていないかもしれません。なぜなら、GoogleのFirebase Dynamic Linksサービスも同じ原理で実現されているからです:

1
2
3
4
// この文字列の理由は、AppPreviewページのJavaScriptコードによってクリップボードにコピーされたFDLリンクのみを
// 認識し、copy-unique-matchプロセスで使用するためです。ユーザーが自分でFDLをクリップボードにコピーした場合は、
// そのリンクはcopy-unique-matchプロセスで使用されてはなりません。
// この定数はサーバーバージョンの durabledeeplink/click/ios/click_page.js にある定数と同期させる必要があります。

だから、Google Firebase Dynamic Links サービスを利用しているすべてのアプリは、クリップボードのプライバシー問題に巻き込まれる可能性があります!

個人的な意見

セキュリティの問題はありますが、やはり「信頼」です。開発者が正しいことをするために信頼されるべきです。もし悪意があるなら、クレジットカード情報の盗用や実際のパスワードの記録など、もっと効果的に悪事を働ける場所がたくさんあります。

ヒントの目的は、ユーザーがクリップボードの読み取りタイミングに注意できるようにし、不自然な場合は警戒することです!

読者からの質問

Q:「TikTokがクリップボードにアクセスするのはスパム行為を検出するため」という説明は正しいですか?

A:個人的にはただ世論をかわすための言い訳だと思います。抖音の意図は「ユーザーが広告メッセージをあちこちコピー&ペーストするのを防ぐため」でしょう。しかし実際には、メッセージ入力完了時や送信時にブロックやフィルタリングすればよく、常にユーザーのクリップボードを監視する必要はありません!クリップボードに広告や「敏感な」メッセージがあっても管理する必要がありますか?私は貼り付けて公開していません。

開発者ができること

手元に予備の端末がなくiOS 14へのアップデートテストができない場合は、まず Apple から XCode 12 をダウンロード して、シミュレーターで試してみてください。

すべてまだ新しいため、Firebase を連携する場合はまず Firebase-iOS-SDK/Issue #5893 を参照し、最新の SDK に更新してください。

もし自分で DeepLink を実装する場合は、Firebase-iOS-SDK の #PR 5905 の変更を参考にしてください:

Swift:

1
2
3
4
5
6
7
if #available(iOS 10.0, *) {
  if (UIPasteboard.general.hasURLs) {
      //UIPasteboard.general.string
  }
} else {
  //UIPasteboard.general.string
}

Objective-C:

1
2
3
4
5
6
7
8
9
if (@available(iOS 10.0, *)) {
    if ([[UIPasteboard generalPasteboard] hasURLs]) {
      //[UIPasteboard generalPasteboard].string;
    }
  } else {
    //[UIPasteboard generalPasteboard].string;
  }
  return pasteboardContents;
}

先にクリップボードの内容がURLかどうかを確認する(ウェブのJavaScriptでコピーされた内容がパラメータ付きのURLである場合)ことで、APPを開くたびにクリップボードが読み取られるのを防げます。

現時点ではこれしか方法がなく、通知は表示されますが、より焦点を絞るだけです

また、Appleは新しいAPIである DetectPattern を追加しました。これにより、開発者はクリップボードの情報が必要なものかをより正確に判断してから読み取り、ユーザーに通知を表示できるため、ユーザーは安心でき、開発者もこの機能を継続して利用できます。

DetectPattern はまだベータ版で、Objective-C のみで実装可能です。

または…

  • Branch.io を使う

  • Branch.io の仕組みを自作する方法

  • APPはまずカスタムアラートでユーザーに通知し、その後クリップボードを読み取る(ユーザーの安心のため)

  • 新しいプライバシーポリシーの追加

  • iOS 14 最新の App Clips?ウェブ → App Clips 軽量利用 → 詳細操作で APP に誘導

関連記事

ご質問やご意見がございましたら、こちらからご連絡ください

PostZMediumToMarkdown によって Medium から変換されました。


🍺 Buy me a beer on PayPal

👉👉👉 Follow Me On Medium! (1,053+ Followers) 👈👈👈

本記事は Medium にて初公開されました(こちらからオリジナル版を確認)。ZMediumToMarkdown による自動変換・同期技術を使用しています。

Improve this page on Github.

本記事は著者により CC BY 4.0 に基づき公開されています。