Apple、一部のiOSアプリに近隣SSID一覧によるユーザー位置追跡を許可
(wingu.se)- iOS 9から提供されている HotspotHelper API は、アプリが周辺のWi-Fiアクセスポイント情報を受け取れるようにするもので、ユーザーの同意なしに位置を追跡する経路になり得る
- アプリは登録されたコールバックで周辺ネットワークの SSIDとBSSID を読み取り、サーバーに送信して位置推定ロジックに活用できる
- Wi-Fiアクセスポイントはほとんどが固定されているため、PreciselyやGoogle Geolocation APIのような公開サービスと組み合わせれば Wi-Fiベースの位置推定 が可能になる
- この動作は設定画面の操作中だけに起きるものではなく、端末がロックされたまま周辺Wi-Fiをスキャンする状況でも発生し得る。ユーザーがそれを知ったり、オフにしたりする方法はない
- WeChatやAlipayのように利用範囲の広いアプリもこの機能を実装しており、Appleは位置情報・通知権限のように 明示的な許可/拒否オプション を提供すべきだという要求につながっている
HotspotHelper APIが公開するWi-Fi情報
- AppleはiOS 9から HotspotHelper APIを提供し、アプリがシステムのWi-Fiアクセスポイント接続を支援する機能を要求できるようにした
- サンプルコードは、
NEHotspotHelper.registerによってアプリがWi-Fiネットワーク情報を受け取る流れを示しているcommand.networkListから周辺ネットワークの一覧を取得する- 各ネットワークから
network.ssidとnetwork.bssidを読み取る - これらの値を
trackLocation(withSSID:andMACAddress:)のような位置追跡ロジックに渡せる
- 本来の目的はスムーズな接続支援かもしれないが、アプリは受け取った SSIDとBSSID を位置追跡データとしても利用できる
ユーザー同意なしに位置を推定できる経路
- 周辺Wi-Fiアクセスポイント情報は、ユーザーの位置を推定する基準点になり得る
- ほとんどのWi-Fiアクセスポイントは設置後に移動しない
- 周辺アクセスポイント一覧を使って、ユーザーの現在位置を三角測量したり推定したりできる
- 公開APIの例として Precisely Location By Wi-fi Access Point と Google's Geolocation API がある
- この機能は、ユーザーが明示的に設定画面を操作しているときだけ有効になるわけではない
- 端末が周辺Wi-Fiアクセスポイントをスキャンするとき、登録済みアプリが実行され得る
- 端末がロックされ、ユーザーのポケットの中にある場合も含まれる
- アプリは周辺の SSIDとMACアドレス を取得してサーバーへ送信でき、開発者が望めばほぼリアルタイムに近い位置追跡が可能になる
- ユーザーは画面上でこの処理が行われているかを知るのが難しく、機能を無効化する選択肢もない
WeChatとAlipayの事例
- WeChatとAlipayは、すでにこの機能を実装している主要アプリとして挙げられている
- 両アプリは中国本土で非常に広く使われ、人々の生活の多くの領域に関わっている
- このように広く使われるアプリで、ユーザー同意のない位置追跡の可能性が生じれば、影響範囲は大きくなる
- データ収集の目的がユーザー体験の改善や周辺Wi-Fi接続支援であるとしても、サーバー側ロジックが不透明であるため 透明性と説明責任 の問題が残る
Appleの対応と必要な権限モデル
- この問題は約2年前に発見され、Bilibiliで 動画 として共有されたが、公の認知度は限定的だった
- Appleにも懸念が伝えられ、メールでの返答を受け取ったが、その後の追加アップデートはなかった
- Appleは位置情報や通知のようなプライバシー設定と同様に、ユーザーがこの機能を 無効化 できる選択肢を提供すべきである
- アプリがこの機能へアクセスする前に明示的に権限を要求し、ユーザーがアプリ使用中のアクセスを許可または拒否できるようにすべきである
- HotspotHelperは、Appleのプライバシー保護の約束とユーザーデータ保護の間で、議論の的となる点として残っている
3件のコメント
Hacker News のコメント
リンク先のドキュメントを見ると、この API は Wi-Fi ホットスポットの所有者が作ったアプリが、ユーザーをそのホットスポットに接続するのを助けるためのものに見える: https://developer.apple.com/documentation/networkextension/h...
NEHotspotHelperは、ユーザーがより広いインターネットにアクセスするためにネットワークとやり取りする必要がある Wi-Fi ネットワーク、つまりホットスポットネットワークの認証プロセスにアプリが参加できるようにするものまた、ホットスポット統合にのみ有用で、アクセサリ統合や Wi-Fi ベースの位置特定のような他の作業には技術的・ビジネス上の制限があり、使用前に Apple の特別な権限
com.apple.developer.networking.HotspotHelperの承認が必要だと書かれているだとすると、なぜ WeChat や Alipay のようなアプリにこの権限が付与されたのかが疑問
こうした API の使用では、アプリがバックグラウンド通知を受け取る前にユーザーに見える権限ダイアログを表示すべきで、ユーザーは「1回だけ許可、使用中のみ許可、バックグラウンドで許可、許可しない」から選べるべき
アプリの活動もアプリプライバシーレポートに表示されるべき
WeChat は「スーパーアプリ」で、Wi-Fi ホットスポット接続にも使えると主張する余地はあるが、Alipay についてはうまい説明が思い浮かばない
CoreLocationAPI を使い、ユーザーの正確な位置情報へのアクセス承認を受けている場合。すでに正確な位置情報を受け取っている状況なので、無害に見えるNEHotspotConfigurationAPI で現在の Wi-Fi ネットワークを設定した場合。この記事の範囲はまさにここに該当するようだNEDNSSettingsManager構成がインストールされている場合。正確には何なのか分からないが、VPN 側と似ているように見える参考までに、この API を使うには 特別な権限が必要で、Apple に申請して利用目的を正当化しないと取得できない
どんなアプリでも使える汎用 API ではない
もちろんこれらは「スーパーアプリ」で、Wi-Fi ホットスポットサービスも提供機能の一つかもしれないが、だからこそなおさら「ローカルネットワークアクセス」のようにユーザーが付与できる権限であるべき
ホットスポット機能に関心がないなら、アプリにその能力を持ってほしくない
テストアプリを自分で使ってみない限り、この権限もそうなのかは分からないが、ユーザーの許可を求めるべきだと思う
Apple が権限の使用状況を分析し、悪用されたら取り消すのか気になる
同様に、Facebook VPN「スキャンダル」のとき、Apple が Facebook のエンタープライズ署名証明書を取り消したと記憶している
「心配するな、君や僕は悪用できず、大企業とデータ収集業者だけができる」という話に聞こえる
投稿者は中国人なので WeChat と Alipay を気にしているようだが、Facebook と Google はどうなのか気になる
すでにユーザーはこの権限を許可するよう促すプロンプトを受けているものだと思っていた
最近のアプリでは「ローカルネットワーク」へのアクセスを許可するか尋ねられることがかなり多いが、ローカル Wi-Fi ホットスポットを見られる能力だと理解して、ほぼ常に拒否している
この記事を読んで Spotify でもオフにした
ただ、ほとんどのユーザーはこの情報から位置を推測できることを知らないので、権限ダイアログは改善される必要がある
第一に、実装が雑。ほかの権限と違って、プロンプトを明示的に表示する方法がなく、Apple が適切だと判断したタイミングで突然表示される
中核機能に必要な場合でも自然に案内する方法がなく、権限が付与されたか確認する方法もない
第二に、より重要なのは、Apple 自身のアプリはこの警告を表示しないため、競争条件が不公平なこと
AirPlay などはスムーズに動作するが、競合技術はそうはいかず、開発者は権限状態を知ることができないのでユーザー体験が悪くなる
Apple が制限を導入するなら、自社アプリにも適用すべき。AirPlay と AirDrop はそれぞれ Bluetooth とローカルネットワークアクセスを尋ねるべきだし、Photos アプリは起動時に「写真を選択、すべて許可、拒否」のプロンプトを表示すべきで、Camera アプリも同じプロンプトなしに写真ライブラリへ書き込むべきではない
そうすれば Apple も、こうした制限をめぐるユーザー体験をきちんと設計する動機が生まれ、分かりにくいダイアログの代わりに、より創造的な解決策を探すようになる
現状では、うまく設計する動機がない。これらの API を扱ったことのある iOS 開発者なら、恣意的で予想外の制限のせいで設計がひどいことを知っている
AirPlay にはこの権限は必要ない
ドキュメント: https://developer.apple.com/documentation/technotes/tn3111-i...
審査は小さなスパムアプリなら止めるだろうが、投稿者やほかの人たちが言っているように、大手プレイヤーは止められない気がする
ただし、その権限が存在する場合に、ユーザーが API の使用を拒否できるプロンプトが表示されるのかは、依然として明確ではない
どの人気アプリがこれを使っているのか確認する方法はあるだろうか
ここにいる大半の人と同じく WeChat や Alipay はインストールしていないが、Instagram、Facebook、WhatsApp、Twitter、TikTok、Snapchat、Chrome、Firefox、Photoshop、Lightroom のようなアプリが気になる
どんな動作を試みるのかを見るために、アプリをダウンロードしてインストールしなければならないのはおかしい
App Store はすでにこの情報を知っているし、ダウンロード前のアプリ詳細に表示するのはとても簡単なはず
iOS/macOS がシステムアップデートのたびに Wi-Fi と Bluetooth の無線デバイスをオンにする問題についても話すべき
マーケティングが聞かせてくる子守歌とは違って、まるで監視を最大化するためにわざと作られたデバイスのように見える
99% の人が使うか必要としているので、設定状態を追跡しない方を選んだように思えるし、Apple は Bluetooth キーボードとマウスも好んでいる
気になってきた。ほかにどんなアプリがこの権限を持っているのだろう
自分の携帯にインストールされているアプリのうち、どれがこの権限を持っているのか知る方法はあるだろうか
完全にロックダウンされたプラットフォームの大きな問題の一つ
プラットフォーム所有者がプライバシーを尊重し、他者による侵害を防いでくれるという保証は、結局のところ指切りげんまんにすぎない
コンピューティングプラットフォームのセキュリティはそもそも難しく、特にプライバシーは、技術的なアクセス制御の回避で定義される一般的なコンピューターセキュリティよりも、文化的にはるかに曖昧に定義されている
核心は、Apple がエコシステムを統制するキュレーター役を担おうとしているかどうか
過去に Uber が怪しいことをしたとき、それをやめさせるためにチキンレースをしたこともある
もちろん Alipay と WeChat は、中国市場が Apple にとって非常に大きく現在の成功にも重要なので、より難しいかもしれない
今後数年で Apple がここにどう適応するのか興味深い
オープンなプラットフォームにもこうした問題はあり、もしかするとより深刻に指切りげんまんに依存している
「この問題が解決されないなら、むしろオープンなプラットフォームの方がよい」という意味でないなら、主旨がよく分からない
その論理の問題は、これは多くの問題のうち一つの失敗例にすぎず、後で解決される可能性がある一方で、オープンなプラットフォームにはこの問題に加えて、未解決の問題がもっと多くあるという点
このタイトルは誇張だという不満を聞いたので、より良く、より正確で中立的なタイトル案があれば変えてもよい
確信はないが、記事を読んだ後だと、現在のタイトルは事実としてはあまりしっくりこない
NEHotspotHelperの使用には、申請が必要な特別な権限com.apple.developer.networking.HotspotHelperが必要で、Apple はアプリに正当な必要性がなければおそらく付与しないだろうただしこれは、Apple のプライバシー保護戦略と、WeChat や Alipay のようなスーパーアプリとの非互換性を示しているように見える
1社があらゆる機能を1つのアプリに詰め込むと、そのアプリは突然あらゆる権限を持つことになり、機密データがいつどのように使われるのか把握しにくくなる
西側では通常、こういうやり方でアプリを作らない。たとえば Comcast は別の「WiFi Hotspots」アプリを持っている
おかしなことに、2日前にその機能をメインの Xfinity アプリに統合すると投稿していたので、西側も追いつきつつあるのかもしれない
すぐ拒否するし、その結果アプリの機能が壊れるならアプリも一緒に削除する
Google Maps が精密な位置情報サービスをオンにしろとしつこく促し、友人の代わりにナビ中なのかと尋ねて連絡先へのアクセスを許可しろと言ってくるのも拒否だ
com.apple.developer.networking.HotspotHelperは iOS のどこで取り消せるのか設定 → プライバシーとセキュリティ → ローカルネットワークなのか、それとも別の項目なのか
プライバシーをセールスポイントとして押し出す企業が、裏ではユーザーへの通知もなく位置情報を抜き取っているんですね。
以前はその機能が塞がれていて、地下鉄の乗降通知は不可能なのだと思っていましたが、すでに機能はあったんですね。では、なぜiPhoneだけはできないんだろう…