C和C ++是“不安全的”语言:导致Chrome和微软产品所有安全性错误中70%内存安全性问题 | ZDNet


Google工程师本周表示,Chrome代码库中所有严重的安全漏洞中,大约70%是内存管理和安全漏洞。
该数字与Microsoft共享的统计信息相同。在2019年2月的安全会议上,微软工程师表示,在过去的12年中,微软产品的所有安全更新中约70%解决了内存安全漏洞。

两家公司基本上都在处理相同的问题,即它们的代码库中的两种主要编程语言C和C ++是“不安全的”语言。它们是数十年前创建的旧编程工具,当时安全利用和网络攻击不是相关的威胁模型,并且与大多数早期软件开发人员无关。结果,C和C ++都使程序员能够完全控制他们如何管理应用程序的内存指针(地址),并且没有限制或警告来阻止或警告开发人员在犯基本内存管理错误时。
这些早期的编码错误导致在应用程序中引入内存管理漏洞。这包括漏洞,如释放后使用,缓冲区溢出,竞争条件,双重释放,通配指针等。这些内存管理漏洞是攻击者试图查找和利用的最抢手的错误,因为它们可以授予他们将代码植入设备内存中并由受害应用程序(浏览器,服务器,操作系统等)执行的能力。 )。
在年初发布的排名中,管理美国政府漏洞数据库的组织MITER Corporation 将缓冲区溢出列为最危险的漏洞,另外两个与内存管理相关的问题也排名前十

谷歌研究解决CHROME的内存错误
内存管理错误的问题在Google一直是个大问题,以至于Chrome工程师现在必须遵循"The Rule of 2."
根据此规则,每当工程师编写新的Chrome功能时,其代码不得破坏以下两个以上的条件:

  • 该代码处理不可信的输入
  • 代码在没有沙箱的情况下运行
  • 代码使用不安全的编程语言(C / C ++)编写

尽管软件公司之前曾尝试解决C和C ++的内存管理问题,但Mozilla一直是通过在Firefox中赞助,推广和大量采用Rust编程语言而取得突破的人。今天,Rust被认为是最安全的编程语言之一,并且是Mozilla早期的努力,是C和C ++的理想替代品。