1 ポイント 投稿者 GN⁺ 2023-12-22 | 3件のコメント | WhatsAppで共有
  • 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.ssidnetwork.bssid を読み取る
    • これらの値を trackLocation(withSSID:andMACAddress:) のような位置追跡ロジックに渡せる
  • 本来の目的はスムーズな接続支援かもしれないが、アプリは受け取った SSIDとBSSID を位置追跡データとしても利用できる

ユーザー同意なしに位置を推定できる経路

  • 周辺Wi-Fiアクセスポイント情報は、ユーザーの位置を推定する基準点になり得る
    • ほとんどのWi-Fiアクセスポイントは設置後に移動しない
    • 周辺アクセスポイント一覧を使って、ユーザーの現在位置を三角測量したり推定したりできる
  • 公開APIの例として Precisely Location By Wi-fi Access PointGoogle's Geolocation API がある
  • この機能は、ユーザーが明示的に設定画面を操作しているときだけ有効になるわけではない
    • 端末が周辺Wi-Fiアクセスポイントをスキャンするとき、登録済みアプリが実行され得る
    • 端末がロックされ、ユーザーのポケットの中にある場合も含まれる
  • アプリは周辺の SSIDとMACアドレス を取得してサーバーへ送信でき、開発者が望めばほぼリアルタイムに近い位置追跡が可能になる
  • ユーザーは画面上でこの処理が行われているかを知るのが難しく、機能を無効化する選択肢もない

WeChatとAlipayの事例

  • WeChatとAlipayは、すでにこの機能を実装している主要アプリとして挙げられている
  • 両アプリは中国本土で非常に広く使われ、人々の生活の多くの領域に関わっている
  • このように広く使われるアプリで、ユーザー同意のない位置追跡の可能性が生じれば、影響範囲は大きくなる
  • データ収集の目的がユーザー体験の改善や周辺Wi-Fi接続支援であるとしても、サーバー側ロジックが不透明であるため 透明性と説明責任 の問題が残る

Appleの対応と必要な権限モデル

  • この問題は約2年前に発見され、Bilibiliで 動画 として共有されたが、公の認知度は限定的だった
  • Appleにも懸念が伝えられ、メールでの返答を受け取ったが、その後の追加アップデートはなかった
  • Appleは位置情報や通知のようなプライバシー設定と同様に、ユーザーがこの機能を 無効化 できる選択肢を提供すべきである
  • アプリがこの機能へアクセスする前に明示的に権限を要求し、ユーザーがアプリ使用中のアクセスを許可または拒否できるようにすべきである
  • HotspotHelperは、Appleのプライバシー保護の約束とユーザーデータ保護の間で、議論の的となる点として残っている

