白宫敦促开发人员避免使用C和C++,使用“内存安全”编程语言:Rust、Go、C#、Java、Swift、JavaScript、Ruby、Python、Delphi/Object Pascal、Ada

白宫ONCD倡导开发人员使用内存安全语言,以降低安全漏洞风险。C/C++不在推荐之列,而像Python、C#、Java和Go等在NSA的列表中较为常见。报告强调了软件安全的重要性,并提及了Log4j漏洞作为实例。
摘要由CSDN通过智能技术生成

更新: 2024/2/29 08:28 PT

NSA 内存安全编程语言列表已更新,以反映信息表的 v1.1。

更新的文章

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

内存安全是指防止处理内存访问的错误和漏洞。缓冲区溢出和悬空指针就是这方面的示例。Java 被认为是一种内存安全语言,因为它具有运行时错误检测检查功能。但是,C 和 C++ 都允许使用直接内存地址和无边界检查进行任意指针算术。

2019 年,Microsoft 安全工程师报告称,大约 70% 的安全漏洞是由内存安全问题引起的。谷歌在 2020 年报告了相同的数字,这次是在 Chromium 浏览器中发现的错误。

“专家们已经确定了一些编程语言,它们既缺乏与内存安全相关的特征,又在关键系统(如C和C++)中具有很高的扩散性,”报告写道。“按照网络安全和基础设施安全局(CISA)的开源软件安全路线图的建议,从一开始就选择使用内存安全编程语言,这是以安全设计方式开发软件的一个例子。Z-Gantt战石智慧时间管理进度计划甘特图软件

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

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

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

  • Rust
  • Go
  • C#
  • Java
  • Swift
  • JavaScript
  • Ruby
  • Python
  • Delphi/Object Pascal
  • Ada

建议的编程语言有多受欢迎?检查 TIOBE 指数(编程语言流行度的指标),我们看到 Python 排名第一。在NSA的首选选项中,C#排在第五位,Java排在第四位,JavaScript排在第六位,Go排在第八位。排在后面的是 Delphi / Object Pascal 在 12 岁,Swift 在 16 岁,Rust 在 18 岁,Ruby 在 20 岁吱吱作响。因此,NSA选择的大多数语言都在前20名中,只有Ada缺失,但10种语言中只有5种在开发人员中“流行”。

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

在第二部分(第8页)中,该报告回顾了阿波罗13号任务,该任务被美国宇航局归类为“成功失败”。这次任务遭遇了灾难性的失败,三名宇航员为了安全返回家园而即兴维修并缓解了一些问题。对内存安全代码的需求也影响了太空计划,该报告详细说明了应该使用内存安全语言,一种尽可能接近内核的语言,以免我们在未来发生事故。

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

随着我们世界越来越多的数字优先,对更好编码的需求变得更加重要。恶意代码可以被恶意用于利用弱点。该报告重点介绍了 2021 年 12 月的 Log4j 漏洞,其中开源 Java 日志记录库 Log4j 通过一个名为 Log4Shell 的零日漏洞被利用

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值