CISA 报告发现大多数开源项目都包含内存不安全的代码

超过一半的开源项目包含使用内存不安全的语言编写的代码, 美国网络安全和基础设施安全局的报告 已发现。内存不安全意味着代码允许执行可能破坏内存的操作,从而导致缓冲区溢出、释放后使用和内存泄漏等漏洞。

该报告的结果由美国联邦调查局、澳大利亚信号局的澳大利亚网络安全中心和加拿大网络安全中心联合发布,基于对 OpenSSF 保护关键项目工作组定义的 172 个关键项目的分析。

在这些项目的总代码行中,55% 是用内存不安全语言编写的,大型项目包含的代码更多。在数据集中 10 个最大的项目中,内存不安全代码占了四分之一以上,而其中的中位数比例为 62.5%。其中四个项目的内存不安全代码占比超过 94%。

什么是内存不安全的语言?

内存不安全的语言(如 C 和 C++)要求开发人员手动实施严格的内存管理实践,包括谨慎分配和释放内存。当然,错误是难免的,这些错误会导致漏洞,从而使攻击者能够控制软件、系统和数据。

另一方面,内存安全语言(如 Python、Java、C# 和 Rust)通过内置功能自动处理内存管理,并将责任转移给解释器或编译器。

看: 2024 年最值得学习的 10 门 Python 课程

报告的作者写道:“内存安全漏洞是最常见的软件漏洞类别之一,给软件制造商和消费者带来了与修补、事件响应和其他工作相关的巨大成本。”

他们还分析了三个用内存安全语言编写的项目的软件依赖关系,发现每个项目都依赖于用内存不安全语言编写的其他组件。

作者写道:“因此,我们确定,所分析的大多数关键开源项目,即使是那些用内存安全语言编写的项目,都可能存在内存安全漏洞。”

开源安全公司 Endor Labs 首席安全顾问兼 CISA 网络创新研究员 Chris Hughes 告诉 TechRepublic:“从每年各类漏洞利用情况来看,这些发现无疑对商业组织和政府机构都构成了风险,因为此类漏洞被广泛利用。它们通常是 最常被利用的漏洞类型 一年又一年。”

为什么内存不安全的代码如此普遍?

内存不安全代码之所以盛行,是因为它让开发人员能够直接操纵硬件和内存。这在性能和资源限制是关键因素的情况下非常有用,例如操作系统内核和驱动程序、嵌入式应用程序的加密和网络。报告的作者观察到了这一点,并预计这种情况将继续下去。

开发人员可能会直接使用内存不安全的语言,因为他们不知道或不担心风险。他们还可能故意禁用内存安全语言的内存安全功能。

然而,那些意识到风险并且不想合并内存不安全代码的人可能会无意中通过对外部项目的依赖来合并内存不安全代码。出于多种原因,执行全面的依赖关系分析具有挑战性,这使得内存不安全的依赖关系很容易被忽略。

首先,语言通常有多种机制来指定或创建依赖关系,这使得识别过程变得复杂。此外,这样做需要耗费大量的计算资源,因为需要复杂的算法来跟踪所有潜在的相互作用和副作用。

作者写道:“在每种编程语言堆栈和依赖图的某个地方,都会编写和执行内存不安全的代码。”

看: Aqua Security 研究发现内存攻击增加了 1,400%

Hughes 告诉 TechRepublic:“通常,在最近出现大量鼓励向内存安全语言过渡的活动之前,这些(内存不安全)语言已经被广泛采用和使用多年。此外,更广泛的开发社区也需要向更现代的内存安全语言过渡。

“将这些项目中的许多项目更改为内存安全语言会很困难,因为这需要维护人员投入资源和精力,才能重构/重写为内存安全语言。维护人员可能不具备内存安全语言方面的专业知识,即使他们有,他们也可能没有动力这样做,因为他们大多是无偿志愿者,他们创建和维护的项目没有得到任何补偿。”

他补充说,组织应该提供金钱奖励和其他资源来鼓励开源开发人员转换他们的代码,但也需要监控任何努力以确保实施安全编码实践。

降低内存不安全代码风险的建议

报告提到 CISA 的内存安全路线图案例 文件和技术咨询委员会的 内存安全报告 了解如何减少内存不安全语言的流行。这些建议包括:

  • 将现有项目转变为内存安全语言,因为最近的进步意味着它们现在可以与内存不安全语言的性能相媲美。
  • 使用内存安全的语言编写新项目。
  • 创建内存安全路线图,其中包括将内存安全编程集成到系统中以及解决外部依赖项中的内存安全问题的明确计划。
  • 通过确保第三方库和组件也是内存安全的或有缓解措施来管理外部依赖关系。
  • 使用内存安全的语言培训开发人员。
  • 从软件生命周期开始就优先考虑软件设计的安全性,例如遵守安全设计原则。

官员们为减少内存不安全代码的流行而做出的努力

近年来,美国联邦官员和研究人员一直致力于减少流通的内存不安全软件的数量。

一个 2022 年 10 月报告 《消费者报告》指出,“大约 60% 到 70% 的浏览器和内核漏洞(以及在 C/C++ 代码库中发现的安全漏洞)是由于内存不安全造成的。”随后,美国国家安全局发布了 软件开发人员如何防范内存安全问题

2023 年,CISA 主任 Jen Easterly 呼吁大学 教育学生记忆安全 和安全的编码实践。 2023年国家网络安全战略 并公布了实施方案,其中讨论了 投资内存安全语言与开源社区合作 进一步支持他们。同年 12 月,CISA 发布了 内存安全路线图案例 以及技术咨询委员会 内存安全报告

今年2月,白宫发布了一份报告,倡导使用内存安全语言和制定软件安全标准,并得到了SAP、惠普企业等大型科技公司的支持。

美国政府的努力得到了许多第三方团体的支持,这些团体的目标是减少内存不安全代码的盛行。OpenSSF 最佳实践工作组有一个专门的 内存安全特别关注 子组,而互联网安全研究组的 Prossimo 项目 希望“将互联网的安全敏感软件基础设施转移到内存安全代码中”。谷歌已经开发了 OSS-模糊 该服务使用自动模糊测试技术持续测试开源软件的内存安全漏洞和其他错误。

1720006168
#CISA #报告发现大多数开源项目都包含内存不安全的代码
2024-07-01 21:58:45

Leave a Reply

Your email address will not be published. Required fields are marked *

近期新闻​

编辑精选​