用心打造
VPS知识分享网站

NSA和CISA敦促开发人员使用可提高内存安全性的编程语言

NSA 和CISA正在敦促开发人员采用可降低内存安全漏洞风险的编程语言。

长期以来,科技界一直在尝试解决这个问题。他们的想法是,只要有足够的培训、智能工具和细致的工作,开发人员就能避免这些错误。但证据表明,这种方法效果并不理想。

NSA 和 CISA 敦促转向使用可提高内存安全性的语言

计算机内存就像一面巨大的邮箱墙。程序运行时,会被分配几个邮箱来存储信息。当程序犯错,将信息放入错误的邮箱,或者尝试从不属于自己的邮箱读取信息时,就会发生内存安全漏洞。

这听起来可能微不足道,但却是一些最臭名昭著的网络攻击的根源。还记得“心脏出血”漏洞吗?它影响了数十万个网站,并泄露了数百万人的私人数据,其中包括医院的患者。另一个漏洞“BadAlloc”则影响了关键基础设施和约1.95亿辆汽车。 

这些并不是小问题;而是由于简单的内存安全错误而导致的广泛灾难。

2019年的一项研究表明,苹果iOS和macOS系统中近三分之二的安全漏洞是由内存问题引起的。谷歌Project Zero团队发现,他们分析的真实黑客攻击中,75%都利用了这类漏洞。

内存安全语言:构建软件的更智能方式

NSA 和 CISA 所推动的解决方案是从一开始就建立安全性;即所谓的“安全设计”理念。

Rust、Java、Go 和 Python 等内存安全语言 (MSL) 不是编写代码然后测试其中的错误,而是旨在从一开始就使这些内存安全错误的整个类别无法创建。

边界检查就像一个守卫,阻止程序将数据写入指定区域之外,从而防止缓冲区溢出错误。自动内存管理就像一个在后台运行的清理小组。

有些语言,例如 Java 和 Go,使用“垃圾收集器”来自动查找并释放不再需要的内存。其他语言,例如 Rust,则使用“所有权”系统,语言本身会跟踪谁有权随时使用某块内存。这两种方法都有助于防止“释放后使用”错误,即程序试图使用已经释放的内存。

Android 团队将其付诸实践,并取得了惊人的成果。早在 2019 年,他们 76% 的安全漏洞都与内存安全有关。意识到必须有所改变后,他们决定所有新代码都将使用 Rust 和 Java 等内存安全语言编写。

他们没有尝试一次性重写整个系统,因为那将是一项艰巨的任务。相反,他们专注于确保所有新部件都能安全构建。结果如何?到 2024 年,内存安全漏洞占比已骤降至 24%。

提高内存安全性至关重要

当然,切换并非像拨动开关那么简单。对于拥有数百万行现有代码的公司来说,彻底重写代码通常是不可能的。NSA和CISA深知这一点,并建议采取更切实可行的循序渐进的方法。

旅程始于对任何新项目或旧项目添加的新功能使用 MSL。对于现有软件,团队可以识别风险最高的部分(例如,处理网络连接或处理来自互联网的文件的代码),并专注于重写这些关键组件。

这项旨在提升内存安全性的变革需要在培训和新工具方面进行真正的投资。然而,各机构认为,这笔前期成本很容易被安全事故减少、停机时间减少以及软件可靠性提高带来的长期节省所抵消。

我们构建软件的方式为攻击者敞开了大门。采用内存安全语言是关闭这一漏洞的最有效方法之一,让我们的数字世界对每个人来说都更加安全可靠。这是一个巨大的变革,但至关重要。

赞(0)
未经允许不得转载;国外VPS测评网 » NSA和CISA敦促开发人员使用可提高内存安全性的编程语言
分享到