发生了什么?
谷歌提升内存安全的旅程始于二十多年前。在最近一篇题为“与谷歌一起更安全:提升内存安全”的博客文章中,核心开发者Alex Rebert、Chandler Carruth、Jen Engel和Andy Qin揭示了谷歌安全框架的最新更新。该公司专注于减少与不安全内存代码相关的漏洞,这些漏洞约占严重软件漏洞的70%。
为了应对这一问题,谷歌采取了双管齐下的方法:首先,增加使用内存安全语言(MSLs)如Rust、Java和Python,其次,在其现有的不安全内存语言(MULs)代码中增加安全性,特别是C和C++。这些努力已经在Android中取得了显著成果,内存安全漏洞从2019年的220个减少到2024年底的仅36个。
关键要点
-
采用内存安全语言:谷歌正在推动广泛采用MSLs如Rust,这大大降低了内存相关错误的风险。Rust的安全特性使其非常适合C++历史上占主导地位的低级环境。
-
C++强化:考虑到从C++过渡需要时间,谷歌正在实施边界检查等安全机制,并引入“MiraclePtr”等工具,以减少现有代码库中的漏洞。
-
模糊测试和漏洞检测:谷歌使用模糊测试器、消毒器和OSS-Fuzz等持续模糊测试工具,已在850个开源项目中发现了超过8,800个漏洞,突显了这些技术在防止软件错误方面的有效性。
-
全球领导力:通过开源其工具并与技术社区合作,谷歌为全球内存安全改进树立了先例,有可能显著降低整个行业的网络安全风险。
深入分析
谷歌转向内存安全语言,特别是Rust,是一个经过深思熟虑的举措,平衡了性能与安全。在高性能环境如嵌入式系统或Android设备中,Rust提供了C++的替代方案,其“借用检查器”等功能确保从源头上防止内存相关错误。这一转变已经在Android等平台上显著减少了漏洞,展示了谷歌策略的有效性。
然而,谷歌认识到完全从不安全内存语言过渡将是一个漫长的过程,考虑到大量现有的C++代码。为此,谷歌正在将安全特性添加到C++代码中,通过实施边界检查等技术来降低风险。通过同时处理新代码和现有遗留代码库,谷歌的方法是全面的,确保用户在过渡到内存安全语言的过程中得到保护。
此外,谷歌在高级漏洞检测和缓解策略上的投资,如机器学习引导的模糊测试和基于硬件的解决方案如内存标记扩展(MTE),突显了其不仅检测而且预防漏洞的承诺。
你知道吗?
- 谷歌通过OSS-Fuzz,一个其开发并与全球开发者社区共享的持续模糊测试工具,已在850个开源项目中发现了超过8,800个漏洞。
- 内存安全漏洞约占零日漏洞的75%,使得谷歌对内存安全的关注成为保护数字生态系统的关键举措。
- 到2024年,Android中的内存安全漏洞已从2019年的220多个减少到仅36个,这得益于谷歌在其移动平台中增加了对内存安全语言如Rust的使用。
总之,谷歌提升内存安全的积极措施代表了保护软件免受恶意攻击的必要步骤。通过整合内存安全语言和将安全特性添加到现有代码中,谷歌不仅在保护其自身服务,还在为软件安全树立新的行业标准。这种多方面的方法可能会产生深远的影响,使数字世界对开发者和用户都更加安全。