美国网络安全与基础设施安全局 (CISA) 发布了一份名为“The Case for Memory Safe Roadmaps”的文件,详细介绍了软件厂商应如何过渡到内存安全编程语言 (MSL),以消除内存安全漏洞。
CISA 认为,内存安全错误经常会造成重大损失,需要加以杜绝;因此敦促企业和技术领导者密切关注软件开发中的内存安全。而 C 和 C++ 等编程语言就是内存不安全编程语言的典范;它们可能导致内存不安全代码,但仍然是当今使用最广泛的语言之一。
该指南文件由美国网络安全与基础设施安全局 (CISA)、国家安全局 (NSA)、联邦调查局 (FBI),以及澳大利亚、加拿大、英国和新西兰的网络安全机构联合制定。旨在敦促每家软件厂商的高级管理人员通过优先考虑实施 MSL 的设计和开发实践来降低客户风险;同时敦促他们创建并发布内存安全路线图,以便客户了解所面临的内存安全风险。
“MSL 可以消除内存安全漏洞。因此,过渡到 MSL 可能会大大降低投资于旨在减少这些漏洞或将其影响降至最低的活动的必要性。此外,将不安全的代码库迁移到 MSL 的投资将以更安全的产品的形式带来长期回报--这也抵消了过渡到 MSL 的部分前期成本。”
文件指出,微软约 70% 的 CVE 是内存安全漏洞(基于 2006-2018 年的 CVE),Mozilla 的 34 个关键/高危漏洞中有 32 个是内存安全漏洞。谷歌 Chromium 项目中所发现的漏洞,有约 70% 是内存安全漏洞;且 2021 年的零日漏洞中也有 67% 是内存安全漏洞。
虽然一些组织为了减少 C/C++ 内存不安全代码引入的风险,投入了大量资金用于开发人员培训。但 CISA 等机构认为,“虽然培训可以减少程序员可能引入的漏洞数量,但考虑到内存安全缺陷的普遍性,内存安全漏洞的出现几乎是不可避免的。”
鉴于此,他们建议组织放弃 C/C++,转而使用 C#、Go、Java、Python、Rust 和 Swift 等“内存安全语言”。
详情可查看完整文档。
相关阅读:
- 美国国家安全局建议从 C/C++ 切换到内存安全语言
- C++ 之父:Rust 等内存安全语言的安全性并不优于 C++