美国国家安全局敦促机构和企业采用内存安全编程语言

admin 2022年11月17日01:21:03安全新闻评论11 views1463字阅读4分52秒阅读模式

美国国家安全局敦促机构和企业采用内存安全编程语言

美国国家安全局(NSA)发布软件内存安全指南,敦促机构和企业弃用C和C++等老派编程语言,转向内存安全的编程语言,比如C#、Rust、Go、Java、Ruby和Swift。

这个美国政府机构中最大的情报部门在指南中写道:“NSA建议机构和企业尽可能使用内存安全语言,并通过编译选项、工具选项和操作系统配置等代码强化防御措施来加强保护。”

NSA的主要关切在于不法之徒可能会利用代码中内存管理不善的漏洞,而这种漏洞常见于能赋予程序员更多选择和灵活性的编程语言。

在示例方面,NSA举出了黑客通过缓冲区溢出或利用软件内存分配缺陷入侵系统的例子。

同时,内存安全语言综合采用编译时和运行时检查来自动封锁程序员失误所造成的漏洞。注意,尽管不能完全杜绝错误,但每减少一个都有帮助。比如说,涉及内存指针的不安全使用或并发线程间竞争的漏洞就能被此类编程语言捕获。

NSA表示:“恶意网络攻击者可能利用这些漏洞发起远程代码执行或形成其他有害影响,常可损害设备并成为大规模网络入侵的第一步。”

很明显,我们最好避免这种情况。

NSA网络安全技术总监Neal Ziring称,想要杜绝此类漏洞,开发软件时就必须始终使用内存安全语言和其他保护措施。

不过,NSA确实认识到“内存安全”有点儿用词不当,这个概念范围太广,各人理解不同。

内存安全也有其自身的挑战。比如说,由于特定工具链不会生成内存不安全代码,额外的固有保护可能会先拖慢开发,尽管减少漏洞和增强代码可维护性终能值回票价。从一种语言转换到另一种语言可谓ASCII的老大难问题了,有时候甚至都没法换。例如,Rust尽管功能强大,其学习曲线却很陡峭。

分析师公司SlashData的数据表明,2020年第一季度到2022年第一季度,Rust用户数量增长了两倍。Go语言也不遑多让,据称其开发者社区规模达到了330万人之巨。JavaScript则以1750万开发者在长达十年的时间里一直荣膺最流行编程语言称号。

至于C和C++,尽管普遍存在于当今计算机世界,但NSA与大多数人观点一致,都认为这两种编程语言很有问题。今年9月,微软Azure首席技术官Mark Russinovich摆明态度,认为现在就应该停止使用这两种久经考验的语言编写任何新项目了。

这位首席技术官承认,尽管自己偏向用Rust开发新工具,但“未来几十年(或更长时间里)仍有大量C/C++代码需要维护或发展”。就在发出此条推特的前一晚,Russinovich才往自己已有8.5万行的Sysinternals C/C++代码里又加进了几行。

网络安全公司Acronis首席信息安全官Kevin Reed向媒体透露:“我觉得NSA做得对。”

“某种程度上而言,地址空间布局随机化(ASLR)和堆栈保护等缓解措施不过是个创可贴,谈不上是完整解决方案;转向内存安全语言是好得多的选择。”Reed补充道,然后附和了Russinovich的看法。

“由于这些年来产出了大量C和C++代码,我不认为我们能立马看到效果,而且即使我们全都明天就开始使用Rust和Go,估计也得花上个几十年才能收拾干净这烂摊子。”

NSA《软件内存安全》
https://media.defense.gov/2022/Nov/10/2003112742/-1/-1/0/CSI_SOFTWARE_MEMORY_SAFETY.PDF


参考阅读
安全编程语言Rust迎来采用高峰
不常见编程语言成攻击利器
【调查】编程语言安全漏洞一览

原文始发于微信公众号(数世咨询):美国国家安全局敦促机构和企业采用内存安全编程语言

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月17日01:21:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  美国国家安全局敦促机构和企业采用内存安全编程语言 http://cn-sec.com/archives/1412209.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: