网络安全

Google 将 Rust 集成到 Pixel 10 调制解调器中,提升蜂窝连接基础的安全性

Google 宣布,Pixel 10 系列将成为首款在蜂窝调制解调器软件中集成内存安全 Rust 语言的 Pixel 设备,具体方式是用 Rust 编写的组件替换 DNS 解析器。该公司表示,此举可降低一整类内存安全漏洞风险,尽管该组件会使软件镜像增加约 371 KB。

2026-04-10
2 分钟阅读
6 浏览量
فريق تحرير certi.news
Google 将 Rust 集成到 Pixel 10 调制解调器中,提升蜂窝连接基础的安全性

据 Google Security Blog 的一篇博文介绍,Pixel 10 系列首次在 Pixel 设备中将使用内存安全 Rust 语言编写的组件集成到蜂窝调制解调器软件中。具体而言,此举是在调制解调器固件中引入一个基于 Rust 的域名系统(DNS)解析器,旨在降低处理不可信数据的部分中与内存安全相关的漏洞风险。

此举是 Google 加固蜂窝通信调制解调器、防范遭到利用的努力之一。该公司此前已为 Pixel 9 配备针对一组内存安全漏洞的缓解措施,但认为调制解调器固件的复杂性及其广泛的攻击面需要采取更多主动措施。Google 表示,Project Zero 此前曾通过互联网在 Pixel 调制解调器上实现远程代码执行,而 Pixel 调制解调器包含数十 MB 的可执行代码。

Google 为什么选择 DNS 解析器?

DNS 的用途并不只是帮助浏览器查找网站。随着现代蜂窝通信转向数字数据网络,呼叫转接等基本操作同样依赖 DNS 服务。这一复杂协议需要解析可能不可信的数据,因此当它使用缺乏内存保护的语言实现时,就会成为敏感环节;根据该博文,这类风险与漏洞 CVE-2024-27227 有关。

Google 评估了多个以 Rust 实现 DNS 的开源软件包,并根据维护水平、超过 75% 的测试覆盖率以及其在 Rust 社区中的普及程度,选择了 hickory-proto 库。该库最初缺少 no_std 支持,而这一支持是资源受限或无操作系统环境所需要的,因此 Google 为该库及其部分依赖项增加了这项支持。这项工作还为 rust-url 项目中的 URL 解析器带来了 no_std 支持。

体积成本与现有软件的集成

体积研究显示,以 Rust 编写的中间组件占用 4 KB,core、alloc 和 compiler_builtins 组件需要 17 KB,hickory-proto 库及其依赖项占用 350 KB,总计 371 KB。Google 认为 Pixel 调制解调器的内存容量不会造成严格限制,因此现阶段优先考虑社区支持和代码质量,而不是优化体积。不过,该公司指出,对于其他嵌入式系统而言,体积增加可能构成障碍;未来可以通过编译选项排除不需要的功能来缩减体积。

为了将 Rust 集成到现有的 C 和 C++ 代码库中,团队使用单元测试验证基本算术操作、动态内存分配以及语言间的互操作接口。团队还选择将 Rust 的编译步骤直接集成到现有构建系统中,而不是通过 Cargo 创建独立的静态库,因为这种方式更容易随着其他 Rust 组件的加入而扩展,并能降低符号冲突的可能性。

基础构建系统依赖 Pigweed,而 FFI 接口则用于将固件中现有的内存分配系统与 Rust 中的 alloc 组件连接起来,并统一 Rust 与 C/C++ 之间的崩溃处理。在链接时,由于将调制解调器中针对 memset 和 memcpy 两个函数优化过的实现替换为来自 compiler_builtins 的实现,出现了性能和功耗问题。团队通过在链接阶段之前从静态库中移除 compiler_builtins 文件解决了这一问题。

DNS 接口与后续步骤

Google 定义了一个用于处理 DNS 响应的 C 语言 API,并在 Rust 中实现了该 API。解析响应后,该组件会调用现有的 C 函数,更新原始程序使用的数据结构。团队还使用 bindgen 工具生成复杂数据类型转换操作所需的互操作代码。

Google 表示,Pixel 10 系列具有重要意义,因为它是首款在调制解调器中集成内存安全语言的 Pixel 设备。目标并不只是替换一个解析器;该公司认为,这一项目为未来将其他以内存安全语言编写的解析器和组件引入蜂窝通信基础奠定了基础。

新闻来源
Google Security Blog
查看原始来源 ↗
ف
作者

فريق تحرير certi.news

同一分类

你可能还喜欢

查看所有新闻