
Google的Android团队公布2025年最新安全统计,指出Android平台中属于内存安全类型的漏洞占比,首次降到所有漏洞数量的两成以下。团队将关键因素归结为近年在系统层大量导入Rust,且新写程序代码优先改用内存安全语言,逐步压低整体风险。
Android团队强调,他们刻意把观察焦点放在添加与仍在活跃开发的程序代码,因为历史数据显示,多数严重漏洞来自新变更。
Google在Android平台把Rust当作C与C++的直接替代方案,引入操作系统层所需的低端控制与可预测性,同时利用语言本身的内存安全特性。从内部统计来看,添加加的Rust程序代码量已经与C++相当,Android平台累积Rust程序代码约有500万行,规模足以进行跨语言的品质与效率比较。
Android团队估算,目前Rust程序代码的内存安全漏洞密度约为每百万行0.2个,相较之下,历年C与C++程序代码的密度大约落在每百万行1,000个内存安全漏洞的等级,两者相差约千倍。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专章,协助开发者理解soundness、未定义行为,以及如何撰写安全注解与封装unsafe区块。从内部统计来看,大约只有4%程序代码落在unsafe区块内,而整体漏洞密度仍远低于C与C++的水准。











