アプリ内広告による位置追跡:誰もが私の位置を知り得る
(timsh.org)- Gravy Analyticsの流出リストでインストール中のiPhoneアプリを3つ確認した後、無料ゲーム Stack の広告トラフィックを直接キャプチャし、位置情報とIPが外部へ流れる経路を追跡した
- 位置情報サービスとアプリトラッキングをオフにしても、Unity Adsのリクエストには 緯度・経度、IP、タイムスタンプ、通信事業者、IDFV、同意値などが含まれる
- Facebook、adjust.com、Unityの設定リクエストも、IP・タイムスタンプや画面輝度、バッテリー、メモリのような デバイスシグナル を受け取っており、広告識別子がなくてもユーザーを絞り込める
- IDFAはトラッキング拒否時には空になったが、同じ開発元のアプリ間では IDFV が維持され、IP・位置情報・ユーザーエージェント・複数の識別子が広告エコシステムへ流れ続ける
- 広告入札データ、MAID位置データ、
MAID <> PIIデータセットが結合されると、個人の移動履歴が名前・電話番号・住所と結び付けられる可能性がある
流出リストから始まった直接追跡実験
- Gravy Analyticsの大規模な位置データ流出には、App StoreとGoogle Playの 2,000以上のアプリ がユーザーの同意なしに位置データを収集していたという内容が含まれていた
- 公開リストからiPhoneにインストールされているアプリを少なくとも3つ見つけ、自分の位置データを外部で購入できるのかを確認する実験につながった
- 実験環境は次のとおり
- 工場出荷時状態に初期化した iPhone 11 と新しいApple ID
- Charles Proxyで送受信トラフィックを記録
- iPhoneにSSL証明書をインストールしてHTTPSトラフィックを復号
- KetchAppのシンプルなゲーム Stack
- Stackを起動すると最初の1分間にリクエストが殺到し、ほぼ毎瞬間、複数のリクエストが送信された
Unity Adsリクエストに位置情報とIPが載る
https://o.isx.unity3d.comに送信されたUnity Adsリクエストには、位置情報サービスがオフの状態でも 位置データ が含まれていた- リクエスト本文には200個以上のキーがあり、例の値は次のとおり
- タイムスタンプ
2025-01-18T23:27:39Z - 国コード
ES - 広告が表示されるドメインと思われる
sports.bwin.es - バナーネットワークと思われる
molocoads-eu-banner - IPアドレス
cip - デバイスモデル
iPhone12,1 - 接続タイプ Wi-Fi
- 通信事業者
Yoigo ifv、つまり IDFV- 緯度・経度
- サーバーIP
- ユーザートラッキング同意値として表示された
uc: 1
- タイムスタンプ
- この流れはStack → Unity → Moloco Ads → Bwin広告へと続き、実際のゲーム内にもBwinの広告が表示された
- 位置は非常に精密というわけではなかったが同じ郵便番号エリア内であり、当時iPhoneはWi-Fiに接続され、SIMは入っていなかった
FacebookとUnityの設定リクエストもデバイスシグナルを受け取る
- Metaアプリがインストールされておらず、FacebookアカウントとアプリまたはApple IDを連携していないにもかかわらず、Facebook関連リクエストには IPとタイムスタンプ が含まれていた
- そのリクエストの
bidder_token_infoとbt_extrasの中にIPとタイムスタンプが入っており、ほかにも多くのデータが一緒に送信されていた - Unityの
https://configv2.unityads.unity3d.com設定リクエストには、位置や名前のような直接的な個人情報はなかったが、さまざまな デバイス状態 が含まれていた- OSバージョン、接続タイプ、イベントタイムスタンプ
vendorIdentifier- 有線ヘッドセットの有無
- 音量
- CPU数
- システム起動時刻
- バッテリー状態
- 画面輝度
- 利用可能メモリと総メモリ
- タイムゾーン
- ストレージ容量
- ネットワーク事業者
advertisingTrackingId
- adjust.comもIPとタイムスタンプを受け取った「provider」の1つだったが、リクエスト本文は別途分析していない
IDFA拒否で防げるのは一部の識別子だけ
ifvまたはIDFVは ID for Vendor で、開発元ごとに固有の識別子である- 別のKetchAppゲームをインストールしてリクエストを確認したところ、
ifvの値はStackと同じだった advertisingTrackingId、つまり IDFA は、アプリ間トラッキングを許可したときにアプリへ共有される、開発元をまたぐ識別子である- Stackアプリでトラッキングの許可と拒否を切り替えて比較すると、トラッキング拒否状態ではIDFAが
000000-0000...に設定された - トラッキング許可の有無が変えたのはIDFA共有であり、IP・位置情報・タイムスタンプのようなデータは送信され続けた
- 同じ開発元のアプリを10個使い、そのうち1つのアプリでトラッキングを許可すると、その開発元のアプリ群で集まったデータがIDFAで補強され得る
- リクエストには
tid、sid、device_id、uidなど複数の識別子があり、device_idとuidはFacebookにも共有された
広告入札データが移動する経路
- 位置情報が流出したリクエストの経路は、Stack →
o.isx.unity3d.com→ Moloco Ads → Bwin広告主へと続く - Unity AdsはアプリSDKを通じてデータを収集する SSP の役割を果たす
- アプリ開発者はSDKをインストールし、広告収益を受け取れる
- 別途、広告取引所への登録やデータ収集ロジックを自分で作る必要はない
- Moloco は、Unity、Applovin、Chartboostのような複数のSSPからデータを受け取り、広告主と接続する DSP ネットワークとして紹介されている
- 広告パートナーになる企業は入札プロセスでデータにアクセスでき、通常の広告取引所入札を行いながらデータも一緒に収集する構造も可能である
- Redditの adops投稿 と コメント は、bidstream提供者であるSSPと統合すれば入札データにアクセスでき、SSPがベンダー検証責任を負うと説明している
データブローカーとMAID位置データ
- データが流出する経路を確認した後、販売先を探す過程で Datarade を見つけた
- MAID関連データを検索すると数百の選択肢が出てきて、Redmobのデータセット価格は年 $120,000 と表示された
- RedmobのサンプルはWebサイトのリクエストでは受け取れなかったが、Databricks Marketplace で公開されていた
- Redmobのサンプル説明では、世界中の 15億台以上のデバイス をカバーする位置データを提供し、MENA・Africa・APACのような地域別データも提供できるとしている
- “low latency”は、アプリが最後に位置情報を共有した時点の位置を知ることができるという意味で、その時刻が5秒前である可能性もある
- サンプルデータには
appカラムがあり、データの出所がアプリであることが分かる yodカラムは出生年の可能性があるが、実際の意味や出所は確認されていない
MAIDと個人識別情報の結合
- 位置移動履歴だけで個人を追跡するには、MAIDまたは
ifaを名前、住所、電話番号のような実際の個人情報と結び付けられる必要がある - Dataradeには
MAID <> PIIタイプのデータセットも存在する - AGR Marketing Solutions のサンプルテーブルは Google Docs で提供されており、フルネーム、メール、電話番号、物理住所、不動産所有情報、IDFAが含まれる
- この構造では、MAID位置データと
MAID <> PIIデータを結合して、移動履歴と個人情報を結び付けられる
特定個人の移動履歴が見つかる仕組み
- 無料アプリを使って移動すると、位置データはより価値のあるデータになる
- アプリトラッキングを許可しても拒否しても、IP、位置情報、ユーザーエージェント、地理情報の組み合わせは複数の第三者に流出し得る
- 偽のDSPやデータブローカーが数秒以内にデータを受け取れる
- 購入した
MAID <> PIIデータを通じて、名前や電話番号をIDFA、IPアドレス、ユーザーエージェントと結び付けられる - その後、位置履歴で構成された Mobility data から前段階の値でフィルタリングすると、特定個人の移動履歴を見つけられる
- 全体の流れをまとめた flowchart は、アプリ、広告ネットワーク、ブローカー、個人情報データセットのつながりを示している
- 各取引単位は合法、または合法のように見える可能性があるが、結合された全体構造は個人の位置追跡を可能にする
1件のコメント
Hacker Newsのコメント
大きなプライバシー問題は、何をしても連絡先情報が売られることを防ぐまともな方法がないこと。
いとこがTikTokを開いて「連絡先をすべて共有します」を押した瞬間、自分の名前、電話番号、メールアドレスも全部混ざってしまう。
実際にそういうデータを買うこともある。カスタマーサポートで行き詰まったら、マーケットプレイスで幹部を探して小銭を払って連絡先を買い、携帯に電話する。だいたい効くが、大きく裏目に出ることもある。CashAppはこれが原因で私のアカウントを解約した。
権限を持つ人たちに現在の構造を考え直させる、ほぼ唯一の方法かもしれない。Red Reddingtonにメールアドレスがないと言ったとき人々は笑っていたが、こういう状況を見ると理解できる。
https://mobiledevmemo.com/wp-content/uploads/2024/09/image.p...
インターフェースも、人々が何気なく「すべて許可」を押すのではなく、一部の連絡先だけを許可するよう促す方向に設計されているようだ。
より大きな問題は、オンライン小売業者に渡す連絡先情報だ。アプリ経由の連絡先収集は目立つのでメディアや消費者の反発を受けるが、オンライン注文では名前、住所、電話番号、メールアドレスを正確に入力する必要があり、配送・決済の目的上、本物である可能性も高い。こうしたデータは「TikTokが連絡先へのアクセスを求めています」のようなモーダルなしに、裏でデータブローカーへ静かに渡され得る。
最終的には二度としないよう警告し、2回目の違反時にはより強い措置を取った。いくつかの件では企業の法務チームがすぐに介入し、暗黙の脅しで望むものを得ようとした人たちのために捜査機関の話まで出た。
だから、企業がこういう形で接触してくる顧客を素早くロックする理由は理解できる。
こういうレベルの詳細な調査はありがたい。プライバシー関連の記事は技術的な深みが足りなかったり、プライバシー上の懸念とリスクの程度を区別できずに誇張されたりすることが多い。
Mozillaの自動車プライバシーポリシー調査はよく言及されるが、あれは自動車メーカーの弁護士たちがプライバシーポリシーに入れるべきだと判断した内容を整理したものに近い。ポリシー上は車内の会話が録音され得ることを示唆しており、実際にそうである可能性も高いが、技術的な詳細には踏み込んでいない。
たとえば、自動車メーカーが運転中ずっと全音声を録音して送信しているのか、無作為サンプルだけを録音しているのか、音声コマンド時だけ録音し、その過程で偶然入り得るデータについて弁護士が広めに防御したのか、保存場所や保存期間はどうか、第三者に渡るのか、どのシステムをオフにでき、オフにすると機能・保証・保険料に影響するのか、といった疑問が残る。
こうした疑問はメーカーごとにほぼ際限なく変わり得る。多くのプライバシーニュースは怖いが根拠の弱い最悪のシナリオにとどまっており、詳細と改善手段がなければ冷笑を広げるだけになる。
私の知るある完成車メーカーにもそうしたポリシーがあった。私たちの組織が特定地域内の統計的ベースラインが必要だと判断すると、適切な人たちに数本電話が入り、ほどなくして、その期間にその地域を走ったそのブランドの車両全体の高精度な移動軌跡マップを、やや匿名化された形で受け取った。
保険会社は実際の理由でも架空の理由でもさまざまな理由で自動車保険料を上げるが、車両に録音装置がないという理由だけで保険料が急騰することはない。
一部の保険会社は、保険加入者の運転パターンへのアクセス権を得るとリスクが低いと推定して安くする場合がある。ただし、それは別の問いだ。
かなり興味深い追跡フローがたくさんあります。家賃をBiltという会社経由で払っているのですが、Walgreensで買い物をすると、Biltが私の購入品目すべてを載せたレシートをメールで送ってくることに気づきました。
例では「Walgreensで買い物をし、Neighborhood Pharmacy特典でBilt Pointsを獲得した」として、TOSTITOSのような品目、価格、ポイント、対象外品目まで表示されます。
表向きにはPlan Bやコンドームのようなセンシティブな品目は除外されることを期待したいですが、このデータがWalgreensから私の家賃支払い会社へどう流れているのか気になります。いっそ知らないまま、現金や保証小切手を使ったほうがいいのかもしれません。
数か月前の短いコメントスレッドもあります: https://news.ycombinator.com/item?id=41213632
https://support.biltrewards.com/hc/en-us/articles/2901187842...
下のほうのFSA/HSA特典セクションには、Biltが品目単位のデータを受け取ることが明記されています。
https://www.biltrewards.com/terms/walgreens
Biltのプロフィールには、ほかのクレジットカードとの連携状況を示すセクションがあるのですが、そもそもカードが一覧に出てくること自体かなり不気味です。
私は確実にオフにしました。Biltは結局、大きなポイント・リワードプログラムなので、連携しておけばポイントをもらえる可能性はあります。
Biltの事業計画はまだ正確には分かりませんが、核心は人々の金融データをできるだけ多く集めることで、そのために大家たちと提携しているように見えます。家賃の支払い手段なので完全に退会するのも難しく、紙の小切手を大家に郵送しなければならないかもしれません。
これまで使ったどんなソフトウェアよりも侵害的で、これが合法なのかも分かりません。しかし、実質的なプライバシー権がない米国では可能なことです。
ユーザーにこのレベルのアクセスを選択させる代わりに、アカウント作成時に自動登録し、データを引き出した後で、あとから「オプトアウト」できるようにしています。そうすると、いずれにせよすでに個人的でセンシティブな金融データへアクセスできていることになります。建物がBiltで家賃を受け取る場合、アカウントは事実上必須なので、何百万人もの人が知らないうちにデータを渡すような仕組みになっています。
Biltのプライバシー設定には、Instant Linkを含めてオフにできるオプションがあり、すべてオフにすることをおすすめします。ただ、この会社の暗い慣行を見ると、その設定が実際に守られているのかも信じがたいです。
Method Financialという会社が、何らかの形で個人的でセンシティブな金融データ全体へのリアルタイムアクセス権を持っていることを知っていましたか?聞いたこともないこの会社が、そのアクセス権を最高額入札者に売っていることを知っていましたか?どこかでそれに同意した記憶がありますか?私も全部ありません。
[0]: https://www.biltrewards.com
[1]: https://methodfi.com
「なぜ画面の明るさ、メモリ容量、現在の音量、ヘッドホン装着の有無を知る必要があるのか」については、これは広告入札の精度を高めるというより、アプリ間でユーザーを非匿名化するためのエントロピーを追加しているように見えます。
広告SDKの新バージョンが普及するには時間がかかります。通常、新バージョンのリリース後、そのバージョン以上から広告トラフィックの50%が出るようになるまで約6か月かかると見ています。また、どんなバージョンを出しても、トラフィックの約1%はそのバージョン以降へ永遠にアップグレードされません。
こういう世界では、特に誰にも見つからないと思っているなら、データを過剰収集することがビジネス上合理的になります。総ディスク容量・空きディスク容量のようなものも、今すぐ必要には見えませんが、広告主が「10GBのゲームを1日100万ドル分広告したいが、インストール可能な端末にだけ出したい」と言い出すと、端末のディスクが8GBしかない、あるいは空きが100MBしかないという情報が突然有用になります。
ディスク容量を収集していなければ、今からSDKに追加しなければなりません。新SDKのリリースまで1〜2か月、意味のあるトラフィックまで3か月、50%までさらに3か月かかります。線形増加だと仮定すると、7か月で2,250万ドルを稼ぐことになりますが、最初からロジックがあれば同じ期間で2億1,000万ドルを稼げていたはずです。事業担当者にとっては簡単な選択です。
解決策はありますが、どれも欠点があります。広告会社が収集できるデータを制限すると、広告の価値は下がります。企業は位置情報のように価値が低くリスクの大きいデータを削除しつつもあります。アプリとは独立して広告コードを更新できるモデルをサポートするほうがよいと思いますが、Appleが近いうちにそうする兆しはなく、Googleの答えはあまりにひどいので、今後4年間で実現可能だとは思いません。
付け加えると、画面の明るさはユーザーの年齢を非常に大まかに推定する代理変数です。
「LTEなら緯度・経度がはるかに正確だったはず」は誤り。アプリは位置情報権限がなければセルID情報にアクセスできず、権限があるなら単に位置情報を直接リクエストすればよい
「無料アプリが正確な位置情報とタイムスタンプを収集する」という表現も警告主義的で、前後が合っていない。筆者が数段落前で「共有された位置情報はそれほど正確ではなかった」と認めているからだ
アプリが位置情報サービスを通じて正確な位置を要求する可能性はあるが、そのアプリはそうした権限を要求していない。Androidでは確認でき、iOSではインストール・実行前に要求権限を確認するのは難しいが、この種のアプリはほぼ確実に「それほど正確ではない」位置情報に限定される
理論上、広告取引所はIDFAなしでアプリ横断トラッキングを可能にする迂回IDを作ってはならない。だが強制は難しい
「ユーザーがAdvertising Identifierをリセットした場合、あなたは以前のAdvertising Identifierおよび派生情報を、リセット後のAdvertising Identifierと直接または間接に結合・相関・接続・関連付けてはならない」
https://developer.apple.com/support/terms/apple-developer-pr...
プライバシー法制がより優れた国で、送信されるデータが変わるのか比較してみるとよさそう
「トラッキングしないよう要求」したためAdvertising Tracking IDが000000-0000に設定され、Stackアプリのトラッキングオプションをオフ・オンしながらリクエストを比較したところ、唯一の違いがそれだったことが明らかになった
Appleの「Ask App not to track」という妙な表現には疑わしい余地が残ると思っていた。アプリはIDではトラッキングしないかもしれないが、送信される他のデータが多ければ簡単にユーザーフィンガープリントを作れる。一意のIDがなくても、99%の場合にユーザーを識別するのに十分なデータが提供され得る
修正版Dead Privacy Theory: Dead Internet Theoryは、インターネット上の活動の大半がボットだとするもの [0]。Dead Privacy Theoryは、ほぼすべてのプライベートデータは実際にはプライベートではなく、データベースへのアクセス権を持つデータサイエンティスト、ソフトウェアエンジニア、アナリスト、データベース管理者、第三者がその気になればアクセスできる、というもの
[0] https://en.wikipedia.org/wiki/Dead_Internet_theory
詳細は https://developer.apple.com/app-store/user-privacy-and-data-... にある
画面の明るさ、起動時間、メモリ、通信事業者だけでも、どんなデバイスでもほぼフィンガープリントで識別できそうだ
Hacker Newsを読んでいると興味深い。広告と個人情報の販売・追跡産業を可能にし、そこから利益を得るソフトウェアを作っているITの人々が、同時にそれを最も強く批判している。信じがたい
ほとんどの人はそういうことをする場所で働きたいとは思わないだろうが、私たちも食べていかなければならない。そしてその判断にほとんど影響力はない
最近、会社で新しいIoT製品の発表を聞き、なぜMatterのようなオープン標準プロトコルをサポートしないのかとすぐに質問した。マーケティングチームが顧客にアプリを見せて「指標」とアップセルを得たいので絶対にだめだ、という答えを聞いた。私は「分かったが、自分はこのゴミを絶対に使わない」と言い、ただ無視された。こういう人間は少なすぎて気にされない。社内での人気も落ちるし、リスクばかり大きく、何の役にも立たない。「戦わずに加わって内部から変えろ」という考えは誤りだ
他の工学分野の多くには公開された規則や標準、業界資格制度があり、倫理もその中に組み込まれている。倫理違反で資格を失えば、多くの場合キャリアそのものが終わり得る
かなり前から、責任追跡サーバーを作るというアイデアを持っていました。大まかな考えは、固有の認証情報を作って、誰が自分の情報を売ったのかを出所まで追跡することです。
今でもいくつか方法はありますが、改めて探求する時期だと思います。自宅に置いたサーバーで動くVPN/プロキシ+アプリとして提供し、自分のデータを直接収集し、アカウント作成時に固有の認証情報を入れるようにすれば、かなり多くのことが分かるかもしれません。
中間者のように動作できるので、認証情報の出所をコメントとして残し、広告を観察して出所まで追跡することもできるでしょう。「この男性機能向上剤の広告は、あなたのタイヤ購入と結びついています」といった具合です。
まだ手書きでざっくり描いたアイデアが多いですが、こういうものを作れるのか気になります。こうした行為を止める第一歩は、誰がやったのかを人々に見せることです。
https://developers.google.com/authorized-buyers/rtb/openrtb-...
MAID/IDfV がどのように PII-ID データベースに入るのかが気になります。
その部分が完全に抜けているように思います。私が見落としているのかもしれません。
たとえば航空会社や通信会社、電力会社のようなところは、アプリを使うときにそれを売ることができるのでしょうか?