世界を動かす技術を、日本語で。

ホワイトハウスアプリのネットワークトラフィックを傍受しました

概要

  • White House iOSアプリの動的解析結果のまとめ
  • MITMプロキシを使い、実際の通信内容を詳細に記録
  • 主要な通信先はwhitehouse.gov以外に多数の外部サービス
  • プライバシーマニフェストと実際のデータ収集内容の乖離
  • ElfsightやOneSignal等によるユーザートラッキングの実態

White House iOSアプリ動的解析レポート

  • MITMプロキシ(mitmproxy) を用いて、iPhoneの全HTTPSトラフィックをMacで復号・記録
    • iPhoneにmitmproxy CA証明書をインストール
    • ホーム、ニュース、ライブ、ソーシャル、エクスプロアの全タブを通常利用
  • 全206リクエスト中、whitehouse.gov宛は48件(23%)
    • 残り158件(77%)は外部サービス宛
      • Elfsight、OneSignal、YouTube、Google、Facebook、Twitterなど
  • 主な外部通信先一覧と用途
    • www.whitehouse.gov :WordPress API
    • www.youtube.com / i.ytimg.com / img.youtube.com / yt3.ggpht.com :YouTube動画・サムネイル
    • phosphor.utils.elfsightcdn.com / static.elfsight.com / storage.elfsight.com :Elfsightウィジェット用スクリプト・静的ファイル
    • api.onesignal.com :OneSignalによるアナリティクス・ユーザープロファイリング
    • googleads.g.doubleclick.net / static.doubleclick.net :Google広告・トラッキング
    • scontent-lax7-1.xx.fbcdn.net / pbs.twimg.com :Facebook・Twitter画像CDN
  • OneSignalへの送信データ内容
    • 言語、タイムゾーン、国、IPアドレス
    • アプリ初回・最終利用時刻(UNIXタイムスタンプ)
    • デバイスモデル、OSバージョン、WiFi/セルラー判別、キャリア名、脱獄有無
    • アプリ利用回数・各セッションの利用時間(秒単位)
    • セッションごとに一意の永続IDでトラッキング
    • アプリ起動時にGETで既存プロファイル取得→PATCHで最新情報を逐次更新
    • IPアドレスの変更履歴も保持
  • Elfsightによるウィジェット読み込み・トラッキング
    • 13種類のElfsightドメインにアクセス
    • 各ウィジェットIDごとにcore.service.elfsight.comへ/p/boot/リクエスト
      • サーバー側で必要なJavaScriptファイル群をassets配列で返却
      • クライアント側で<script>要素として動的に挿入・実行
    • TikTok、Instagram、Facebook、YouTubeなど複数SNS連携ウィジェットを確認
    • Elfsightインフラによる10個以上のトラッキングCookie設定
      • elfsight_viewed_recently、CloudflareトラッキングCookie(_cfuvid, __cf_bm等)、セッションIDなど
  • YouTube埋め込みによるGoogle広告トラッキング
    • googleads.g.doubleclick.net、static.doubleclick.net等の広告配信・トラッキングスクリプトが自動読込
    • DoubleClick(Google広告プラットフォーム)によるユーザーエンゲージメント追跡
    • プライバシーマニフェストで未開示
  • プライバシーマニフェスト(NSPrivacyCollectedDataTypes: []、NSPrivacyTracking: false)
    • 「データ収集なし」とラベル記載
    • 実際はOneSignal、Elfsight、Google、Facebook、Twitter等に大量の個人情報・利用状況を送信
  • 解析手法
    • mitmproxy(mitmdump)で全HTTPS通信を復号・記録
    • iOSデバイスを同一WiFiネットワークに接続
    • 証明書:mitmproxy CAをiOSの信頼済み証明書として登録
    • 解析対象:全5タブを1回ずつ通常利用
    • 通信内容の改変・サーバープロービングは一切なし、純粋な観察のみ
    • 個人情報(IPアドレス、デバイスID等)は全てマスキング済み

プライバシーとセキュリティへの示唆

  • 「データ収集なし」表示と実態の大きな乖離
    • 実際には詳細なユーザー情報・利用履歴・ネットワーク情報が複数の外部サービスに送信
  • 外部サービス(特にOneSignal、Elfsight、Google広告)によるユーザートラッキング
    • 永続的なIDとIP履歴によるユーザー行動追跡
    • ウィジェット経由でのサードパーティスクリプト実行・Cookie設定
  • アプリ利用者のプライバシーリスク
    • 意図せぬトラッキングやプロファイリング
    • 利用者への十分な情報開示・同意取得の不備

