据谷歌在线安全博客透露,目前超过 70% 的严重安全漏洞是内存安全问题。也就是说,这些安全漏洞主要是由C 或 C++ 语言中的指针错误导致,其中有一半的都是使用释放后的bug。
目前内存安全是一个值得全球软件工程社区认真对待的问题,当所有错误都指向同一个原因时,这也是一个机遇,意味着可以同时解决很多问题。
Chrome安全团队试图通过以下几种方法来解决:
- 通过编译时检查指针是否正确来确保C++更安全;
- 通过运行时检查指针是否正确来确保C++更安全;
- 调查与体验一些能够提升内存安全的编程语言。
在调查能够提升内存的编程语言中,谷歌安全团队把目标锁定在了 Rust,由 Mozilla 出品的编程语言,Rust 编译器能够保证代码在编译时就能发现指针错误,避免了性能损失。然而,博文中他们还提到,就是否直接让 C++ 和 Rust 直接合作,目前还有一些悬而未决的问题,并且谷歌安全团队表示,即使他们明天就开始用 Rust 编写新的大型组件,也不能立即消除很大一部分安全漏洞,能否让语言边界足够干净,以便他们可以用 Rust 编写部分现有组件?还不知道。他们已经开始在Chromium 源代码树中进行有限的、非面向用户的 Rust 实验,但还没有在 Chrome 的生产版本中使用它——目前仍处于实验阶段。
参考链接:
- https://security.googleblog.com/2021/09/an-update-on-memory-safety-in-chrome.html?m=1
- https://www.chromium.org/Home/chromium-security/memory-safety