我反编译了白宫的新App

2026年3月28日,一篇技术博客在Hacker News上迅速攀升至热门榜单。博客标题简单直接:”我反编译了白宫的新App”。几个小时后,这篇帖子收获了超过300个点赞和上百条评论,引发了科技社区关于政府数字服务安全性的广泛讨论。
这并非一次普通的逆向工程分析。当一位名为”Thereallo”的开发者将白宫官方Android应用拆解开来时,他发现的远不止是一个政府应用的内部架构——他揭示了一个关于技术债务、供应链风险和政府数字化转型的完整故事。
一个”标准”的React Native应用
白宫在2026年3月发布了自己的官方移动应用,并配以高调的宣传文案:”为特朗普政府提供无与伦比的访问权限”。应用在App Store和Google Play同步上线,定位为官方新闻推送和政策信息获取渠道。
从技术角度看,这并非一个复杂的产物。
Thereallo使用了标准的逆向工程工具链:ADB提取APK,JADX反编译Java字节码,然后从Hermes引擎的字节码中提取字符串。整个过程只用了”几分钟”。
应用的技术栈相当主流:React Native框架,Expo SDK 54,Hermes JavaScript引擎。后端是基于WordPress的REST API,运行在whitehouse.gov域名下。一套名为”forty-five-press”的实体被标注为开发者。
“没什么奇怪的,”Thereallo在博客中写道,”让我们继续。”
但继续深入后,事情开始变得有趣。
Cookie横幅杀手
应用内嵌了一个用于打开外部链接的WebView。这本是移动应用的常见做法,但Thereallo发现,每次页面加载时,应用都会注入一段JavaScript代码。
这段代码的目标非常明确:隐藏网站上的Cookie横幅、GDPR同意对话框、隐私声明、登录墙、付费墙——几乎所有用户讨厌的弹窗元素。
代码使用CSS选择器定位这些元素,设置display: none隐藏它们,并通过MutationObserver持续监控页面,确保任何动态添加的同意对话框也会被立即移除。它甚至强制恢复页面滚动,因为许多网站会在用户拒绝同意后锁定滚动功能。
一位美国政府官方应用,正在主动注入代码绕过第三方网站的隐私保护和商业模式。
Hacker News上的评论呈现出有趣的分化。一些人认为这是”特朗普政府罕见的正面举措”,因为用户确实讨厌这些弹窗。另一些人指出,这种行为可能违反了网站的服务条款,而这些条款本质上构成了用户与网站之间的法律合同。
“在政府应用中这样做是一回事,”一位评论者写道,”但在法律层面,这就像政府告诉你,闯红灯没关系,因为红灯很烦人。”
位置追踪的”三道门”
关于GPS位置追踪的发现引发了更激烈的争论。
Thereallo声称应用内置了完整的位置追踪管道,每4.5分钟(前台)或9.5分钟(后台)轮询一次GPS坐标,并将数据同步到OneSignal服务器。他提供了大量代码证据:OneSignal SDK中的LocationManager类、270秒和570秒的轮询间隔常量、以及将坐标写入PropertiesModel的逻辑。
但多位评论者提出了反驳。他们下载了应用,发现应用并未请求位置权限。Android的权限声明中也没有包含位置相关条目。
Thereallo的回应揭示了逆向工程的复杂性:位置追踪代码确实存在,但需要满足三个条件才会激活——setLocationShared(true)被调用、用户授予位置权限、设备具有位置服务提供者。他无法确定JavaScript层是否真的调用了这个开关,因为Hermes字节码是编译后的,调用点隐藏在5.5MB的代码包深处。
“整个管道都在那里,就等一个函数调用激活,”他写道。
这引发了关于”代码存在”与”功能激活”之间区别的讨论。死代码是软件开发的常见现象,特别是在使用第三方SDK时。OneSignal是一个流行的推送通知服务,其SDK内置了位置追踪能力,但这并不意味着使用它的应用都在追踪用户。
“如果你反编译任何使用OneSignal的应用,你都会看到同样的代码,”一位评论者指出。
但另一个问题浮现出来:如果政府应用的开发者不知道如何正确移除这些代码,是否意味着他们也不理解其他安全影响?
从某个人的GitHub页面加载代码
这是整个分析中最令人瞠目的发现。
应用使用react-native-youtube-iframe库嵌入YouTube视频。这个库本身是一个正常的开源项目,有691个GitHub星标,被超过7700个项目使用。
但问题在于:这个库从哪里加载播放器HTML?
答案是一个个人GitHub Pages站点:lonelycpp.github.io。
如果一个名为”LonelyCpp”的GitHub账户被入侵,攻击者可以将任意HTML和JavaScript注入每一个使用这个应用的设备,代码将在WebView环境中执行。
“这是政府应用从某个随机个人的GitHub页面加载代码,”Thereallo写道,语气中带着难以置信。
这不是理论上的风险。2024年7月,就有人在项目的Issue区报告:”被App Store拒绝了”——苹果审核团队可能发现了类似的供应链问题。
OpenJS基金会在2025年警告过类似威胁:npm生态系统中的供应链攻击正在上升。当政府应用直接依赖个人维护者的基础设施时,它将整个用户群体暴露在该维护者的安全实践之下。
没有证书锁定
SSL证书锁定(Certificate Pinning)是移动应用安全的基本措施。它防止攻击者在用户网络中插入虚假证书进行中间人攻击。
白宫应用没有实现证书锁定。
如果你在一家使用企业代理的公司工作,或在公共WiFi环境下,流量可能被拦截。如果你生活在某个强制性监控的国家,或在某个使馆附近的咖啡馆使用网络,情况更加复杂。
评论者对此意见不一。一些人指出,现代操作系统已经有证书透明度日志,恶意证书会被检测到。另一些人提醒,许多企业强制安装自己的CA证书,用户设备会信任这些证书——这正是MDM(移动设备管理)的工作原理。
“如果你认为桌面浏览的HTTPS是安全的,那这里也没有更多问题,”一位评论者写道,”但政府应用理应有更高的安全标准。”
开发残留物
生产版本中不应该出现的东西出现在了这里:
一个localhost URL:http://localhost:8081/index.bundle——React Native的开发服务器地址。
一个内部IP地址:10.4.4.109——可能是开发者的本地网络。
Expo开发客户端完整编译在发布版本中,包括一个可见的开发者菜单图标。
AndroidManifest中导出了PreviewActivity——一个仅供开发预览使用的组件。
这些都是典型的时间压力下的产物。当”快速发布”压倒”正确发布”时,这类技术债务就会累积。
一切数据流向何处?
应用集成了大量第三方服务:
-
• OneSignal:推送通知、用户标签、短信关联、跨设备标识、行为追踪 -
• Mailchimp:邮箱注册,通过 whitehouse.us10.list-manage.com -
• Uploadcare:内容图片托管,六个硬编码UUID -
• Truth Social:硬编码的HTML嵌入,包含特朗普的个人资料 -
• Facebook:页面插件iframe -
• Elfsight:第三方JavaScript小组件平台
这些都不是政府控制的基础设施。用户数据流向商业公司的服务器,由私营企业的隐私政策管理。
“这就是你期望的政府应用吗?”Thereallo在文章结尾问道。
答案取决于你认为政府应用应该是什么。
“业余时间”的讨论
Hacker News的评论揭示了两种截然不同的叙事。
第一种叙事:这是一个草台班子,展示了政府技术能力的低下。评论者使用”amateur hour”(业余水平)这样的词汇,指出应用很可能由外包公司使用模板快速构建,没有经过应有的安全审查。
“这基本上就是一家咨询公司的标准营销应用,”一位评论者写道,”他们雇人开发,对方使用了他们的标准应用架构,包括位置追踪代码和其他东西。”
第二种叙事:逆向工程分析本身存在缺陷。AI辅助的分析可能将库代码误判为应用功能,缺乏可达性分析,无法区分死代码和活跃路径。
“我下载了应用,它没有请求位置权限,”多位评论者报告,”文章声称它’可以’通过JavaScript调用激活,但任何代码都可以调用任何API。这并不是追踪用户。”
真相可能位于两者之间。OneSignal SDK确实内置了位置追踪能力,但这不意味着白宫应用在使用它。同时,政府应用依赖个人GitHub页面加载代码,确实是一个值得关注的供应链风险。
政府应用的安全困境
这次事件揭示了政府移动应用面临的独特挑战。
一方面,政府应用应该代表最高安全标准,接受严格审计,保护公民隐私。另一方面,政府往往缺乏技术人才,依赖外包和快速迭代,时间压力巨大。
历史上,政府应用的安全问题并非新鲜事。2020年,波兰的COVID-19隔离应用被发现是从一个商店检查应用改编而来,保留了诸如”您的Home Quarantine Inc发票”这样的字符串。紧急情况下,快速发布压倒了代码质量。
白宫应用可能面临类似压力。政治周期紧迫,功能需求快速变化,开发团队可能在有限时间内完成工作。这解释了为什么开发残留物没有被清理,为什么供应链依赖没有被审查。
但这也引出一个更深层的问题:在什么情况下,我们应该接受”快速但不完美”的政府数字服务?
写在最后
截至文章发布时,白宫尚未对Thereallo的分析作出公开回应。
应用仍在App Store和Google Play上架。版本号47.0.1的更新日志只写着”minor bug fixes”(次要错误修复)。
对于技术社区而言,这次事件提供了一个独特的窗口,观察政府数字服务的技术现实。它既不是阴谋论的证实,也不是完全无事的声明。它是一个关于现代软件开发复杂性、供应链依赖和安全债务的案例研究。
当Thereallo完成他的分析时,他在博客末尾写道:”这是否非法?大概不是。这是你期望的政府应用?大概也不是。”
在一个充满不确定性的回答中,这可能是最诚实的评估。
参考资料:
-
• Thereallo博客原文:https://thereallo.dev/blog/decompiling-the-white-house-app -
• Hacker News讨论:https://news.ycombinator.com/item?id=47555556 -
• LonelyCpp/react-native-youtube-iframe仓库:https://github.com/LonelyCpp/react-native-youtube-iframe
夜雨聆风