美国国家安全局(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

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他