Chrome 安全团队发表文章称,谷歌正在探索使用内存安全语言 Rust 重写或开发 Chrome 的部分模块。
去年谷歌曾指出,Chrome 70% 的安全漏洞是内存安全问题,主要由 C/C++ 中的指针错误导致。针对此问题,谷歌表示 Chrome 探索通过以下三个方向来解决:
- 在编译时检查指针是否正确,使 C++ 更安全
- 在运行时检查指针是否正确,使 C++ 更安全
- 调查代码库中内存安全语言的使用情况
“编译时检查”意味着在 Chrome 构建过程中保证安全,“运行时”意味着在设备上运行 Chrome 时进行检查。理想情况下,通常会选择选项 1 —— 在编译时使 C++ 更安全。不过语言的设计理念并非如此,因此 Chrome 没有选择此方法,而是试验了 2 和 3。
Chrome 安全团队介绍了他们对 C++ 安全解决方案的重大投入 —— 例如 MiraclePtr 和 ABSL/STL 强化模式。他们希望消除相当一部分可利用的安全漏洞,同时也预计会出现部分性能损失的情况。
此外,他们还在探索未来是否可以使用内存安全语言 Rust 重写或开发 Chrome 的部分模块。Rust 是由 Mozilla 开发的编程语言,能在编译时发现指针错误,因此不会造成性能损失。但要让 Rust 和 C++ 一起良好地搭配使用仍存在不少问题。
Chrome 安全团队表示,即使从明天开始使用 Rust 编写新的大型组件,他们也不太可能在几年内消除大部分安全漏洞。能否让语言边界足够干净,以便可以使用 Rust 编写部分现有组件?Chrome 安全团队也无法回答这个问题。不过他们已经开始在 Chromium 源代码树中进行有限的、非面向用户的 Rust 实验,暂时没有在 Chrome 的生产版本中使用 Rust,这些进行中的方案仍处于实验阶段。
本文地址:https://www.oschina.net/news/161500/an-update-on-memory-safety-in-chrome