美国国会上周五通过的2023财年综合拨款法案中包含一份“圣诞彩蛋”,倡导开发者使用可支持内存安全的编码语言,以阻止网络对手利用绝大多数软件漏洞。
“有史以来第一次,国会将内存安全纳入法律,要求国家网络总监研究政府层面的内存安全问题。总体法案预计将在本周通过。为在参议院期间参与制定这项法规感到自豪!”知名安全研究员Jack Cable昨天发布推文称。
Cable推文中引用的法案原文采用了更保守的用词,称“鼓励”国家网络总监研究和报告内存安全问题,而非“要求”,并提到国家网络总监办公室的领导作用仍在不断变化。
非内存安全语言存在较高安全隐患
与此同时,美国国家安全局和网络安全与基础设施安全局一直在密切关注编码语言的影响,承认多数语言并不会自动检查和控制软件开发者的内存管理方法。
网络安全与基础设施安全局高级技术顾问Bob Lord在内部网络安全咨询委员会12月6日的会议上表示,“我们年复一年,甚至可以说十年如一日地发现各类漏洞,而其中约有三分之二”跟内存管理问题有关。
在11月公布的一份信息表中,NSA表示,“质量低下或粗糙的内存管理设计,可能令恶意黑客获得可乘之机,例如随意令程序崩溃、或者篡改正在执行的程序指令以完成任何恶意操作。”
内存安全语言可解决问题,但性能消耗大
NSA认为“软件程序的内存管理机制是预防各类漏洞、保障程序健壮性的核心所在”,并建议开发者应尽可能使用内存安全语言。
典型内存安全语言包括JavaScript、Ruby、Python等。NSA指出,与C、C++等常见的非内存安全语言不同,内存安全语言可以“控制内存的分配、访问和管理方式,在很大程度上提供安全保护。”
当然,这其中也存在着权衡取舍。内存安全语言的默认检查可能会耗费大量时间和开发资源。
NSA表示,“对于极端强调内存保护的语言,即使是简单程序的编译也涉及大量检查和保护工作。必须承认,内存安全也带来了高昂的性能和灵活性成本。”
另一方面,手动检查代码中的内存管理错误同样耗时耗力,考虑到可能引发的网络攻击后果,其成本可能更为沉重。
美国政府呼吁采用内存安全语言
在12月6日的会议上,网络安全与基础设施安全局长Jen Easterly强调了技术在“设计层面上保障安全”的重要意义。她认为应当“继续呼吁软件开发企业以完全透明的方式,从设计出发构建切实安全的产品。”
除了鼓励开发商改用内存安全编程语言之外,NSA的文件还列出了推荐工具,可用于测试应用程序是否存在易遭对手利用的内存管理错误。
考虑到开发人员已经习惯于使用非内存安全语言的软件库,并积累起大量相关专业知识,国安局承认这种开发范式转换绝非易事。
Lord总结称,“好消息是,新兴的内存安全编程语言已经存在,其他配套技术、硬件和保障性元素也陆续问世。所以,我们已经有了可行的解决方案。接下来的重点是提高人们的安全意识,现在各相关组织是时候行动起来了。”
转自 安全内参,原文链接:https://www.secrss.com/articles/50499
封面来源于网络,如有侵权请联系删除