Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >白宫发文,呼吁开发者放弃C、C++:Rust被「钦点」内存安全

白宫发文,呼吁开发者放弃C、C++:Rust被「钦点」内存安全

作者头像
机器之心
发布于 2024-03-07 05:48:19
发布于 2024-03-07 05:48:19
3070
举报
文章被收录于专栏:机器之心机器之心

机器之心报道

编辑:杜伟、小舟

近年来,C、C++ 编程语言成了美国官方的「眼中钉」,而内存安全的 Rust 等语言摇身一变成了「新宠」。

近日,在一份 19 页的报告《回归基础构件:通往安全软件之路》中,白宫国家网络主任办公室(ONCD)呼吁开发者使用「内存安全的编程语言」,比如 Rust 语言。报告指出,从一开始就选择内存安全的编程语言,是以安全设计方式开发软件的重要途径。

此外,ONCD 表示,报告中的建议是与包括科技公司、学术界和其他机构合作制定的,并收集了包括惠普、埃森哲和 Palantir 在内等多家科技公司支持报告的意见。

报告地址:https://www.whitehouse.gov/wp-content/uploads/2024/02/Final-ONCD-Technical-Report.pdf

其实,这并不是美国官方机构第一次呼吁放弃使用 C 和 C++ 了。

去年 12 月,美国网络安全和基础设施局(CISA)联合其他机构颁发了一份《内存安全路线图指南》, 其中就指出了 C 和 C++ 是内存不安全的编程语言,并呼吁软件开发商采用 Rust、Java 等其他内存安全的编程语言。

来源:https://www.cisa.gov/sites/default/files/2023-12/The-Case-for-Memory-Safe-Roadmaps-508c.pdf

放弃 C、C++,转向 Rust,只为内存安全

既然强调了要使用内存安全的编程语言,那首先来了解一下什么是内存安全。所谓内存安全是指防止处理内存访问时出现 bug 和漏洞,比如缓冲区溢出和悬空指针。

内存不安全的危害有多大呢?2019 年,微软安全工程师报告的数据是:大约 70% 的安全问题是由内存安全问题引起的。2020 年,谷歌针对在 Chromium 浏览器发现的 bug 也报告了类似的数据。

对于编程语言而言,C 和 C++ 都允许使用直接内存地址来进行任意指针运算,并且没有边界检查。报告中指出,专家发现了一些编程语言既缺乏与内存安全相关的特征,又在一些关键系统中具有高度扩散性,以 C 和 C++ 为代表。因此,C 和 C++ 被认为是「不安全的」编程语言。

与 C 和 C++ 相对应,Rust 被认为是内存安全编程语言的典型示例。Rust 是一门系统编程语言,专注于安全,尤其是并发安全。它支持函数式和命令式以及泛型等编程范式的多范式语言,且 TensorFlow 等深度学习框架也把它作为一个优秀的前端语言。

在程序员问答网站 Stack Overflow 2021 年度开发者调查报告中,Rust 语言成为最受开发者喜爱的编程语言。Rust 在系统编程领域很受欢迎,原因之一就是它可以帮助消除与内存相关的安全漏洞。

Rust 内存安全的特性早已得到业内验证。2021 年 4 月,谷歌就宣布 Android 加入对 Rust 语言支持。原因是 C 和 C++ 中的内存安全 bug 是最难解决的错误源,谷歌已经投入了大量的精力和资源来检测、修复和缓解这类 bug,并有效地防止了大量 bug 进入 Android 版本。

然而,尽管做出了这些努力,内存安全 bug 仍然是稳定性问题的主要原因,它在 Android 严重安全漏洞中长期占据大约 70% 的比例。因此,谷歌为操作系统开发者增加了第 3 个选择 Rust。

华盛顿大学计算机科学教授 Dan Grossman 表示,几十年来,大家都了解 C 和 C++ 的危险,现在终于迎来了推动内存安全编程语言的好时机,毕竟已经有了实用且成熟的替代方案。

他也认为,摆脱 C 和 C++ 并不是一朝一夕就能完成的,尤其是在嵌入系统中。不过,随着 Rust 等其他编程语言在系统软件中的更广泛应用, 这一进程预计会加快。

对于官方对 C 和 C++ 的态度,更多的人似乎并不买账。

有人认为现代 C++ 是内存安全的,所有操作系统都使用 C 或者 C++ 进行编程。也有人认为,即使 C++ 不能算是内存安全,但现代 C++ 拥有更多的「护栏」,并且成本低甚至不用花钱。

对于被「钦点」内存安全的 Rust,有人觉得它的支持程度没有那么高,也不值得集成到政府系统中。

