向内存安全语言迁移的五大挑战

近日,白宫国家网络主任办公室(ONCD)在题为《回归基础构件:通往安全软件之路》的报告中呼吁开发者放弃C、C++语言,转而使用"内存安全的编程语言",例如Rust语言。

传统编程语言C/C++虽然强大,但一直饱受内存安全漏洞的困扰。这些漏洞不仅复杂难懂,而且极易造成系统崩溃等严重后果。为了解决这一难题,近年来内存安全语言逐渐兴起,并有望成为未来编程语言的主流。

近日,helpnetsecurity采访了开源安全基金会(OpenSSF)的总经理Omkhar Arasaratnam,探讨了业界转向内存安全语言的挑战与策略,内容整理如下:

内存安全语言的优势

内存安全漏洞已经存在了半个多世纪。它本质上是将程序员从繁琐的内存管理工作中解脱出来。C/C++要求程序员手动分配和释放内存,这不仅复杂易错,还需要时刻追踪内存的使用情况,以免出现内存泄露等问题。而Java、Rust、Python和JavaScript等现代语言则通过自动内存管理的方式,让程序员将精力集中在核心逻辑的编写上,避免陷入低级内存管理的泥潭。

在操作系统内核、系统编程等高危场景下,内存安全语言的优势尤为突出。操作系统内核拥有整个系统的最高权限,任何内存安全漏洞都可能导致系统崩溃甚至信息泄露。

尽管熟练的程序员可以使用C/C++等非内存安全语言避免内存漏洞,但现实情况并不乐观。微软曾经统计过自家产品的漏洞,其中70%都与内存安全问题相关。谷歌针对安卓系统进行的类似研究也得到了相似的结论:90%的安卓系统漏洞都与内存安全有关。

Go、Python、Rust和Java等语言都是优秀的内存安全语言范例。其中,Rust有望成为Linux内核的第二个官方支持语言。这将允许开发者用完全内存安全的语言重写Linux内核的部分关键代码。

迁移的五大挑战

向内存安全语言迁移并非易事,开发者和企业需要面对五大挑战:

  • **开发者培训和认证滞后:**现有开发人员需要学习新语言,或者招聘熟悉内存安全语言的人才。同时,调试和构建系统也需要进行相应调整以支持新语言,相关的培训和认证服务相对滞后。

  • **硬件支持有限:**C/C++等老牌语言可在几乎所有平台上运行,而Rust等新兴语言的硬件支持则相对有限。

  • **监管要求:**一些安全关键型系统有着严格的技术和安全需求,在新语言缺乏相关认证的情况下,可能无法轻易迁移。

  • **潜在Bug:**将老代码移植到新语言可能会引入新的Bug。即使是经验丰富的程序员,也可能因为重写过程中的细微差别导致程序运行结果与预期不符,从而产生线上故障。

  • 部署阻力:关键基础设施系统内存安全代码的重新部署面临挑战

迁移策略:安全优先

用Rust重写所有现有代码显然并不现实。OpenSSF建议开发者在开启新项目时优先考虑使用内存安全语言,同时将Rust应用于关键代码路径,例如身份验证、授权、加密以及处理网络或用户输入的部分。

虽然内存安全语言并非灵丹妙药,但却是提升代码安全性的重要一步。通过使用内存安全语言,程序员可以将更多精力放在核心逻辑的开发上,避免在低级内存管理上浪费时间和精力。

对于难以迁移的遗留代码,OpenSSF提供了《C/C++加固指南》,帮助开发者在不大幅改动既有代码库的情况下提升安全性。

需要注意的是,关键基础设施的工业控制系统通常难以通过企业网络进行更新,因此重新部署安全代码可能比重写本身更加耗时。

OpenSSF鼓励社区在开始新项目时考虑使用Rust进行编写,并根据安全优先级将Rust用于关键代码路径(经常被滥用或攻击的部分,或者"皇冠上的宝石"的关键区域),例如从身份验证、授权、加密以及从网络或用户获取输入内容的代码。

内存安全语言的未来

在某些关键领域,虽然新兴语言的安全性优势非常诱人,但贸然迁移反而会带来风险。预计内存安全语言并不会在所有行业成为标准,一些对稳定性要求极高的领域出于谨慎考虑,可能会推迟采用内存安全语言。

不过,从长远来看,使用内存安全语言来开发新项目具有普遍意义。例如,Alpha-Omega公司资助了用Rust开发的Rustls项目,旨在实现更安全的TLS和QUIC协议。通过使用内存安全语言,业界可以避免类似于OpenSSL Heartbleed漏洞那样的安全事件。

教育和认证是关键

教育和培训是网络安全最强大的基础防线之一。如今许多小学已经开始将Python作为编程语言入门课程。OpenSSF希望未来能够尽早将Rust等其他内存安全语言引入基础教育。

此外,Rust基金会也提供了丰富的学习资源,例如备受好评的书籍《Rust编程语言》以及正在开发的培训和认证项目。通过积极的学习和社区协作,内存安全语言有望在未来发挥更大的作用。

声明:本文来自GoUpSec,版权归作者所有。

相关推荐
用户962377954483 天前
VulnHub DC-3 靶机渗透测试笔记
安全
叶落阁主4 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
用户962377954486 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机6 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机6 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954486 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star6 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954486 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher8 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行11 天前
网络安全总结
安全·web安全