Bringing Rust to the Pixel Baseband
7 days ago
- #Pixel Security
- #Rust Integration
- #Memory Safety
- 谷歌通过在Pixel 9的调制解调器固件中减少内存安全漏洞,增强了设备的安全性。
- 针对Pixel 10,谷歌将内存安全的Rust DNS解析器集成到调制解调器固件中,以降低安全风险。
- 调制解调器固件面临日益增长的威胁;例如,Project Zero项目实现了对Pixel调制解调器的远程代码执行攻击。
- DNS对于蜂窝网络操作至关重要,如果实现不安全,可能导致类似CVE-2024-27227的漏洞。
- 由于维护性、测试覆盖率和社区采用度,hickory-proto被选作Rust DNS库。
- 为适应裸机环境,hickory-proto添加了no_std支持,这也有利于其他项目。
- hickory-proto的代码体积未针对嵌入式使用进行优化,但由于Pixel的内存限制,仍可接受。
- Rust集成涉及定义单元测试,并使用rustc与Pigweed以实现构建系统的可扩展性。
- 通过FFI实现了分配器和恐慌处理器,以便与现有的C/C++调制解调器固件集成。
- 链接Rust代码需要提取目标文件,并解决与compiler_builtin相关的弱符号问题。
- 创建了一个Rust函数process_dns_response,用于解析DNS响应并回调到C函数。
- 使用Cargo-gnaw生成GN构建规则来管理依赖项,确保正确性和维护便利性。
- 该项目为在蜂窝基带中集成未来内存安全代码奠定了基础。