まとめ・連絡先

  • 本解析はAtomic Computerによるサイバーセキュリティ調査の一環
  • モバイルアプリのセキュリティ評価やご相談は公式サイトより受付
  • ご質問やプロジェクト相談は「Contact us」または「Schedule a call」から

Hackerたちの意見

そうだね…ほとんどのB2Cアプリってそんな感じじゃない?インストールしてるいくつかのアプリのプライバシーレポートを見たけど、サードパーティのドメインがかなり多かったよ。77%ほどではないけど、50%は確実に超えてる(つまり、サードパーティのドメインの方がファーストパーティより多い)。一番驚いたのは、アプリストアの「収集データ」セクションに正しい情報を載せないことだね。追記:ストアのリストが更新されたみたいで、「収集データ」セクションは正しくなってた。

政府のアプリがB2Cみたいに作られてるのがまさに問題なんだよね。

そうそう、ホワイトハウスがデータを集めてHuaweiに送ってるし、全体の収集率は他のアプリよりもかなり悪いよ。それを読んでますます驚いた。ホワイトハウスが他のアプリより20%も悪いのに驚かないの?

ホワイトハウスのサードパーティのテレメトリーにも、他のアプリにも反対するのは全然構わないよ。マルチタスクできるからね。

以前の議論もあったよ。これも読む価値があると思う。 https://news.ycombinator.com/item?id=47555556 https://news.ycombinator.com/item?id=47577761

使ってるSDKもチェックしてみてね: https://appgoblin.info/apps/gov.whitehouse.app/sdks

次は広告が来るよ。

Macにmitmproxyをインストールして、iPhoneを経由させるように設定し、デバイスにmitmproxyのCA証明書をインストールした。 > すべてのHTTPSトラフィックが復号化されてログに記録された。トラフィックに変更は加えられなかった。アプリは普通のユーザーが使うように使われた。iPhoneでネットワークトラフィックを検査するのがそんなに簡単なの?つまり、ユーザーがインストールした証明書を信頼させるのが?Androidでネットワーク検査を結構やってるけど、証明書ピンニングを使ってないアプリでも面倒だよ。それでも、自分のデバイスをコントロールすることの重要性が浮き彫りになるね。どこにデータが送られているのか、何のデータが送られているのかを知る権利があるから。COVIDの時にZoomが中国にトラフィックを送っていることが発覚したのを思い出すよ。最近では、Facebookがプライベートなモバイルブラウジングの活動を追跡して、FBアプリを通じてサーバーに送信していたケースもあった。アプリのネットワーク検査を設定するのが難しいせいで、どれだけ怪しいトラフィックが見逃されているか想像してみて。

CAのインストールにはいくつかの手間がかかるけど、はい、証明書ピンニングを使っていないアプリのトラフィックを傍受するのはiOSではそんなに難しくないよ。証明書ピンニングを使っているアプリは全く別の話で、銀行アプリみたいなものを調べようとして何度も失敗したことがある。最低でもルート化されたデバイスが必要だね。

確かに、iOSでmitmproxyを設定するのはAndroidよりもずっと簡単だよ。でも、証明書ピンニングのあるアプリに遭遇すると、独自のアプリをインストールできるオープンなプラットフォームにいる方が対処しやすいかもね。

それにしても、自分たちのデバイスをコントロールすることの重要性が強調されてるよね。ネットワークトラフィックを簡単にチェックできる能力も含めて。私たちには、自分のデータがどこに送られているのか、何が送られているのかを知る権利があるんだから。一方で、MITMプロキシについて文句を言ってる「セキュリティ」界隈の中に、企業に洗脳されたような騒がしい連中がいるのが面白いなって思う。

COVIDの時に、Zoomが中国にトラフィックを送っていることが発覚したのを思い出す。そうだったね。危機会議を開いている(下位の)政府が、その映像や音声を中国に送っているなんて想像してみてよ。あれが全部録画されている可能性はどれくらいあるんだろう。ディープフェイクのための素晴らしいトレーニングデータだね。

iPhoneでネットワークトラフィックをチェックするのって、本当にそんなに簡単なの?ユーザーがインストールした証明書を信頼させるのは?iOSはデフォルトでユーザーがインストールした証明書を信頼するけど、Androidはオプトインモデルだからね。ただし、これはOSのTLSスタックを使っているアプリに限る。オープンSSLをパッケージしているアプリは、自分たちの証明書認証局を使うことがあるし、大きなアプリのほとんどは、ほとんどのドメインで証明書ピンニングを使ってる。TwitterやFacebookのアプリは、ピンニングのせいで動かない可能性が高いね。このアプリみたいな、簡単で手抜きなウェブページになりかねないアプリは、そんなことを気にしないことが多いし、多くのトラッキングライブラリも同様だよ。もちろん、悪意のあるアプリは、誰かが改変された証明書を使っているのを検出して、MITMが終わるまでトラフィックを送らないこともある。

