白宫官方 App 逆向拆解:付费墙绕过、休眠定位追踪与供应链风险

3 月 28 日,安全研究人员 Thereallo 发布了一篇对白宫官方 Android 应用的逆向分析。这篇 14 分钟的长文揭示的问题不少:付费墙绕过、休眠的 GPS 定位追踪管线、从个人 GitHub Pages 加载代码、零证书固定,以及正式版中残留的开发环境痕迹。
付费墙与隐私协议绕过
应用内置了一个 WebView 浏览器,用于打开外部链接。每次页面加载时,它会自动注入一段 JavaScript,目标是:
- 隐藏 Cookie 弹窗
- 隐藏 GDPR 同意对话框和 OneTrust 弹出层
- 隐藏登录墙和注册墙
- 隐藏付费墙元素
- 隐藏 CMP(Consent Management Platform)组件
脚本还会强制设置 body { overflow: auto !important } 来解除被同意对话框锁定的页面滚动,并使用 MutationObserver 持续移除动态添加的同意组件。
一个政府官方应用,在系统性地绕过第三方网站的隐私合规和订阅机制。这不是 bug,是编译进正式版的功能。
休眠的定位追踪
这一点更值得注意。
应用集成了 OneSignal SDK,其原生定位追踪代码已完整编译进 APK。前台采集间隔 4.5 分钟,后台 9.5 分钟,采集数据包括经纬度、精度、时间戳、前后台状态以及定位方式(GPS 或网络),全部写入 OneSignal 的 PropertiesModel 并同步到其服务器。
目前有三个"门控"条件:
_isShared标志默认为 false,需要 JS 层调用setLocationShared(true)手动开启- 用户需要授予 Android 运行时位置权限
- 设备需要有定位服务(GMS 或 HMS)
三个条件都满足后,完整的追踪管线才会启动。应用在 Google Play 的页面确实提到会请求"精确位置"和"近似位置"的权限。
关键在于:整个基础设施——权限字符串、间隔常量、融合定位请求、采集逻辑、后台调度、同步到 OneSignal 的完整管线——全部编译在正式版里。代码层面可以确认 setLocationShared 和 isLocationShared 在 JS bundle 中被引用,但具体是否在当前版本中调用了 setLocationShared(true),由于 Hermes 字节码编译后无法直接确认调用点。
Expo 配置中有一个叫 withNoLocation 的插件,看起来是设计用来剥离位置相关代码的。但实际效果:位置追踪的原生代码一页都没被删。
供应链风险
应用使用 react-native-youtube-iframe 库嵌入 YouTube 视频,该库从一个个人 GitHub Pages 站点加载播放器 HTML:
https://lonelycpp.github.io/react-native-youtube-iframe/iframe.html
如果 lonelycpp 这个 GitHub 账户被入侵,攻击者可以在该页面投放任意 HTML 和 JavaScript,在白宫应用的 WebView 上下文中执行。
此外,应用还通过 Elfsight 加载第三方 JavaScript 用于社交媒体嵌入,没有沙箱隔离。Elfsight 的代码随时可能变更。
其他第三方依赖包括 Mailchimp(邮箱收集)、Uploadcare(图片 CDN)、Truth Social 嵌入和 Facebook 页面插件。没有一个运行在美国政府的基础设施上。
开发痕迹残留
正式版中残留了以下开发环境内容:
- Metro bundler 开发服务器 localhost URL
- 开发者内网 IP
10.4.4.109,写在字符串资源文件中 - Expo 开发客户端(expo-dev-client、expo-devlauncher、expo-devmenu)全部编译进正式版
- Compose PreviewActivity 在 Manifest 中被导出——这是仅用于开发预览的组件
dev_menu_fab_icon.png存在于 drawable 资源中
应用也没有证书固定(certificate pinning),使用标准 Android TrustManager 处理 SSL,在存在中间人攻击风险的网络环境下(企业代理、公共 Wi-Fi),应用与服务端之间的流量可以被截获。
68 个依赖库
该应用编译了超过 68 个第三方库,包括 React Native、Expo SDK 54、Hermes 引擎、OneSignal、Firebase 全家桶(Analytics、Cloud Messaging、Installations)、OkHttp、Apollo GraphQL、Fresco、Glide、Coil、ExoPlayer、Google ML Kit、Bouncy Castle 等。
一个政府官方应用,用了 68 个第三方库,其中不少涉及用户数据采集和远程代码加载。
技术架构
应用基于 React Native + Expo SDK 54 构建,运行在 Hermes JavaScript 引擎上,后端是带自定义 REST API 的 WordPress。开发实体是一个叫做 "forty-five-press" 的组织。
应用功能本质是一个内容门户:白宫新闻、直播、图片库、政策页面、社交媒体嵌入,以及本届政府的宣传材料。
这是否违法?大概不算。但这是你对一个政府官方应用的期待吗?大概也不是。
来源: https://thereallo.dev/blog/decompiling-the-white-house-app
- Firefox 149 内置免费 VPN:50GB 月流量,首批限四国3/19/2026
- 装个App等24小时:Google给Android侧载上了把锁3/20/2026
- 苹果警告:iOS 13/14 用户需立即升级至 iOS 153/20/2026
- Google公布Android侧载新规:安装未验证应用须等24小时3/20/2026
- DarkSword 被披露:Safari 打开恶意网页即可被入侵,旧版 iPhone 该升级了3/19/2026
- GrapheneOS 警告起诉:安卓统一认证标准背后的生态之争3/18/2026
- OpenAI 开始给内部编码代理配“监工”,数千万轨迹里未见最高风险失调3/21/2026
- 爱泼斯坦案幸存者起诉 Google:AI 搜索放大了数据泄露的伤害3/27/2026
- Android 17 后量子加密落地:系统可信根的量子抗性升级3/26/2026
- 苹果向 FBI 交出隐藏我的邮箱背后的真实账户信息3/27/2026
- Apifox 桌面端被曝遭供应链投毒,恶意脚本可窃取 SSH 密钥与 Git 凭证3/25/2026
- 谷歌称 Android 已成移动端网页浏览最快平台3/26/2026
- GrapheneOS 拒绝把操作系统做成身份核验入口3/24/2026
- Apifox 承认遭遇供应链攻击后,开发团队现在最该做的是全面轮替凭证3/26/2026
- Swift 6.3 发布,官方把 Android 支持推进到了 SDK 层3/25/2026
- Android 侧载权限换机可继承,Google FAQ 明确高级流程细节3/28/2026
- Android 17 Beta 3 引入系统级 VPN 分流设置3/27/2026
- ICAO 紧急限制航班充电宝:每人最多 2 个,机上禁充3/28/2026
- 苹果锁定模式近四年零攻破记录3/28/2026
- 欧洲议会以一票之差否决聊天扫描——大规模监控暂告终结,但数字自由的下一战已经打响3/28/2026