- React Nativeベースのホワイトハウス公式アプリは、WordPressバックエンドとExpo SDK 54、Hermesエンジンを使用し、ニュース・写真・政策などのコンテンツを提供するポータル型となっている
- すべてのWebViewにJavaScript注入コードが含まれており、Cookieバナー、GDPR同意画面、ペイウォール要素などを自動的に除去する
- OneSignal SDKによる位置追跡およびユーザープロファイリング機能が完全に組み込まれており、GPSデータを4.5分〜9.5分間隔で収集できる
- アプリはGitHub Pages、Elfsight、Mailchimp、Uploadcare、Truth Socialなどの外部商用サービスを読み込み、サプライチェーン上のリスクと追跡可能性を内包している
- SSLピンニング未適用、開発用リソースの同梱、外部コード実行の可能性などにより、政府公式アプリとしてはセキュリティ・プライバシー面での懸念が提起されている
アプリ概要
- ホワイトハウス公式アプリはApp StoreとGoogle Playで公開されているReact Nativeベースのアプリケーション
- Expo SDK 54とHermes JavaScriptエンジンを使用
- バックエンドはWordPressベースのカスタムREST API構造
- Expo設定によれば、制作主体は**
forty-five-press**と記載されている
- アプリロジックは5.5MBのHermesバイトコードバンドルにコンパイルされており、ネイティブコードは単純なラッパー形態
- バージョンは47.0.1、ビルド20、HermesおよびNew Architectureが有効な状態
Expo設定
- 2つのプラグイン**
withNoLocationとwithStripPermissions**が含まれている
- 位置情報の削除および権限ストリップ関連の機能と推定される
- OTAアップデートは無効化されており、Expoアップデート基盤は含まれているが動作しない
アプリの実際の機能
- Hermesバンドルの文字列分析の結果、アプリはwhitehouse.govのWordPress REST APIを通じてコンテンツを読み込む
- 主なエンドポイントは
/wp-json/whitehouse/v1/home、/news/articles、/wire、/live、/galleries、/issues、/priorities、/achievements、/affordability、/media-bias、/social/xなど
- アプリ内の文字列には
"THE TRUMP EFFECT"、"Greatest President Ever!"、"Text President Trump"、"Visit TrumpRx.gov"、"Visit TrumpAccounts.gov"などが含まれる
- また、
https://www.ice.gov/webform/ice-tip-formリンクが直接含まれている
- 全体としてニュース、ライブ配信、写真、政策、ソーシャルフィード、政権広報コンテンツを提供するポータル型となっている
Cookie・ペイウォール遮断スクリプト
- 外部リンクを開くWebViewでは、各ページ読み込み時にJavaScript注入コードが実行される
- このスクリプトはCookieバナー、GDPR同意画面、ログイン/会員登録の壁、アップセル・ペイウォール要素、CMPボックスなどを非表示にする
body { overflow: auto !important }を強制適用し、スクロールロックを解除
- MutationObserverによって新たに追加される同意画面も継続的に除去する
- 結果として、米国政府公式アプリがサードパーティWebサイトのCookie・GDPR・ペイウォール要素を除去するコードを注入する構造になっている
位置追跡インフラ
withNoLocationプラグインがあるにもかかわらず、OneSignal SDKの位置追跡コードが完全に含まれている
- 追跡が有効になる条件は3つ
_isSharedフラグがtrueに設定されること(setLocationShared(true)呼び出し時)
- ユーザーが実行時に位置情報権限を許可すること
- デバイスに位置情報プロバイダ(GMS/HMS)が存在すること
- 条件を満たすと4.5分(フォアグラウンド)、**9.5分(バックグラウンド)**間隔でGPSを要求
- 収集データ:緯度、経度、精度、タイムスタンプ、フォアグラウンド/バックグラウンド状態、位置精度
- データはOneSignalのPropertiesModelを通じてサーバーに同期される
- バックグラウンドサービスも含まれており、アプリ非アクティブ時でも位置取得が可能
- JSバンドル内で
setLocationSharedが呼ばれているかは確認できないが、パイプライン全体が有効化可能な状態でコンパイルされている
OneSignalユーザープロファイリング
- OneSignal SDKは単純なプッシュ通知にとどまらず、ユーザー行動追跡およびセグメンテーション機能を実行する
- 主な機能:
addTag、addSms、addAliases、addOutcomeWithValue、addUniqueOutcome、notificationClicked、inAppMessageClicked、permissionChanged、subscriptionChanged、userStateChanged、setPrivacyConsentRequired、setPrivacyConsentGivenなど
- ローカルDBは通知の受信・閲覧・無視の有無を記録する
- 結果として、位置情報、通知との相互作用、アプリ内メッセージのクリック、電話番号、タグ、状態変化などがOneSignalサーバーへ送信される
サプライチェーンリスク:外部コードの読み込み
-
GitHub Pages
react-native-youtube-iframeライブラリが**lonelycpp.github.io**からHTMLを読み込む
- このGitHubアカウントが侵害された場合、任意のJavaScriptがアプリのWebView内で実行可能になる
-
Elfsightウィジェット
- Elfsightの
platform.jsを通じてソーシャルフィードを埋め込む
- 商用SaaSコードがサンドボックス化されずに実行され、追跡の可能性がある
- ウィジェットID
4a00611b-befa-466e-bab2-6e824a0a98a9 がハードコードされている
-
その他の外部サービス
- Mailchimp:メール購読処理(
whitehouse.us10.list-manage.com)
- Uploadcare:画像ホスティング(
ucarecdn.com)
- Truth Social:トランプのプロフィールおよび「Follow」ボタンを含む
- Facebook:ページプラグインのiframeを読み込む
- これらはいずれも政府インフラではない外部商用サービス
セキュリティ設定
- SSL証明書ピンニングなし、標準のAndroid TrustManagerを使用
- 公衆Wi-Fiやプロキシ環境では、MITM攻撃時にトラフィックが露出する可能性がある
開発残留物
- 本番ビルドに開発用URLおよびリソースが含まれている
localhostおよび開発者IP(10.4.4.109)の文字列が存在
- **Expo開発クライアント(
expo-dev-client、expo-devlauncher、expo-devmenu)**が含まれる
dev_menu_fab_icon.pngリソースが存在
- **Compose
PreviewActivity**がmanifestにexport状態で含まれている
権限構造
- AndroidManifestには一般的な通知中心の権限に加え、**多数のランチャーバッジ権限(Samsung、HTC、Sonyなど)**が含まれる
- 実行時要求文字列として高精度位置情報、おおよその位置情報、バックグラウンド位置情報権限が存在
- Google Playの説明には次の権限も明記されている
- 「共有ストレージの変更/削除」「フォアグラウンドサービスの実行」「他のアプリの上に表示」「起動時に実行」「指紋・生体認証ハードウェアの使用」
- FileProvider設定は外部ストレージのルート全体を露出しており、WebViewのファイルアクセスに使用される
含まれるSDK一覧
- 合計68個以上のライブラリを含む
- フレームワーク:React Native、Expo SDK 54、Hermes
- プッシュ/エンゲージメント:OneSignal、Firebase Cloud Messaging、Firebase Installations
- 分析/テレメトリ:Firebase Analytics、Google Data Transport、OpenTelemetry
- ネットワーキング:OkHttp3、Apollo GraphQL、Okio
- 画像:Fresco、Glide、Coil 3、Uploadcare CDN
- 動画:ExoPlayer(Media3)、Expo Video
- ML:Google ML Kit Vision(バーコードスキャン)、Barhopperモデル
- 暗号化:Bouncy Castle
- ストレージ:Expo Secure Store、React Native Async Storage
- WebView:React Native WebView(注入スクリプトを含む)
- DI:Koin
- シリアライゼーション:GSON、Wire(Protocol Buffers)
- ライセンス検証:PairIP(Google Play確認用)
- arm64ビルドには25個のネイティブ
.soライブラリが含まれる
1件のコメント
Hacker Newsのコメント
記事の内容がAIが書いたように見えて、少し疑わしく感じた
興味本位でアプリを実際にインストールしてみたが、記事の主張とは違って位置情報の権限要求はまったくなかった
Claude CodeでAPKをデコンパイルしてみたが、このツールは到達可能性解析や複雑な制御フローの把握には弱い
呼び出されないデッドコードも実際に使われる関数のように扱ってしまい、誤解を招く
ランタイムで位置情報を要求するには必ず宣言が必要だが、その部分がない
自分のスマホでは(おそらくGrapheneのせいかもしれないが)Playがインストールをブロックしたので、APK自体は直接確認できなかった
Playストアの「情報 → 権限」を見ると、47.0.1版にはネットワークアクセス、バイブレーション制御、通知表示など一般的な権限しかない
おそらくバージョンのロールアウトか端末ごとのターゲティングの可能性がある
自分はそうは感じなかった
iPhone App Storeでは47.0.1版が34分前に公開されていて、「軽微なバグ修正」となっている
おそらくその修正に位置情報関連のコードが含まれていたのかもしれない
典型的なコンサル会社のマーケティングアプリのように見えた
外注開発者が標準的なアーキテクチャを使い、位置追跡コードのようなものがデフォルトで含まれていたようだ
これは単なるプッシュ通知用プラットフォームなので、アプリが直接権限を要求しない限り何も起きない
ホワイトハウス関連の支援契約(約150万ドル規模)を獲得して、こういうアプリを作ったようだ
今ではほぼ解体されてDOGEという組織に変わり、複数の訴訟にも巻き込まれている
United States Digital ServiceのWikipedia記事
そのため、ほかのアプリで再利用された痕跡が残っているようだ
.govドメインを商業的プロモーションに使ってよいのか疑問だ
もし記事の内容が事実なら、これは自由の象徴的な終焉を意味する出来事だろう
アメリカが誇ってきた価値が失われる感覚だ
政府の公式アプリがサードパーティーのWebサイトにCSSとJavaScriptを挿入してクッキーバナーやペイウォールを取り除くというのは驚きだ
自分は非公開の政府アプリはインストールしないが、機能自体はuBlockのようで肯定的に見える
サイトがあまりにも遅く、ほとんど使いものにならなかった
自分の2019年製MacBook Pro + Chrome環境ではスクロールがひどく引っかかった
皮肉にも、Web開発を批判する記事がこうしたWebパフォーマンスの問題を見せている
証明書pinningがないという批判は少し大げさに思える
MITM攻撃が可能なネットワークにいても、自分の端末がそのCAを信頼していなければTLSエラーになるだけだ
たとえば、監視が日常的な特定の国の大使館近くのカフェでトラフィックを傍受するようなケースは想像できる
こうしたことはまれだが、まったく不可能というわけではない
このサイトはブラウザがフリーズするほど重い
リーダーモードでようやく読めた
タブレットの問題かと思っていたが、他の人たちもそうだと知って興味深い
スクロール時のGPU負荷が高く、グラフィックリソース使用量が大きい
最近のホワイトハウスは法令違反が日常になっているようだ
最初からマルウェアだろうと仮定していたが、その予想は当たっていた