除了 Rust,内存安全编程语言还有哪些

2022 年 11 月,美国国家安全局 (NSA) 发布了一份网络安全信息表,详细介绍了它认为内存安全的编程语言

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

以上这些编程语言的流行度如何呢?2024 年 2 月的编程语言流行度指标 TIOBE 显示,在编程方面,Python 排名第一,C# 排名第五,Java 排名第四,JavaScript 排名第六,Go 排名第八,Delphi/Object Pascal 排名第 12,Swift 排名第 16,Rust 排名第 18,Ruby 勉强排名第 20。

可以看到,大多数 NSA 选择的语言都在前 20 名中,只有 Ada 不在,但前十名只有 5 种。

来源:https://www.tiobe.com/tiobe-index/

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

这份报告还回顾了阿波罗 13 号任务,NASA 将这次任务归类为「成功的失败」。该任务本身遭遇了灾难性的失败,三名宇航员临时进行维修并缓解了一些问题,以便安全返回家园。该报告指出:内存安全代码对于太空计划来说是非常重要的。人类探索太空应该使用一种内存安全语言,一种尽可能接近内核的语言,以免将来发生事故。

随着世界上越来越多的地方变得数字化,更好的编码变得越来越重要,不良代码可能会被恶意使用。

Rust 语言

Rust 语言是由 Mozilla 主导开发的通用、编译型编程语言。设计准则为「安全、并发、实用」,支持函数式、并发式、过程式以及面向对象的编程风格。

Rust 语言最突出的优势就是可以提供内存安全保证,而且没有额外的性能损失。在传统的系统级编程语言( C/C++) 的开发过程中,经常出现因各种内存错误引起的崩溃或 bug ,比如空指针、野指针、内存泄漏、内存越界、段错误、数据竞争、迭代器失效等等。

内存问题是影响程序稳定性和安全性的重大隐患,并且是影响开发效率的重大因素。谷歌和微软两大科技巨头曾表示:旗下重要产品程序安全问题 70% 由内存问题引发,并且这两个巨头都考虑利用 Rust 语言来解决内存安全问题。

此外,Rust 还具有优秀的跨平台性,支持交叉编译,对嵌入式环境同样友好。

然而,Rust 语言也有一些棘手的缺点。

首先,由于 Rust 存在一些特殊的语法,因此初学者入门稍显困难,例如「生命周期(lifetime)」。相比之下,Python、Java 等语言更加简单、易学。但如果你已经掌握了 C++ 语言,学习 Rust 语言就容易得多,因为借鉴了大量 C++ 的语法。

其次,Rust 语言的编译器检查非常严格,开发过程的大多数时间都是在解决编译问题。不过,一旦编译通过,开发人员就不需要关心内存安全,内存泄漏等头疼问题,只需关注业务逻辑。

参考链接:

https://www.tomshardware.com/software/security-software/white-house-urges-developers-to-avoid-c-and-c-use-memory-safe-programming-languages

https://www.whitehouse.gov/oncd/briefing-room/2024/02/26/memory-safety-statements-of-support/

© THE END

转载请联系本公众号获得授权

