当前位置: 首页 > news >正文

美国国家安全局(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列为推荐政府机构和企业使用的内存安全编程语言

上周,美国政府发布了《回到构建块:通往安全和可衡量软件的道路》的报告。本报告是美国网络安全战略的一部分,重点关注多个领域,包括内存安全漏洞和质量指标。 许多在线杂志都对这份报告发表了评论,这些杂志强调了对 C…...

C++中的内部类

一、内部类的概念 如果一个类定义在另一个类的内部,那么这个类就叫做内部类。(内部类其实和一个独立的类没有区别,只是它会受到外部类访问限定符以及类域的限制,且是外部类的友元) 如果B类是A类的内部类,…...

华为“仓颉”不是中文编程:中文编程早有所属,势如破竹

“何时能见证中国自主研发的编程语言崛起?”这是我们这些对IT生态心怀关切的人常常深思的问题。 语言,作为文化的灵魂,总是与特定的环境和人群紧密相连。无论是中文还是英语,它们都不仅仅是交流的工具,更是各自文化背…...

Python的基本数据类型

上一篇博客,我们介绍了Python的基础语法(Python基础语法:从入门到精通的必备指南),相信大家看过后,对python的整个语法逻辑有了一些了解,不了解也没有关系。接下来,我们将正式开始&a…...

24考研有感

我考11408,总分339,408考了112分 408考的不甚满意,但是客观来说也没有低多少,毕竟我的学习时间太极限了,平均5天一本书,题只做了数据结构和计组的一部分选择,最后草草研究了几年的大题就上阵了…...

k8s中的PV和PVC存储介绍

目录 一.PV介绍 1.含义 2.关键配置参数 二.PVC介绍 1.含义 2.关键参数配置 三.PV和PVC的生命周期问题 1.PV的生命周期会有4个阶段 2.用户申请空间PV的周期流程 3.PV和PVC的使用/释放/回收 四.案例演示 1.NFS配置 2.新建PV 3.新建PVC 4.新建Pod测试 5.模拟删除P…...

SpringMVC--03--前端传数组给后台

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 案例1乘客个人信息方法1:表单提交,以字段数组接收方法2:表单提交,以BeanListModel接收方法3:将Json对象序…...

【C++干货基地】六大默认成员函数: This指针 | 构造函数 | 析构函数

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 哈喽各位铁汁们好啊,我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的…...

99.qt qml-单例程序实现

在之前讲过: 58.qt quick-qml系统托盘实现https://nuoqian.blog.csdn.net/article/details/121855993 由于,该示例只是简单讲解了系统托盘实现,并没有实现单例程序,所以多次打开后就会出现多个exe出现的可能,本章出一章QML单例程序实现, 多次打开始终只显示出第一个打开…...

【软件工程】可用性测试:提升软件、网站与产品用户体验的关键环节

🍎个人博客:个人主页 🏆个人专栏:Linux ⛳️ 功不唐捐,玉汝于成 目录 正文 关注点 界面设计: 导航测试: 交互测试: 易用性测试: 多平台兼容性: 我…...

EPLAN的国产平替软件?SuperWORKS自动化版尝鲜

在电气设计领域,EPLAN作为德国老牌软件,知名度较高,使用体验也非常好!在中国市场,是否有一款国产软件与之媲美?答案当然是有的! 接下来为大家分享一款宝藏级别的国产电气设计软件——SuperWORK…...

【MySQL 系列】MySQL 架构篇

在我们开始了解 MySQL 核心功能之前,首先我们需要站在一个全局的视角,来看 SQL 是如何运作执行的。通过这种方式,我们可以在头脑中构建出一幅 MySQL 各组件之间的协同工作方式,有助于我们加深对 MySQL 服务器的理解。 文章目录 1、…...

C++初阶:类与对象(初篇)

目录 1. 类与对象1.1 引子:结构体与类1.2 什么是类(类的定义方式)1.3 类和结构体的区别1.4 类的访问限定符与封装1.4.1 访问限定符1.4.2 类的作用域与类的实例化 1.5 类对象的模型1.5.1 类内部资源的存储方式1.5.3 类大小的计算方式 1.6 this…...

Docker 创建容器并指定时区

目录 1. 通过环境变量设置时区(推荐)2. 挂载宿主机的时区文件到容器中3. 总结 要在 Docker 容器中指定时区,可以通过两种方式来实现: 1. 通过环境变量设置时区(推荐) 在 Docker 运行时,可以通…...

springboot文件上传修改临时文件路径

1、配置:spring.servlet.multipart.location/data/tmp 2、代码 Configuration public class MultipartConfig {Value("${spring.servlet.multipart.location}")private String tmpLocation;Beanpublic MultipartConfigElement multipartConfigElement()…...

testvue-新增图表功能(教师那边-后续放到管理员那边)-src/main.js ,router/index.js

1.安装--然后在src/main.js中 导入 和 使用2修改&#xff1a;common/sidebar.vue ,page/ echarts.vue , router/index.js , src/main.js 3sidebar.vue <template><div class"sidebar"><el-menuclass"sidebar-el-menu":default-active&quo…...

[HackMyVM]Quick 2

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…...

Mybatis-Plus实现Service封装

文章目录 5.1 MP封装Service介绍5.1.1 说明5.1.2 实现流程5.1.3 核心API介绍 5.2 MP封装Service快速入门5.2.1 定义服务扩展接口5.2.2 定义服务实现5.2.3 测试测试 5.3 MP封装Service实现CRUD操作 5.1 MP封装Service介绍 5.1.1 说明 MybatisPlus为了开发更加快捷&#xff0c;…...

平台工程指南:从架构构建到职责分工

平台工程只是 DevOps 专业化的另一个术语&#xff0c;还是另有所指&#xff1f;事实可能介于两者之间。DevOps 及其相关的 DevXOps 有着浓厚的文化色彩&#xff0c;以各个团队为中心。不幸的是&#xff0c;在许多地方&#xff0c;DevOps 引发了新的问题&#xff0c;如工具激增和…...

Docker系列之docker与docker-compose离线安装

docker离线安装 一、离线安装包二、安装命令三、配置四、docker-compose 一、离线安装包 上传离线安装包至/root/目录下&#xff0c;docker离线安装包下载链接。 二、安装命令 cd /root mkdir k8sOfflineSetup tar -xzvf k8sOfflineSetup-2020-02-20.tar.gz -C k8sOfflineSe…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...