Chrome70%的安全漏洞是内存安全问题

谷歌工程师本周表示,Chrome代码库中大约70%的严重安全漏洞是内存管理和安全漏洞。

这70%的漏洞中有一半是在使用后释放的漏洞,这是一种由于错误地管理内存指针(地址)而产生的安全问题,为攻击者攻击Chrome内部组件打开了大门。

这个百分比是在谷歌的工程师分析了自2015年以来在Chrome稳定分支中修复的912个安全漏洞后得出的,这些漏洞的严重性评级为“高”或“危急”。


这个数字与微软共享的统计数据相同。在2019年2月的一次安全会议上,微软工程师说,在过去的12年里,大约70%的微软产品安全更新解决了内存安全漏洞。

这两家公司基本上都在处理同样的问题,即C和c++这两种主要的编程语言在它们的代码库中是“不安全的”语言。

它们是几十年前创建的旧编程工具,当时安全利用和网络攻击还不是相关的威胁模型,大多数早期软件开发人员也远远没有考虑到它们。

因此,C和c++都允许程序员完全控制他们如何管理应用程序的内存指针(地址),并且没有限制或警告来防止或警告开发人员当他们犯基本的内存管理错误时。

这些早期的编码错误导致在应用程序中引入内存管理漏洞。这包括像use-after-free、buffer overflow、race conditions、double free、wild指针等漏洞。

这些内存管理漏洞是攻击者试图发现和利用的最受欢迎的漏洞,因为它们可以授予攻击者将代码植入设备内存并由受害应用程序(浏览器、服务器、操作系统等)执行的能力。

在今年年初公布的排名,斜方公司,该组织负责管理美国政府的弱点数据库,缓冲区溢出列为最危险的漏洞,和另外两个内存管理相关的问题也排名在前十名(界外读# 5和# 7 use-after-free)。

随着近年来软件工程的发展,开发人员在消除大多数安全缺陷和增加安全保护方面做得越来越好。

但不是内存管理漏洞。

谷歌表示,自2019年3月以来,在130个严重级别为“危急”的Chrome漏洞中,有125个是与内存破坏相关的问题。这表明,尽管在修复其他bug类方面取得了进展,但内存管理仍然是一个问题。

内存管理的问题在谷歌已经成为一个很大的问题,以至于Chrome工程师现在不得不遵循“2规则”。

根据这条规则,每当工程师编写新的Chrome功能时,他们的代码必须不超过以下两种情况:

虽然软件公司以前曾尝试修复C和c++的内存管理问题,但Mozilla通过赞助、推广和大量采用Firefox中的编程语言,取得了突破性进展。

如今,Rust被认为是最安全的编程语言之一,是C和c++的理想替代品,这主要归功于Mozilla的早期努力。

但是Mozilla并不是唯一一个受够了处理容易出现bug的C和c++代码的组织。

微软也在探索C和c++的替代品上进行了大量的投资。从早期检查的C项目开始,该公司现在就在试验Rust,并正在构建自己的类似于生锈的“安全”编程语言(属于秘密项目Verona的一部分)。

在本周的Build virtual大会上,微软表示,这两项努力都取得了成功,公司将重新致力于在未来采用一种安全的编程语言。

但本周,谷歌也宣布了类似的计划。该公司还表示,计划研究解决Chrome的“内存不安全问题”。Chrome是目前最受欢迎的网络浏览器,近70%的互联网用户使用它。

直到今天,谷歌工程师一直是Chrome沙盒方法的热心支持者。他们将数十个进程隔离到自己的沙箱中,最近还推出了站点隔离功能,该功能将每个站点的资源也隔离到自己的沙箱进程中。

然而,谷歌工程师表示,考虑到性能,他们对Chrome组件进行沙盒化的方法已经达到了最大的效益,公司现在必须寻找新的方法。

谷歌表示,它计划开发定制的c++库,与Chrome的代码库一起使用,这些库可以更好地保护内存相关的bug。

这家浏览器制造商还在探索MiraclePtr项目,该项目旨在将“可用的无使用后的bug转化为性能、内存、二进制大小和稳定性影响最小的非安全崩溃”。

最后,但并非最不重要的是,谷歌还表示,它计划在可能的情况下探索使用“安全”语言。候选包括Rust、Swift、JavaScript、Kotlin和Java。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