最近,Rust被NIST(美国国家标准与技术研究院) 纳入到其“安全的语言”列表,作为其软件保证指标和工具评估 (SAMATE) 的一部分。
Rust因为安全性而被广泛采纳和推广普及,但对其网络安全优点的更广泛认识才逐渐被其他领域的关注。Rust这样的内存安全语言将成为重要的基础设施,不仅对于试图防止数据损坏和空指针引用的企业组织来说很有意义,对于各国政府来也是更为重要。
在全球普遍重视信息和数据安全的情况下,需要适当引导推荐这样安全工具和安全措施。
概述
美国国家标准技术研究院 (NIST) 成立于1901年,是美国历史最悠久的物理科学实验室之一。
虽然NIST的成立,旨在通过标准化和测量帮助维持竞争性经济。现在,NIST隶属于商务部,专注于广泛的科学和技术领域,包括网络安全。NIST倡导可以帮助降低安全威胁和代码漏洞风险的工具、解决方案和框架。NIST的众多举措之一是软件保障指标和工具评估(SAMATE )项目。
SAMATE项目致力于通过开发支持软件工具评估的方法、衡量工具和技术的有效性以及识别工具和方法中的差距来改进软件保障。
安全的语言(Safer Languages)是SMATE的“软件安全保证功能类别”的一项功能。
简而言之,NIST建议使用具有内置安全功能的编程语言,这些安全功能受到维护者的积极监控和支持。
安全语言列表(Safer Languages)
2023年3月,由于Rust所有权(ownership)安全模型,NIST认为其可以保障安全,将其将添加到其更安全语言列表。
Rust所有权安全模型,在编译时保证内存安全和线程安全,无需垃圾收集器(GC)。可以保证用户编写高性能代码,同时消除许多错误类型。
Rust也提供了“unsafe”模式,通过严格限制操作范围可以极大降低风险。
目前NIST安全语言列表包括:
SPARK 是一种用于高完整性应用程序的定义明确的语言,在这种应用程序中,许多错误是不可能发生的,并且已经有数十年的验证结果。(2013年1月7日)
Escher C Verifier 语言是基于MISRA-C的C和C++语言子集,具有更强的类型系统和前提条件。定理证明器eCv可以验证此类程序。Escher Technologies提供了其良好规范语言,该规范也适用于SPARK Ada。(2013年4月9日)
Fail-Safe C 该字集不允许在“完整的ANSI C标准(包括转换和联合)”中进行任何不安全的内存操作,甚至支持许多在不符合规范的程序中常见的“肮脏技巧”。(2009年6月)
Safe-Secure C/C++ (SSCC) 是一个软件组件,可以集成到编译器和软件分析工具中,以检测和防止缓冲区溢出以及C和C++程序中的其他常见安全漏洞”。
CERT编程标准 是一项基础广泛的工作,如果遵循该标准,可以防止许多常见的漏洞。与语言无关的实践由一些特定于C、一些特定于Java和一些特定于C++的实践进行补充。
CCured 通过向C程序添加了最少数量的运行时检查,防止所有违反内存安全的行为。生成的程序是内存安全的,他完全禁止溢出缓冲区或在内存不安全操作” (2017年2月13日)
Rust 所有权安全模型,可以在编译时保证内存安全和线程安全,而不需要垃圾回收(GC)。这允许用户编写高性能代码,同时消除许多错误类。尽管Rust确实有一个不安全模式,但它的使用是明确的,并且只 允许一个狭窄的操作范围。(2023 年3月14日)
总结
虽然业界和Rust社区早就意识到该语言促进了更安全的编码,但是随着具有全球影响力的大型政府机构对Rust的安全的推崇,可以让其成为全球高性能和安全计算机系统的关键基础。
随着NIST将Rust添加到安全编程语言(规范),我们希望看能引起业界更加注意内存安全的重要性,并推荐像Rust这样的工具来保护我们的基础设施和信息系统。
声明:本文来自虫虫搜奇,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。