美国政府呼吁抛弃C和C++

东沛评科技 2024-03-01 19:06:34

如果你停止使用 C 或 C++ 编程语言,政府会更喜欢它。在一份新报告中,美国白宫国家网络主任办公室 (ONCD) 呼吁开发人员使用“内存安全编程语言”。该建议是美国总统拜登网络安全战略的一部分,是“确保网络空间基石安全”的举措。

内存安全是指防止处理内存访问的错误和漏洞。缓冲区溢出和悬空指针就是这样的例子。Java 由于其运行时错误检测检查而被认为是内存安全的语言。然而,C 和 C++ 都允许使用直接内存地址进行任意指针运算,并且不进行边界检查。

2019 年,微软安全工程师报告称,约 70% 的安全漏洞是由内存安全问题引起的。谷歌在 2020 年也报告了同样的数字,这次是针对 Chromium 浏览器中发现的漏洞。

报告中写道:"专家们发现,有几种编程语言既缺乏与内存安全相关的特征,又在关键系统中大量使用,如 C 和 C++,按照网络安全和基础设施安全局(CISA)开放源代码软件安全路线图的建议,从一开始就选择使用内存安全的编程语言,就是以安全设计方式开发软件的一个例子。"

这份长达 19 页的报告的目标是确保网络安全的责任不仅仅落在个人和小企业手中。相反,责任在于更大的组织、科技公司,最终是政府。

该报告详细介绍了它认为“不安全”的编程语言,即C和c++。我们不是在这里讨论编程语言的利弊,但有趣的是,报告并没有建议一种特定的语言来代替它们。我们被告知有“几十种内存安全的编程语言可以——而且应该——被使用。”

ONCD 要求公司和工程师采用软件开发的最佳实践并采用内存安全的硬件,以减少恶意行为者可以攻击的攻击面。该报告本身没有详细说明什么是内存安全编程语言。然而,2022 年 11 月,美国国家安全局 (NSA) 发布了一份网络安全信息表,详细介绍了它认为内存安全的编程语言。

NSA 建议的内存安全编程语言:

RustGoC#JavaSwiftJavaScriptRuby

建议的编程语言有多受欢迎?检查编程语言流行度指标TIOBE 指数,我们发现 Python 排名第一。在 NSA 的首选选项中,C# 排名第五,Java 排名第四,JavaScript 排名第六,Go 排名第八。排在最后的是 Swift(第 16 位)、Rust(第 18 位)和 Ruby(第 20 位)。因此,NSA 选择的语言位于前 20 名,但七种语言中只有四种受到开发人员“欢迎”。

该报告还呼吁更好地衡量软件安全性。ONCD 相信,更好的衡量标准使技术提供商能够在漏洞成为问题之前更好地计划、预测和缓解漏洞。

在第二部分(第 8 页),报告回顾了阿波罗 13 号任务,NASA 将这次任务归类为 "成功的失败"。这次任务发生了灾难性的故障,三名宇航员进行了临时修复,缓解了一系列问题,最终安全返回家园。对内存安全代码的需求也对太空计划产生了影响,报告详细指出,应使用内存安全语言,一种尽可能接近内核的语言,以免将来发生事故。

这份报告是美国政府采取的一系列措施中的最新一份。2023 年 3 月,拜登总统签署了一项网络安全行政命令,启动了保护软件和硬件的流程,同时也在科技行业建立了关系。

随着世界上越来越多的地方变得数字化,对更好的编码的需求变得更加重要。错误的代码会被恶意利用,造成漏洞。报告重点介绍了 2021 年 12 月的 Log4j 漏洞,在该漏洞中,一个名为 Log4Shell 的零日漏洞利用了开源 Java 日志库 Log4j。

0 阅读:3

东沛评科技

简介:感谢大家的关注