CISA:多数重要的开源项目未使用内存安全代码

admin 2024年6月27日19:12:20评论3 views字数 1390阅读4分38秒阅读模式

CISA:多数重要的开源项目未使用内存安全代码聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士

CISA:多数重要的开源项目未使用内存安全代码
美国网络安全和基础设施安全局 (CISA) 对172个关键的开源项目开展了它们是否易受内存缺陷攻击的调查。该报告由美国联邦调查局 (FBI)、澳大利亚信号局 (ASD) 和澳大利亚网络安全中心 (ACSC) 以及加拿大网络安全中心 (CCCS) 联合签名,是对2023年12月发布的《内存安全路线图案例》的跟进研究,旨在提醒人们意识到内存安全代码的重要性。
CISA:多数重要的开源项目未使用内存安全代码
内存安全
CISA:多数重要的开源项目未使用内存安全代码

内存安全语言是指旨在阻止常见的与内存相关的错误的编程语言,这些错误包括缓冲溢出、释放后使用和其它内存损坏类型。这些编程语言自动管理内存,而非依赖于程序人员执行安全内存分配和解除分配机制。

现代安全语言系统的一个例子是 Rust 的借用检查器,它会消除数据竞争。其它语言如 Golang、Java、C#和Python通过垃圾回收来管理内存,以自动化方式重新收回被释放的内存以阻止它们遭利用。

内存不安全语言是指不提供内置内存管理机制的语言,他们将这个责任转嫁给开发人员,从而增加了出现错误的可能性。这类语言包括C、C++、Objective-C、Assembly、Cython 和D。

广泛使用的开源代码是不安全的
CISA:多数重要的开源项目未使用内存安全代码

报告审计了172个广泛部署的开源项目,发现超过一半的项目包含内存不安全代码。

该报告的主要发现如下:

  • 52%的开源项目中包括使用内存不安全语言编写的代码。

  • 55%的代码使用内存不安全语言编写。

  • 最大规模的项目很大比例使用内存不安全语言编写。

  • 在按照代码总行数排列的十大项目中,每个项目的内存不安全代码总行数占比超过26%。

  • 这些大型项目中内存不安全代码总行数的中位数比例是63.5%,其中四个项目占比超过94%。

  • 即使是使用内存安全语言编写的项目也经常依赖于以内存不安全语言编写的组件。

一些值得关注的案例包括 Linux(不安全代码的比例95%)、Tor(93%)、Chromium(51%)、MySQL Server(84%)、glibc(85%)、Redis (85%)、SystemD (65%) 和 Electron (47%)。

内存不安全语言使用比例

项目数量

所有项目占比

内存不安全项目占比

0%

82

48%

>0%,≤25%

31

18%

34%

>25%,≤50%

12

7%

13%

>50%,≤75%

23

13%

26%

>75%,≤95%

20

12%

22%

>95%,≤100%

4

2%

5%

CISA 解释称,软件开发人员面临多种挑战,常常不得不使用内存安全语言,如资源限制和性能要求等。当执行底层功能如网络、加密和操作系统功能时更是如此。

CISA 在报告中指出,“我们发现很多重要的开源项目部分使用内存不安全语言编写,有限的依赖分析表明项目通过 继承了使用内存不安全语言编写的代码。在性能和资源限制是重要因素的情况下,我们发现并认为内存不安全语言会被继续使用。”

CISA 还强调了开发人员禁用内存安全性能的问题,或者是错误或者是故意为之,以满足特定要求,导致即使使用理论上更安全的构建块时,仍然存在风险。最后,CISA建议软件开发人员使用内存安全语言如 Rust、Java和GO来编写新代码并将现有项目尤其是关键组件的语言转化到这些语言。

另外,CISA建议遵守安全编码实践,仔细管理和审计依赖,持续测试包括静态分析、动态分析和模糊测试,检测并解决内存安全问题。

原文始发于微信公众号(代码卫士):CISA:多数重要的开源项目未使用内存安全代码

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月27日19:12:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CISA:多数重要的开源项目未使用内存安全代码https://cn-sec.com/archives/2892400.html

发表评论

匿名网友 填写信息