谷歌:过渡到 Rust 使得 Android 漏洞大幅下降
谷歌在最新的一篇文章中指出,内存安全问题导致的漏洞百分比与新代码使用的开发语言密切相关。而随着其将开发转向内存安全语言,Android 内存安全漏洞的百分比已经从 2019 年的 76% 下降到了 2024 年的仅 24%,远低于 70% 的行业标准,并且还在继续下降。
Android 安全团队成员 Jeff Vander Stoep 和 Google 高级软件工程师 Alex Rebert 解释称,漏洞具有半衰期,会随着代码的发展而逐渐衰减,绝大多数漏洞都存在于新的或最近修改的代码中。
这就意味着问题主要出在新代码上,需要从根本上改变代码开发方式。且随着时间的推移,代码会呈指数级成熟和更加安全;而随着代码老化,重写等投资的回报也会逐渐减少。
因此在维护旧代码的同时,使用 Rust 等内存安全语言编写新代码,最大限度地减少随着时间的推移出现新的缺陷,就能达到大幅减少内存安全漏洞的目的。
“根据我们的经验,很明显不需要丢弃或重写所有现有的内存不安全代码。相反,Android 专注于将互操作性作为内存安全之旅的主要功能,使其既安全又方便。互操作性提供了一种实用且渐进的方法来采用内存安全语言,使组织能够利用现有的代码和系统投资,同时加速新功能的开发。”
文章还总结了过去几十年间,业界在处理内存安全漏洞方面经历的四个主要阶段:
- 被动修补
- 主动缓解措施
- 主动发现漏洞
- 高保障预防(安全编码):强调通过使用 Rust 等内存安全语言从源头上预防漏洞。
“向内存安全语言的转变不仅代表着技术的变化,更是安全方法的根本转变...... 安全编码通过将错误查找进一步向左移动来提高代码正确性和开发人员生产力。我们看到这种转变体现在回滚率等重要指标中。Android 团队观察到 Rust 更改的回滚率不到 C++ 的一半。”
在过渡到内存安全代码后,谷歌预计对漏洞缓解措施的依赖、以及对模糊测试等主动检测方法的依赖也均会减少。