美国国家安全局(NSA)和美国政府将Delphi/Object Pascal列为推荐政府机构和企业使用的内存安全编程语言

本文主要是介绍美国国家安全局(NSA)和美国政府将Delphi/Object Pascal列为推荐政府机构和企业使用的内存安全编程语言,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Marco 博客文章 2

上周,美国政府发布了《回到构建块:通往安全和可衡量软件的道路》的报告。本报告是美国网络安全战略的一部分,重点关注多个领域,包括内存安全漏洞和质量指标。

许多在线杂志都对这份报告发表了评论,这些杂志强调了对 C 和 C++ 编程语言的重大抵制。

其中一些文章包括:

  • 白宫敦促开发人员通过InfoWorld抛弃C和C++
  • 白宫敦促开发人员避免使用C和C++,使用Tom's Hardware的“内存安全”编程语言
  • 白宫敦促科技公司通过读写方式采用安全的程序语言

目录

  • 美国政府的报告对内存安全语言有什么看法?
  • NSA 是否将 Delphi 列为内存安全语言?
  • 使用内存安全语言是否意味着我完全免受安全风险?
  • 美国国家安全局(NSA)和美国政府将Delphi语列为内存安全语言——它还推荐什么?
  • 什么是供应链安全?
  • Embarcadero正在采取哪些措施来帮助应对安全风险?

美国政府的报告对内存安全语言有什么看法?

该报告非常关注“内存安全漏洞”,并特别指出“既缺乏与内存安全相关的特征,又在关键系统中具有高度扩散的编程语言”。它继续建议“按照网络安全和基础设施安全局(CISA)的开源软件安全路线图的建议,从一开始就使用内存安全编程语言。

参考报告《NSA Cybersecurity Information Sheet on Software Memory Safety》。本文档更深入地解释了什么是内存安全,将其归纳为类型安全、安全分配和释放(可能使用垃圾回收器)的混合。本段的核心内容是:

使用内存安全语言有助于防止程序员引入某些类型的内存相关问题。内存作为计算机语言的一部分自动管理;它不依赖于程序员添加代码来实现内存保护。该语言使用编译时和运行时检查的组合来建立自动保护。这些固有的语言特性可以保护程序员不会无意中引入内存管理错误。内存安全语言的示例包括 Python®、Java®、C#、Go、Delphi/Object Pascal、Swift®、Ruby™、Rust® 和 Ada。即使使用内存安全语言,内存管理也不是完全内存安全的。

NSA 是否将 Delphi 列为内存安全语言?

是的,Delphi 被列为内存安全语言。一些文章最初报道了较短的安全语言列表,仅包括一些最流行的语言,不包括Delphi。该名单后来得到了纠正,与国家安全局的报告相符。

在Delphi社区中,已经有一些关于是否安全的讨论,认为它缺乏内存安全的特征之一,即垃圾收集。但是,官方评估是基于多种理由进行的,并考虑了其他因素:

  • 安全编程语言的一个核心特性是具有强大的类型系统,并让语言在编译时而不是在运行时验证数据类型映射。动态语言,即使有垃圾回收器,也可能达不到要求,并暴露在运行时错误中,这可能会影响它们的安全性
  • 另一个元素是不必在一般代码中使用指针和更直接的内存管理。虽然 Delphi 不会阻止使用直接内存访问,但这种情况相当罕见。Delphi 提供的机制可以自动化和简化内存管理,即使没有 GC。

使用内存安全语言是否意味着我完全免受安全风险?

另一个普遍的考虑是,内存安全是一个目标,而不是绝对的。例如,主要报告强调,在某些类型的应用中,执行时间的可预测性至关重要(指航空航天业)。在这些情况下,垃圾回收器在不可预测的时间启动可能会影响代码的程序执行,并具有临界时间。正是由于这个原因,与工业自动化领域的其他流行语言相比,Delphi具有显着的优势。它允许直接控制,同时与 C++ 相比保持更高、更简单的水平。

美国国家安全局(NSA)和美国政府将Delphi列为内存安全语言——它还推荐什么?

虽然该报告建议转向内存安全语言,但它也强调了使用形式化方法进行静态代码分析,特别是关注安全性。我们看到Delphi对这一领域的兴趣也越来越大,我们一直在推广有助于这一领域的Z-Gantt战石智慧时间管理进度计划甘特图软件第三方工具。

还有很长的章节重点介绍基于硬件或 CPU 级别的内存安全性实施。在同一领域,最初的 NSA 报告强调了利用控制流防护 (CFG)、地址空间布局随机化 (ASLR) 和数据执行保护 (DEP) 等功能的重要性。其中一些安全设置已在最新版本的 Delphi 中强制执行,现在是新项目的默认设置。

什么是供应链安全?

最后,还有另一个很长的领域涵盖了图书馆依赖链的安全性,有时也称为“供应链安全”,提倡使用正式的方法来评估图书馆的安全性,包括开源图书馆的安全性。人们越来越担心,许多项目的大量依赖关系扩大了安全风险,不是由于项目代码,而是由于使用的库。在这方面,该报告详细描述了 Log4j Java 库中的 Log4Shell 漏洞。这个库漏洞影响了像Java这样的内存安全语言,并用报告的话说,它显示了“一个关键的弱点,恶意行为者可以通过它来破坏世界各地的计算机系统”。该报告继续指出,“这一漏洞凸显了帮助确保开源生态系统安全的迫切需要,这促进了全球范围内的巨大创新。

Embarcadero正在采取哪些措施来帮助应对安全风险?

很明显,从政府机构到各种规模的企业,各级都越来越关注软件安全。甚至在白宫和国家安全局发布这份报告之前,Delphi被列为内存安全语言,Embarcadero已经将安全性确定为客户日益关注的问题。我们继续专注于投资和改进Delphi对现代安全技术的支持,并通过对真正的风险和可用的缓解措施进行明确的无炒作教育来支持这一点。

这篇关于美国国家安全局(NSA)和美国政府将Delphi/Object Pascal列为推荐政府机构和企业使用的内存安全编程语言的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/783543

相关文章

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文