上个月,美国政府发布了 "回到基石 "报告: 通往安全和可衡量软件之路 "的报告。该报告是美国网络安全战略的一部分,重点关注多个领域,包括内存安全漏洞和质量指标。
许多在线杂志都对这份报告进行了评论,强调了对 C 和 C++ 编程语言的大力反击。
其中一些文章包括:
- 白宫敦促开发人员放弃 C 和 C++ 作者:InfoWorld
- 白宫敦促开发人员避免使用 C 和 C++,使用 "内存安全 "编程语言 by Tom's Hardware
- 白宫敦促科技公司采用安全的程序语言: by readwrite
目录
一、美国政府报告对内存安全语言有何论述?
二、美国国家安全局是否把 Delphi 列为内存安全语言?
三、使用内存安全语言是否意味着我可以完全避免安全风险?
四、美国国家安全局和美国政府将 Delphi 列为内存安全语言--它还推荐了什么?
五、什么是供应链安全?
六、Embarcadero 正在采取哪些措施来帮助应对安全风险?
一、美国政府报告对内存安全语言有何论述?
报告重点关注 "内存安全漏洞",并挑出了 "既缺乏与内存安全相关的特征,又在关键系统中高度扩散的编程语言"。报告继续建议 "按照网络安全和基础设施安全局(CISA)开放源代码软件安全路线图的建议,从一开始就使用内存安全的编程语言。
参考文献是《美国国家安全局关于软件内存安全的网络安全信息表》(NSA Cybersecurity Information Sheet on Software Memory Safety)。这份文件更详细地解释了什么是内存安全,认为内存安全是类型安全、安全分配和删除(可能有垃圾收集器)的混合体。本段为核心内容:
使用内存安全语言有助于防止程序员引入某些类型的内存相关问题。内存是作为计算机语言的一部分自动管理的;它不依赖于程序员添加代码来实现内存保护。计算机语言通过结合使用编译时和运行时检查来实现自动保护。这些固有的语言特点可以保护程序员不会无意中引入内存管理错误。内存安全语言的例子包括 Python®、Java®、C#、Go、Delphi/Object Pascal、Swift®、Ruby™、Rust® 和 Ada。即使使用内存安全语言,内存管理也并非完全安全。
二、美国国家安全局是否把 Delphi 列为内存安全语言?
是的,Delphi 被列为内存安全语言。一些文章最初报道的安全语言列表较短,只包括一些最流行的语言,不包括 Delphi。后来,根据美国国家安全局的报告,对该列表进行了更正。
考虑到 Delphi 缺少内存安全的特征之一--垃圾回收,Delphi 社区就是否认为该语言安全进行了一些讨论。不过,官方的评估是基于多种理由并考虑到其他因素后做出的:
- 安全编程语言的一个核心特征是拥有强大的类型系统,并在编译时而不是运行时验证数据类型映射。动态语言,即使有垃圾回收器,也会有不足之处,可能会出现运行时错误,从而影响其安全性。
- 另一个因素是在一般代码中不必使用指针和更直接的内存管理。虽然 Delphi 并不禁止使用直接内存访问,但这种情况相当少见。即使没有 GC,Delphi 也能提供自动和简化内存管理的机制。
三、使用内存安全语言是否意味着我可以完全避免安全风险?
另一个总体考虑是,内存安全是一个目标,但不是绝对的。例如,主要报告强调,在某些类型的应用中,执行时间的可预测性至关重要(指航空航天工业)。在这些应用中,垃圾回收器在不可预测的时间启动,可能会影响具有关键时序的代码的程序执行。正是由于这个原因,Delphi 与工业自动化领域的其他流行语言相比具有显著优势。它允许直接控制,同时与 C++ 相比保持在更高和更简单的水平上。
四、美国国家安全局和美国政府将 Delphi 列为内存安全语言--它还推荐了什么?
报告在建议向内存安全语言转变的同时,还强调了静态代码分析正式方法的使用,尤其是在安全方面。我们发现 Delphi 在这一领域的兴趣也在不断增长,我们一直在推广在这一领域提供帮助的第三方工具。
此外,还有很长一部分内容是关于基于硬件或 CPU 级别的内存安全性执行。在同一领域,美国国家安全局的原始报告强调了利用控制流防护(CFG)、地址空间布局随机化(ASLR)和数据执行防护(DEP)等功能的重要性。其中一些安全设置已在最近的 Delphi 版本中强制执行,现在已成为新项目的默认设置。
五、什么是供应链安全?
最后,还有一个很长的领域涉及库依赖链的安全,有时也被称为 "供应链安全",主张使用正式的方法来评估库的安全性,包括开源库的安全性。越来越多的人担心,许多项目的大量依赖性正在扩大安全风险,这不是由于项目代码,而是由于所使用的库。在这方面,报告详细描述了 Log4j Java 库中的 Log4Shell 漏洞。该库漏洞影响了 Java 这样的内存安全语言,用报告的话说,它显示了 "一个关键的弱点,恶意行为者可以通过它入侵全世界的计算机系统"。报告继续指出,"这一漏洞凸显了帮助确保开源生态系统安全的迫切需要,而开源生态系统促进了全球范围内的巨大创新"。
六、Embarcadero 正在采取哪些措施来帮助应对安全风险?
显然,从政府机构到各种规模的企业,各个层面对软件安全的关注都在不断增加。甚至在白宫和美国国家安全局发布报告,将 Delphi 列为内存安全语言之前,Embarcadero 就已经将安全性视为客户日益关注的问题。我们将一如既往地专注于投资和改进 Delphi 对现代安全技术的支持,并在此基础上提供有关真正风险和可用缓解措施的明确教育。