OneSignalには位置情報追跡が含まれてるの?この説明には他の位置情報サービスについての言及がないけど。

ほとんどのアドウェア、例えばdoubleclick.netはDNSレベルでフィルタリングしてるよ。どうせそのアプリは使わないけどね…普通のウェブサイトがどれだけ多くのサードパーティ接続を開くか、驚くべきことだよ。特にニュースサイトではね。面白いことに、atomic.computerもCloudflareinsightsやいくつかのGoogleフォントを読み込もうとしてるけど、どちらも私のネットワークでは拒否されてる。これこそがGoogleが人々をインターネット上で追跡するのを簡単にするリクエストなんだよね。ほとんどのウェブマスターはこれに加担してる。

158件のサードパーティリクエストのうち43%が…Googleだね。YouTube、フォント、アナリティクスも含めると55%。政府のアプリがこんなに多くのアナリティクスや追跡を持つべきじゃないと思うけど、Googleフォントを読み込んだりYouTube動画を埋め込んだりするのは、全体的に見ればそんなにおかしなことじゃないと思う。タイトルを見て、パランティアやICEのドメインが入ったひどいリストを期待してたから、ちょっと拍子抜けした。アプリは好きじゃないけど、GoogleやFacebookはちょっとつまらないな。リクエストの性質や深刻さに焦点を当てるべきだと思う。すべてのリクエストの%でタイトルをつけるのは、GoogleやFacebook、Twitterが独自のカテゴリーに入ってないなら、釣りっぽい感じがする。彼らは本当に数字を膨らませるような、いろんなドメインへの小さなリクエストを持ってるからね。(ちなみに、atomic.computerもアナリティクスやGoogleフォントを読み込んでるよ。まあ、どうでもいいけど。もし彼らがサードパーティのリクエストを本質的に悪いものとして暗示するつもりなら、自分たちの家も少し片付けた方がいいかもね。)編集:私のコメント時の元のタイトルは「ホワイトハウスアプリのトラフィックを傍受しました。リクエストの77%がサードパーティに送信されています」だった。

自分に都合がいいと、何でも許す人がいるよね。

タイトルを見て、パランティアやICEのドメインが載ったひどいリストを期待してたんだけど。アプリは好きじゃないけど、GoogleやFacebookはつまらないね。今の政府は、アメリカを独裁国家の方向に舵を切ろうとしてるのが、彼らの行動から見て取れる。でも、それは大きな船だから、どんなに頑張っても時間がかかるよね(幸運にも)。

タイトルを見て、パランティアやICEのドメインが載ったひどいリストを期待してたんだけど。アプリは好きじゃないけど、GoogleやFacebookはつまらないね。ICEやパランティアは、GoogleやFacebookからデータを買うことが禁止されてるの?これは、自分が追跡したいものを決めて、誰にもデータを取られるのを止められないアプリを持つ賢い方法に聞こえるね。そして、普通のトラッキングプロバイダーを通してそれを洗浄することもできるし。

誤解しないでほしいけど、政府には高いレベルの監視が必要だよね。でも、これが業界標準と比べてどうなのかは興味あるな。77%は、これまで見てきたトラッカーや広告コードを考えると、そんなに驚くべき数字じゃないと思う。多くの人がインストールして、あまり気にしないアプリと同じような感じだと思うよ。

政府のアプリは、消費者向けのB2Cアプリよりも絶対に高い基準で評価されるべきだよ。Googleフォントを読み込むのは一つの話だけど、公式の政府アプリからOneSignalやFacebookにテレメトリを送るのは全く別の話だよね。オーストラリアでは、政府データを扱うアプリはPSPF(保護セキュリティポリシーフレームワーク)やISMに従わなきゃいけなくて、信頼できないサードパーティへのデータフローを明示的に制限してる。政府アプリがリクエストの77%を外部にルーティングしてたら、初日でIRAP評価に失敗するだろうね。解決策は簡単で、フォントを自己ホストして、ファーストパーティのアナリティクスを使って、すべての外部リクエストをデータ流出のベクトルとして扱うことだよ。政府のデジタルチームはこれをやる方法を知ってるはずなんだけど、実際にデプロイ後のネットワークの挙動をレビューしている人がいるかどうかが問題だね。

政府のアプリは消費者向けのB2Cアプリよりも絶対に高い基準で評価されるべきだよね。正直なところ、なんで?このトラフィックにはなぜ厳しい監視が必要なの?単にブランドの問題に思えるんだけど。