最新消息:关注人工智能 AI赋能新媒体运营

引入Rust使Android内存漏洞降至两成以下,并提升交付效率

科技资讯 admin 浏览

Google的Android团队公布2025年最新安全统计,指出Android平台中属于内存安全类别的漏洞占比,首次降至所有漏洞数量的两成以下。团队将关键因素归结为近年来在系统层大量引入Rust,且新编写的代码优先采用内存安全语言,逐步降低整体风险。

Android团队强调,他们刻意将观察焦点放在新增且仍在活跃开发的代码上,因为历史数据显示,多数严重漏洞来自新变更。

Google在Android平台将Rust作为C和C++的直接替代方案,引入操作系统层所需的底层控制与可预测性,同时利用语言本身的内存安全特性。从内部统计来看,新增的Rust代码量已与C++相当,Android平台累计Rust代码约有500万行,规模足以进行跨语言的质量与效率比较。

Android团队估算,目前Rust代码的内存安全漏洞密度约为每百万行0.2个,相较之下,历年C与C++代码的密度大约落在每百万行1000个内存安全漏洞的水平,两者相差约千倍。Rust仍可能出现内存安全问题,但Android团队认为,关键不在于会不会有,而在于出现的频率与密度能降低到何种程度。

Android团队分享了一个差点出现在正式版本中的Rust内存安全问题:他们在CrabbyAVIF组件中发现线性缓冲区溢出,在一般情况下可能造成无明显症状的内存破坏,但因Android默认采用Scudo强化分配器,在特定分配的内存区块周边加入防护页,使问题直接表现为可观察的崩溃,才在测试阶段被拦截。这个案例说明Rust本身无法消除所有风险,同时也展示了语言层安全与内存分配器等多层防御机制如何相互补强。

Android使用业界常见的DORA指标衡量软件交付表现,对同等规模的变更比较Rust与C++。团队内部统计显示,在Android第一方代码中,Rust变更在代码审查阶段被要求修改的次数比C++少约两成,待在审查流程中的时间也短约四分之一;更重要的是,中大型变更被迫回退的比例,Rust仅约为C++的四分之一,也就是说Rust变更一旦部署,较少需要撤回重来。

即便引入内存安全语言,操作系统与硬件驱动开发仍不可避免需要使用unsafe Rust或C、C++处理FFI与硬件操作。Android团队坦言,不可能禁止unsafe,但可以将其集中于少数受控区域,并提供更完整的教育与审查。他们在自家《Comprehensive Rust》教材中新增unsafe专章,帮助开发者理解安全性、未定义行为,以及如何撰写安全注释与封装unsafe区块。从内部统计来看,约仅有4%代码位于unsafe区块内,而整体漏洞密度仍远低于C与C++的水平。