投稿或寻求报道:content@jiqizhixin.com

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
拜登:“一切非 Rust 项目均为非法”
“程序员编写代码并非没有后果,他们的⼯作⽅式于国家利益而言至关重要。”白宫国家网络总监办公室(ONCD,以下简称网总办)在本周一发布的报告中说道。在该报告中,拜登政府希望软件开发人员尽量使用 Rust 这样的内存安全编程语言,并放弃 C 和 C++ 等安全性薄弱的语言。另外,参议院还强调会努力为内存安全立法。
深度学习与Python
2024/02/29
5600
拜登:“一切非 Rust 项目均为非法”
美国CISA建议放弃C/C++, 软件生态再起波澜
美国网络安全与基础设施安全局 (CISA) 发布了一份名为 《the case for memory safe roadmaps》的文件,详细介绍了软件厂商应如何过渡到内存安全编程语言 (MSL),以消除内存安全漏洞。
通信行业搬砖工
2023/12/11
3880
美国CISA建议放弃C/C++, 软件生态再起波澜
为了避免内存攻击,美国国家安全局提倡Rust、C#、Go、Java、Ruby 和 Swift,但将 C 和 C++ 置于一边
本文翻译自两篇文章,第一篇是对美国国家安全局在“软件内存安全”网络安全信息表的解读,第二篇是普及什么是内存安全,为什么它很重要?
沙漠尽头的狼
2022/11/25
1.9K0
为了避免内存攻击,美国国家安全局提倡Rust、C#、Go、Java、Ruby 和 Swift,但将 C 和 C++ 置于一边
您是否优先考虑内存安全的编程语言?
来自五个不同国家政府的网络安全机构去年 12 月呼吁开发人员使用内存安全的编程语言。你准备好了吗?
用户5166556
2024/04/10
4020
您是否优先考虑内存安全的编程语言?
C++ 会变成像 Rust 一样的安全语言吗?
对于如何使 C++ 成为一种类似 Rust 及其他内存安全语言(MSL)的安全语言,C++ 专家、ISO C++ 委员会主席 Herb Sutter 在最近的一篇文章中表达了他的看法。他的方法包括依赖工具(与其他 MSL 一样)、推广安全语言特性、不安全特性需要显式启用等等。
深度学习与Python
2024/04/12
2030
C++ 会变成像 Rust 一样的安全语言吗?
【翻译】微软对 Rust 的热爱是怎么回事?
微软已经管理了几种流行的编程语言 - C#,TypeScript,F#,那为什么微软也和广大开发者一样也喜欢 Rust 呢?
MikeLoveRust
2020/07/14
1.2K0
微软IT故障提醒:Rust比C/C++更好
上周,全球范围内的 Windows 系统都出现了蓝屏死机 (BSOD),原因是安全供应商 CrowdStrike 提供的错误配置更新。
云云众生s
2024/07/25
1830
抛弃 C / C++!微软官宣:请用 Rust 编写 Windows 驱动!
在这众多大厂之中,微软对于 Rust 的重视与支持力度也一直未减。继 5 月效仿 Linux 用 Rust 重写部分 Windows 内核后,近来微软在拥抱 Rust 上又进了一步:微软在 GitHub 中发布了一系列开发工具包,让开发者可以使用 Rust 语言来编写 Windows 驱动程序。
C语言与CPP编程
2023/10/09
7730
抛弃 C / C++!微软官宣:请用 Rust 编写 Windows 驱动!
2024年谷歌工程师Rust心得:重写C++和Go系统的6大经验
2024年3月26日,谷歌安卓部门的编译器和运行时团队负责人Lars Bergstorm在英国伦敦的Rust Nation UK技术大会上,跟大家分享了他们的团队几百名工程师在几年内用Rust重写了几十个C++和Go系统的六点心得哦。
程序员吾真本
2024/04/09
1.6K0
2024年谷歌工程师Rust心得:重写C++和Go系统的6大经验
呼吁停用 C/C++,微软 Azure CTO 更青睐 Rust
9 月 20 日,微软 Azure 现任 CTO、Sysinternals 主要开发者 Mark Russinovich 在其个人推特账号发表动态称是时候停止使用 C/C++启动任何新项目,并建议在需要使用 noc-GC 语言的场景下使用 Rust 编程语言。 Rust 由 Graydon Hoare 设计,而后在 Mozilla 成型,Rust 设计时借鉴了许多 C++ 的设计思想如并发特性等,也以高性能著称,还实现了内存安全。2015 年 Rust 作为 C/C++ 的替代品开始引起人们的关注,正因如此
IT大咖说
2022/09/27
7630
呼吁停用 C/C++,微软 Azure CTO 更青睐 Rust
微软喜提Rust拟替代C/C++?凭什么!
今日 @开源中国 一则消息引发热议:微软计划将 Rust 作为 C 和 C++ 的安全替代品。
博文视点Broadview
2020/06/10
1.6K0
微软喜提Rust拟替代C/C++?凭什么!
微软计划使用 Rust 取代 C 和 C++
近日,微软安全响应中心(MSRC)团队在官网更新文章,就近日提出的最新计划,即未来将使用 Rust 作为 C、C++ 以及其他编程语言的替代方案以改善应用程序的安全性的计划,从空间内存安全、时间内存安全、数据竞争等方面进行了进一步的深入补充。
新智元
2019/07/26
1.2K0
微软计划使用 Rust 取代 C 和 C++
谷歌:Android 内存安全漏洞比例下降与使用 Rust 相关
根据谷歌安全消息,十多年来,内存安全漏洞一直占整个产品和整个行业漏洞的 65% 以上。但近期在 Android 上,内存安全漏洞显着减少,并且相关的漏洞严重性也有所下降。 “从 2019 年到 2022 年,内存安全漏洞的年度数量从 223 个下降到 85 个,”Android 安全工程师 Jeffrey Vander Stoep 在博客文章中说道。Jeffrey 表示,这种下降与放弃内存不安全编程语言的努力相吻合,这里的“内存不安全编程语言”指的是 C/C++。 从去年的 Android 12 开始,R
深度学习与Python
2023/03/29
4550
谷歌:Android 内存安全漏洞比例下降与使用 Rust 相关
​Rust最受喜爱却少有人用,Python仅排第六,2021全球开发者调查报告出炉
来源:机器之心 本文约2100字,建议阅读8分钟 当前最受开发者喜爱的编程语言是 Rust 语言,而 Python 的受喜爱程度仅位居第六。 在最近出炉的 Stack Overflow 全球开发者调查报告中,Rust 成为最受开发者喜爱的编程语言,Python 语言受开发者喜爱程度仅排第六。但是,备受好评的 Rust 语言也面临着「好用但没多少人用」的尴尬局面,在最常用编程语言排名中未进前十。 「编程语言之争」一直是计算机界不会休止的讨论话题。Python 作为编程语言中的佼佼者,一直是最受喜爱的编程语言之
数据派THU
2023/03/29
6770
​Rust最受喜爱却少有人用,Python仅排第六,2021全球开发者调查报告出炉
Windows 全球宕机造成百亿损失,肇事者却仅给出 10 美元赔偿? 微软 Azure CTO 借机力推 Rust 上位!
上周,网络安全公司 CrowdStrike 因一次配置更新出错,导致全球数百万台采用 Windows 系统的计算机崩溃。此番宕机被广泛视为有史以来影响最大的灾难,导致阿姆斯特丹、柏林、迪拜、伦敦和美国各地的机场航班延误,还导致数家医院停止手术,全球无数企业陷入瘫痪。
深度学习与Python
2024/07/26
1690
Windows 全球宕机造成百亿损失,肇事者却仅给出 10 美元赔偿? 微软 Azure CTO 借机力推 Rust 上位!
编程语言大战2024:Python领跑,Java保持稳定,Rust崛起
2024年,Python巩固了其在AI领域的统治地位,Java证明了其在企业领域的持久影响力,而Rust在内存安全编程方面也取得了进展,这标志着全球三大领先编程语言具有变革性的一年。
云云众生s
2024/12/31
2310
Rust最受喜爱却少有人用,Python仅排第六,2021全球开发者调查报告出炉
机器之心报道 机器之心编辑部 在最近出炉的 Stack Overflow 全球开发者调查报告中,Rust 成为最受开发者喜爱的编程语言,Python 语言受开发者喜爱程度仅排第六。但是,备受好评的 Rust 语言也面临着「好用但没多少人用」的尴尬局面,在最常用编程语言排名中未进前十。 「编程语言之争」一直是计算机界不会休止的讨论话题。Python 作为编程语言中的佼佼者,一直是最受喜爱的编程语言之一。但最近程序员问答网站 Stack Overflow 2021 年度开发者调查(Developer Surve
机器之心
2023/03/29
3320
Rust最受喜爱却少有人用,Python仅排第六,2021全球开发者调查报告出炉
Rust 视界周刊 Week 5 | 驳 “Rust 等内存安全语言的安全性并不优于C++”
FOSDEM 2023[1] 是软件开发人员见面、分享想法和协作的免费活动。每年,来自世界各地的数千名自由和开源软件开发人员齐聚布鲁塞尔。你不需要注册。只需出现并加入!
张汉东
2023/03/06
1.1K0
Rust 视界周刊 Week 5 | 驳 “Rust 等内存安全语言的安全性并不优于C++”
安全设计白皮书 | 谷歌对内存安全的洞察
2024 年 3 月 4 号,Google 官方博客[1]发文,宣布《安全设计 - Google 对内存安全的洞察》白皮书[2]。
张汉东
2024/03/12
7590
安全设计白皮书 | 谷歌对内存安全的洞察
C和C++不安全?谷歌宣布Android加入对Rust语言支持
机器之心报道 机器之心编辑部 Rust 越来越流行,开始跨入 Android 领域。谷歌宣布 AOSP (Android Open Source Project) 现已支持使用 Rust 开发 Android 操作系统。 Android 系统涉及很多组件,开发者会根据正在开发的 Android 部分而选择不同的编程语言。对于应用开发者来说,Java 和 Kotlin 是比较流行的选择;而对于从事操作系统以及内部底层的开发人员来说,C 和 C++ 是比较好的选择。 近日,谷歌为操作系统开发者增加了第 3 个
机器之心
2023/03/29
6480
C和C++不安全?谷歌宣布Android加入对Rust语言支持
推荐阅读
相关推荐
拜登:“一切非 Rust 项目均为非法”
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档