谷歌:使用 Rust 后,安卓系统的内存安全漏洞数量大幅下降

【CSDN 编者按】你最常用的开发语言是哪种呢?近日,一位 IT 安全方面的自由撰稿人 Robert Lemos 在一篇文章中表示,软件公司和国家安全局督促开发人员转向内存安全编程语言,以消除高危缺陷的一个主要来源。

原文链接:https://www.darkreading.com/application-security/shift-memory-safe-languages-gains-momentum

译者 | 禾木木

出品 | CSDN(ID:CSDNnews)

软件安全专家近期表示,软件行业正在针对一组有害的漏洞进行研究并取得进展,这些漏洞导致了绝大多数关键且可远程利用的疯狂攻击。

这类所谓的内存安全问题包括缓冲区溢出和释放错误后的使用,占软件公司披露的大部分应用程序安全问题。目前,最新数据显示,内存安全语言(如Java、C#和最近的Rust)的使用越来越多,导致整类漏洞在迅速减少。

例如,谷歌透露,最新版本的 Android 操作系统使用内存安全编程语言(如Java、Rust 和 Kotlin)编写的新代码,比使用 C 和 C++ 等内存不安全语言编写的代码多,从而过去三年内存安全漏洞从 223 个降至 85 个。

谷歌软件工程师 Jeffrey Vander Stoep 表示:“我们将继续专注于消除各类漏洞,重点关注最严重的。随着内存安全漏洞变得越来越少,我们预计研究界会将其漏洞发现工作重点放在其他漏洞上。” 

内存安全漏洞比例

几十年来,C 和 C++ 一直是软件行业的主力编程语言。然而,它们缺乏更多现代语言的内存保护,如 C#、Go、Java、Python、Ruby、Rust 和 Swift。根据应用程序安全公司 Veracode 的《软件安全状态》第 11 卷报告,59% 的 C++ 应用程序存在严重缺陷,而 JavaScript 和 Python 则分别为 9% 和 10%。

缓冲区溢出和蠕虫式漏洞

程序员总会很容易地写出有漏洞的代码,这已经成为大型软件公司的一个主要问题。例如,微软发现,直到 2018 年,在该公司软件中发现的漏洞中内存安全问题占了 70%。根据软件弹性工程师 Alex Gaynor 在 2020 年的研究,总体而言,内存安全问题已占各种生态系统中所有漏洞的 60%-70%。

Veracode 首席技术官 Chris Wysopal 表示,这些漏洞很容易被利用来攻击应用程序,所以它们是导致大量入侵事件背后的根本原因:“内存损坏问题是最严重的缺陷之一,因为它们通常允许攻击者利用代码进行攻击,从而完全控制应用程序,在最坏的情况下,甚至可以创建蠕虫攻击,进而攻击其他漏洞。” 

谷歌在其最近的博客文章中指出,在 Android 开发中,虽然内存安全漏洞只占 36%,但在关键安全漏洞中占 86%,在远程可利用问题中占 89%。

转向安全语言

出于这个原因,谷歌和其他公司敦促开发人员采用内存安全语言。 

就谷歌而言,C 和 C++ 现在只占所有新代码的一半不到。事实上,最新版本的 Android 13 是第一个用内存安全语言编写大部分代码的系统。对许多开发者来说,Rust 取代了 C 和 C++——Rust 是一种专注于创建安全代码的高效编程语言,甚至国家安全局也在敦促公司采用内存安全的编程语言。

然而,转换内存安全语言是不够的。虽然这些语言大幅降低了程序员编写不安全代码的可能,但每种语言都有不同的保护级别。出于这个原因,NSA 还建议开发人员使用各种应用程序安全工具,从编译器选项到静态扫描器再到运行时分析,尽可能地强化应用程序。

美国国家安全局在报告中表示:“软件分析工具可以检测到内存管理问题,操作环境选项也可以提供一些保护,但内存安全软件语言提供的固有保护可以防止或减轻大多数内存管理问题。”

另外,Veracode 的 Wysopal 也指出:“虽然内存安全编程语言并不是解决软件漏洞问题的独立解决方案,但它们为开发人员提供了指导,他们可以避免一些最严重的编程错误。”

目前,还很难概括并解释内存安全语言中漏洞数量较少的原因,因为它们的使用方式不同。但如果使用两种不同的语言来完成相同的任务,并且其中一种是内存安全语言时,那么一般它的漏洞就会更少,也不那么严重。

本文文字及图片出自 CSDN

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注