3件のコメント

 
GN⁺ 2023-12-22
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 のようなアプリにこの権限が付与されたのかが疑問

    • Alipay は分からないが、WeChat はユーザーが WeChat アカウントでインターネットホットスポットに接続できるようにする WeChat Wifi のために、この機能が必要なのだと思う: https://mp.weixin.qq.com/s?__biz=MzI1NjA0NzQzOQ==∣=265026...
    • 本物のホットスポットアプリだけに権限を与えるとしても、ユーザーフレンドリーな プライバシー優先設計ではない
      こうした API の使用では、アプリがバックグラウンド通知を受け取る前にユーザーに見える権限ダイアログを表示すべきで、ユーザーは「1回だけ許可、使用中のみ許可、バックグラウンドで許可、許可しない」から選べるべき
      アプリの活動もアプリプライバシーレポートに表示されるべき
    • 中国市場があまりにも重要だからだろう
      WeChat は「スーパーアプリ」で、Wi-Fi ホットスポット接続にも使えると主張する余地はあるが、Alipay についてはうまい説明が思い浮かばない
    • VPN アプリもこの機能を使っているようだ: https://github.com/pia-foss/mobile-ios/blob/4618b55161ec5b8b...
    • Apple が整理したいくつかの条件では、この権限は不要なようだ: https://developer.apple.com/forums/thread/679038
      1. アプリが CoreLocation API を使い、ユーザーの正確な位置情報へのアクセス承認を受けている場合。すでに正確な位置情報を受け取っている状況なので、無害に見える
      2. アプリが NEHotspotConfiguration API で現在の Wi-Fi ネットワークを設定した場合。この記事の範囲はまさにここに該当するようだ
      3. アプリに有効な VPN 構成がインストールされている場合。これはかなり驚き
      4. アプリに有効な NEDNSSettingsManager 構成がインストールされている場合。正確には何なのか分からないが、VPN 側と似ているように見える
  • 参考までに、この API を使うには 特別な権限が必要で、Apple に申請して利用目的を正当化しないと取得できない
    どんなアプリでも使える汎用 API ではない

    • あまり慰めにはならない。記事によると、Apple が WeChat と Alipay にその権限を与えたからだ
      もちろんこれらは「スーパーアプリ」で、Wi-Fi ホットスポットサービスも提供機能の一つかもしれないが、だからこそなおさら「ローカルネットワークアクセス」のようにユーザーが付与できる権限であるべき
      ホットスポット機能に関心がないなら、アプリにその能力を持ってほしくない
    • ほとんどの権限は、ユーザーが機能をオフにできるように プライバシープロンプトを表示する
      テストアプリを自分で使ってみない限り、この権限もそうなのかは分からないが、ユーザーの許可を求めるべきだと思う
    • Facebook、Instagram、Messenger、あるいは記事で言及されている Alipay、WeChat がこの権限を持って怪しいことをするなら、大きな プライバシー問題になり得る
      Apple が権限の使用状況を分析し、悪用されたら取り消すのか気になる
      同様に、Facebook VPN「スキャンダル」のとき、Apple が Facebook のエンタープライズ署名証明書を取り消したと記憶している
    • これがより良いのか悪いのか分からない
      「心配するな、君や僕は悪用できず、大企業とデータ収集業者だけができる」という話に聞こえる
    • 結局、大きなアプリだけがユーザーをスパイできるということなのか
      投稿者は中国人なので WeChat と Alipay を気にしているようだが、Facebook と Google はどうなのか気になる
  • すでにユーザーはこの権限を許可するよう促すプロンプトを受けているものだと思っていた
    最近のアプリでは「ローカルネットワーク」へのアクセスを許可するか尋ねられることがかなり多いが、ローカル Wi-Fi ホットスポットを見られる能力だと理解して、ほぼ常に拒否している
    この記事を読んで Spotify でもオフにした
    ただ、ほとんどのユーザーはこの情報から位置を推測できることを知らないので、権限ダイアログは改善される必要がある

    • 開発者の立場からすると、「ローカルネットワーク」権限が厄介な理由がある
      第一に、実装が雑。ほかの権限と違って、プロンプトを明示的に表示する方法がなく、Apple が適切だと判断したタイミングで突然表示される
      中核機能に必要な場合でも自然に案内する方法がなく、権限が付与されたか確認する方法もない
      第二に、より重要なのは、Apple 自身のアプリはこの警告を表示しないため、競争条件が不公平なこと
      AirPlay などはスムーズに動作するが、競合技術はそうはいかず、開発者は権限状態を知ることができないのでユーザー体験が悪くなる
      Apple が制限を導入するなら、自社アプリにも適用すべき。AirPlay と AirDrop はそれぞれ Bluetooth とローカルネットワークアクセスを尋ねるべきだし、Photos アプリは起動時に「写真を選択、すべて許可、拒否」のプロンプトを表示すべきで、Camera アプリも同じプロンプトなしに写真ライブラリへ書き込むべきではない
      そうすれば Apple も、こうした制限をめぐるユーザー体験をきちんと設計する動機が生まれ、分かりにくいダイアログの代わりに、より創造的な解決策を探すようになる
      現状では、うまく設計する動機がない。これらの API を扱ったことのある iOS 開発者なら、恣意的で予想外の制限のせいで設計がひどいことを知っている
    • その権限は、同じサブネット上のデバイスと通信したり Chromecast のような対象を見つけたりするなど、ローカルネットワークトラフィックの送受信用
      AirPlay にはこの権限は必要ない
    • LAN、場合によっては tailnet までスキャンして、Hue ブリッジ、Sonos スピーカー、Chromecast のようなサービスを探すという意味だと理解している
  • ドキュメント: https://developer.apple.com/documentation/technotes/tn3111-i...
    審査は小さなスパムアプリなら止めるだろうが、投稿者やほかの人たちが言っているように、大手プレイヤーは止められない気がする

    • ドキュメントを見ると、この API 呼び出しには権限が必要だということは確認できる
      ただし、その権限が存在する場合に、ユーザーが API の使用を拒否できるプロンプトが表示されるのかは、依然として明確ではない
  • どの人気アプリがこれを使っているのか確認する方法はあるだろうか
    ここにいる大半の人と同じく WeChat や Alipay はインストールしていないが、Instagram、Facebook、WhatsApp、Twitter、TikTok、Snapchat、Chrome、Firefox、Photoshop、Lightroom のようなアプリが気になる

    • 同じ話を繰り返しているようだが、App Store はアプリが要求する権限をインストール前に見られるようにすべき
      どんな動作を試みるのかを見るために、アプリをダウンロードしてインストールしなければならないのはおかしい
      App Store はすでにこの情報を知っているし、ダウンロード前のアプリ詳細に表示するのはとても簡単なはず
  • iOS/macOS がシステムアップデートのたびに Wi-Fi と Bluetooth の無線デバイスをオンにする問題についても話すべき
    マーケティングが聞かせてくる子守歌とは違って、まるで監視を最大化するためにわざと作られたデバイスのように見える

    • ハンロンの剃刀で見るなら、Apple は単に怠惰で、これらの設定をデフォルトでオンにしているだけなのかもしれない
      99% の人が使うか必要としているので、設定状態を追跡しない方を選んだように思えるし、Apple は Bluetooth キーボードとマウスも好んでいる
    • これは本当に腹が立つ
  • 気になってきた。ほかにどんなアプリがこの権限を持っているのだろう
    自分の携帯にインストールされているアプリのうち、どれがこの権限を持っているのか知る方法はあるだろうか

  • 完全にロックダウンされたプラットフォームの大きな問題の一つ
    プラットフォーム所有者がプライバシーを尊重し、他者による侵害を防いでくれるという保証は、結局のところ指切りげんまんにすぎない

    • その見方は間違っているかもしれない。Apple が完璧だと期待している人はいない
      コンピューティングプラットフォームのセキュリティはそもそも難しく、特にプライバシーは、技術的なアクセス制御の回避で定義される一般的なコンピューターセキュリティよりも、文化的にはるかに曖昧に定義されている
      核心は、Apple がエコシステムを統制するキュレーター役を担おうとしているかどうか
      過去に Uber が怪しいことをしたとき、それをやめさせるためにチキンレースをしたこともある
      もちろん Alipay と WeChat は、中国市場が Apple にとって非常に大きく現在の成功にも重要なので、より難しいかもしれない
      今後数年で Apple がここにどう適応するのか興味深い
      オープンなプラットフォームにもこうした問題はあり、もしかするとより深刻に指切りげんまんに依存している
      「この問題が解決されないなら、むしろオープンなプラットフォームの方がよい」という意味でないなら、主旨がよく分からない
      その論理の問題は、これは多くの問題のうち一つの失敗例にすぎず、後で解決される可能性がある一方で、オープンなプラットフォームにはこの問題に加えて、未解決の問題がもっと多くあるという点
  • このタイトルは誇張だという不満を聞いたので、より良く、より正確で中立的なタイトル案があれば変えてもよい

    • 「特別な権限を持つ iOS アプリは SSID スキャンでユーザーを追跡できる」が最もよく説明していると思う
      確信はないが、記事を読んだ後だと、現在のタイトルは事実としてはあまりしっくりこない
    • 現在のタイトルでも問題ないと思う
  • NEHotspotHelper の使用には、申請が必要な特別な権限 com.apple.developer.networking.HotspotHelper が必要で、Apple はアプリに正当な必要性がなければおそらく付与しないだろう
    ただしこれは、Apple のプライバシー保護戦略と、WeChat や Alipay のようなスーパーアプリとの非互換性を示しているように見える
    1社があらゆる機能を1つのアプリに詰め込むと、そのアプリは突然あらゆる権限を持つことになり、機密データがいつどのように使われるのか把握しにくくなる
    西側では通常、こういうやり方でアプリを作らない。たとえば Comcast は別の「WiFi Hotspots」アプリを持っている
    おかしなことに、2日前にその機能をメインの Xfinity アプリに統合すると投稿していたので、西側も追いつきつつあるのかもしれない

    • エンドユーザーが、どのアプリがこの権限を持っているのか確認する方法はあるのだろうか
    • Facebook もスーパーアプリだ。何年もの間、アプリ内に Wi-Fi ホットスポット検索機能があった
    • アプリを起動した途端に、カメラ、マイク、連絡先などへのアクセス要求が殺到するのが本当に嫌いだ
      すぐ拒否するし、その結果アプリの機能が壊れるならアプリも一緒に削除する
      Google Maps が精密な位置情報サービスをオンにしろとしつこく促し、友人の代わりにナビ中なのかと尋ねて連絡先へのアクセスを許可しろと言ってくるのも拒否だ
    • com.apple.developer.networking.HotspotHelper は iOS のどこで取り消せるのか
      設定 → プライバシーとセキュリティ → ローカルネットワークなのか、それとも別の項目なのか
    • 結局、どの会社が自分の位置データを取得してよいかを Apple が決めるということなのか。素晴らしいね
 
ndrgrd 2023-12-23

プライバシーをセールスポイントとして押し出す企業が、裏ではユーザーへの通知もなく位置情報を抜き取っているんですね。

 
joyfui 2023-12-22

以前はその機能が塞がれていて、地下鉄の乗降通知は不可能なのだと思っていましたが、すでに機能はあったんですね。では、なぜiPhoneだけはできないんだろう…