谷歌把 Rust 塞进了 Pixel 10 基带:手机最神秘的角落,终于开始补安全课了

手机最危险的地方,往往不在你看得见的地方
很多人以为手机安全的主战场在 App、系统权限、浏览器沙箱,或者“别乱点陌生链接”这种老生常谈的提醒里。可真正让安全研究员头疼的,常常是另一个普通用户几乎感觉不到的部件:基带,也就是手机里的蜂窝通信调制解调器。
它像一台藏在手机深处的小电脑,有自己的固件、自己的运行逻辑,负责处理运营商网络、语音、短信、数据连接这些最底层的通信任务。问题是,这块系统长期以来就像一间“黑屋子”——代码复杂、供应链封闭、历史包袱沉重,很多地方还跑着老 C 和 C++ 代码。性能是够快了,但安全性经常靠补丁和运气维持。
谷歌这次在 Pixel 10 上做的事,表面看并不轰动:它没有宣布“基带全面 Rust 化”,也没有重写整套通信栈,而是把一个 Rust 写成的 DNS 解析组件嵌进了原有基带固件里。听起来像工程师的修修补补,实际上却很像在一栋年久失修的楼里,先把最容易失火的线路重新走一遍。它不华丽,但非常务实。
为什么偏偏是基带,偏偏是现在
这件事之所以值得关注,是因为基带攻击早就不是纸上谈兵。谷歌自家的 Project Zero 过去几年已经多次证明,攻击者有可能通过互联网路径,直接把利用链打到 Pixel 使用的基带上,实现远程代码执行。换句话说,攻击目标甚至不一定需要你安装恶意 App,某些情况下,你的手机只是连着网、开着蜂窝通信,就可能暴露在风险里。
此前 Project Zero 曾披露过二十多项 Exynos 基带漏洞,其中 18 个被归类为严重级别。虽然厂商事后都会打补丁,但这类问题最麻烦的地方就在于:它们不是某一个“粗心程序员写错一行代码”那么简单,而是系统性问题。基带代码经过几十年演化,叠加 3GPP 标准、运营商适配、芯片厂商私有实现,像一团不断续命的老藤蔓,能跑,但不好看,也不好修。
这也解释了为什么大家明知 C/C++ 容易踩内存安全的坑,却还是一直在用。因为基带是实时系统,性能要求极高,稍有抖动就会影响通信质量。像 Python、C# 这类带垃圾回收的语言,开发上更舒服,但在这种场景里并不合适。行业过去一直默认接受这个现实:快,优先于安全。可现在,随着远程攻击风险被一再验证,这种旧平衡开始松动了。
Rust 没有魔法,但它确实更适合补这个洞
谷歌这次选择 Rust,并不让人意外。过去几年,Rust 已经从“程序员圈子里很红的语言”,逐渐变成系统安全工程里越来越现实的选择。原因很简单:它试图在不牺牲底层性能的前提下,尽量消灭那些最常见、也最致命的内存安全问题,比如缓冲区溢出、越界访问、释放后继续使用。
它和很多“更安全”的语言不一样的地方在于,不靠运行时垃圾回收,而是在编译阶段用一套近乎严苛的规则去检查内存访问是否合法。程序员如果写错了,代码直接过不了编译。工程师可能会因此骂几句 borrow checker 太烦,但对安全团队来说,这种“不让错代码上车”的机制非常有吸引力。
当然,Rust 不是银弹。它解决的是一大类内存安全问题,不是所有安全问题。逻辑漏洞、协议设计缺陷、认证错误、配置失误,Rust 一个也替代不了。更现实的是,谁也不可能把数十兆、积累了几十年的基带固件一下子全部改写。那不仅工作量巨大,还会触碰芯片厂商和通信供应链的商业机密边界。很多基带实现,本来就是行业里最封闭的资产之一。
所以谷歌的策略非常克制:既然没法整体推倒,那就找一个最危险、最值得动手的模块先下刀。它选中的,是 DNS 解析。
从 DNS 这个入口下手,谷歌走的是“现实主义安全路线”
为什么是 DNS?因为今天的手机通信,早已不只是打电话发短信那么简单。越来越多蜂窝功能迁移到数据网络上,DNS 成了很多联网流程里的基础环节。只要设备要和网络服务对话,就绕不开解析域名。而 DNS 又恰恰是一类典型的“不可信输入”场景:外部数据包进来,系统必须解析、处理、响应。安全工程的常识告诉我们,任何需要解析外部输入的地方,都是事故高发区。
谷歌选用了开源 Rust DNS 库 hickory-proto。它并不是为了追求极致性能而生,但胜在成熟、被广泛使用,也更容易获得社区维护。为了让这套代码适应基带环境,团队还去掉了标准库依赖,把它编译成更适合固件运行的机器码,再嫁接进原来的 C/C++ 基带代码里。
最后增加的体积是 371KB。放在一部旗舰手机的基带环境里,这个代价不算夸张。换来的收益则很直白:如果攻击者想通过恶意 DNS 数据包去触发某些典型的内存破坏行为,这一层 Rust 组件会像一道硬墙,很多经典利用手法会直接撞上编译期安全模型,走不通。
我觉得这里最有意思的,不是“Rust 很先进”,而是谷歌终于在基带这种出了名难动的地方,证明了一种折中方案:你不用一夜之间把旧世界推翻,也能一点点把危险区域替换成更安全的部件。这比那些动不动就喊“全部重构”的理想主义,更像真正能影响产业的路线。
Pixel 10 的意义,不只是一台手机的升级
如果把视角拉远,Pixel 10 这次尝试更像一个行业风向球。过去几年,Android、Linux、微软、甚至一些汽车和嵌入式厂商都在讨论“内存安全转型”,Rust 频繁出现在路线图里。可一旦进入基带、驱动、固件这种深水区,大家又会退回现实:老代码太多,验证成本太高,出了问题谁负责?
谷歌这次给出的答案不是口号,而是一个可交付产品:Pixel 10 已经首发搭载了这套更安全的基带实现。它说明内存安全语言不只适合浏览器、系统服务和云端基础设施,也可以逐步深入到蜂窝通信这种最保守、最封闭的地带。
但别高兴得太早。这里仍然有几个现实问题。其一,这种做法能不能推广到更多安卓厂商,取决于芯片供应商是否愿意配合。Pixel 的特别之处在于谷歌对软硬件整合的控制力更强,放到更分散的安卓阵营,推进难度会明显更高。其二,371KB 对旗舰机不是问题,对一些资源更紧张的嵌入式系统却未必轻松。谷歌自己也承认,当前这套库对更简单的设备来说可能还是偏大,未来要靠更模块化的设计继续瘦身。
还有一个更值得想的问题:当手机的关键安全能力越来越依赖厂商在封闭组件里“做了什么”,用户该如何验证?基带依旧是黑箱,外界能看到的是结果,而不是全部过程。Rust 确实提高了某一层的可信度,但它还没有改变基带生态整体不透明的老毛病。
即便如此,我仍然认为这是一条对的路。因为今天移动安全最大的敌人,往往不是某个惊天阴谋,而是那些没人愿意彻底碰的旧代码。它们不够性感,也不适合做发布会主视觉,却实实在在决定了一部手机能不能撑住下一次零日攻击。Pixel 10 在这个角落里做的小手术,可能比相机多一颗传感器、AI 多几个功能开关,更接近“真正的升级”。
从记者视角看,这类新闻常常不讨巧。它没有炫目的跑分,没有演示视频,也不会让消费者在门店里一眼看出区别。但技术产业真正成熟的标志,本来就不只是做出更多功能,而是开始认真修那些埋了十几年的地基裂缝。谷歌现在做的,正是这种苦活。
如果未来几年,苹果、高通、联发科、三星都开始在基带和固件层面引入更多内存安全组件,我们回头看,Pixel 10 这次“硬塞进去的 Rust”,也许会被视为一个不起眼但关键的转折点。它提醒整个行业:有些安全升级,不能再等到下一次大漏洞曝光之后才补作业了。