Delphi 是一种内存安全的语言吗?

上个月,美国政府发布了 "回到基石 "报告: 通往安全和可衡量软件之路 "的报告。该报告是美国网络安全战略的一部分,重点关注多个领域,包括内存安全漏洞和质量指标。

许多在线杂志都对这份报告进行了评论,强调了对 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 对现代安全技术的支持,并在此基础上提供有关真正风险和可用缓解措施的明确教育。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/790492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言内存函数,让内存管理更高效!

1. memcpy使⽤和模拟实现 2. memmove使⽤和模拟实现 3. memset函数的使⽤ 4. memcmp函数的使⽤ 正文开始: 1. memcpy 使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); • 函数memcpy从source的位置开始向后复…

区间概率预测python|QR-CNN-BiLSTM+KDE分位数-卷积-双向长短期记忆神经网络-时间序列区间概率预测+核密度估计

区间预测python|QR-CNN-BiLSTMKDE分位数-卷积-双向长短期记忆神经网络-核密度估计-回归时间序列区间预测 模型输出展示: (图中是只设置了20次迭代的预测结果,宽度较宽,可自行修改迭代参数,获取更窄的预测区间) 注&am…

类似微信的以文搜图功能实现

通过PaddleOCR识别图片中的文字,将识别结果报存到es中,利用es查询语句返回结果图片。 技术逻辑 PaddleOCR部署、es部署创建mapping将PaddleOCR识别结果保存至es通过查询,返回结果 前期准备 PaddleOCR、es部署请参考https://blog.csdn.net…

stm32之基本定时器的使用

在上文我们使用到了HAL库的自带的延时函数,HAL_Delay();我们来看一下函数的原型 __weak void HAL_Delay(uint32_t Delay) {uint32_t tickstart HAL_GetTick();uint32_t wait Delay;/* Add a freq to guarantee minimum wait */…

【SQL】1587. 银行账户概要 II

题目描述 leetcode题目:1587. 银行账户概要 II Code 写法一 select name, sum(amount) as balance from Users U left join Transactions T on U.account T.account group by U.account having sum(amount) > 10000写法二 select Users.name, balance from…

Unity自定义icon

Unity自定义icon 1. 新建文件夹 OfficeFabricIconSet2. 新建Iconset3. 新建子文件夹Textures并添加icon图片4. 向iconset添加Quad Icons5. 最终效果 教程来源处: https://365xr.blog/build-your-own-button-icon-set-for-microsoft-hololens-2-apps-with-mrtk-using…

前视声呐目标识别定位(三)-部署至机器人

前视声呐目标识别定位(一)-基础知识 前视声呐目标识别定位(二)-目标识别定位模块 开发了多波束前视声呐目标识别定位模块后,自然期待能将声呐部署至AUV,实现AUV对目标的抵近观测。原本规划着定位模块不…

C++算法——二分法查找

一、二分查找算法思想和模版 1.算法思想 2.细节处理 3.模板 二、二分查找 1.链接 704. 二分查找 - 力扣(LeetCode) 2.描述 3.思路 先从最经典的题目去切入,思路就是二分查找,这里我们认为,目标值既可以看作为左部…

XSS 与 CSRF 攻击——有什么区别,如何加以防护

跨站脚本(XSS)和跨站请求伪造(CSRF),它们将恶意脚本注入目标系统,以进一步利用技术栈或窃取用户数据。 什么是 XSS 和 CSRF? CSRF和XSS都是客户端攻击,它们滥用同源策略,利用web应用程序和受害用户之间的信任关系。XSS和跨站脚…

WPS二次开发系列:以自动播放模式打开PPT文档

在前面文章中 WPS SDK打开文档并实现保存回传 介绍了如何使用WPS SDK打开文档,那么我们是否能够实现在打开WPS 文档的时候能够传递一些参数来控制打开文档的行为呢,经过研究WPS SDK相关文档和API,最终实现了 以自动播放方式打开PPT文档功能。…

Spring Cloud微服务入门(二)

微服务的技术栈 服务治理: 服务注册、发现、调用。 负载均衡: 高可用、集群部署。 容错: 避免雪崩、削峰、服务降级。 消息总线: 消息队列、异步通信,数据一致性。 网关: 校验路径、请求转发、服务集成…

【Web】2024红明谷CTF初赛个人wp(2/4)

目录 ezphp playground 时间原因只打了2个小时,出了2道,简单记录一下 ezphp 参考文章 PHP filter chains: file read from error-based oracle https://github.com/synacktiv/php_filter_chains_oracle_exploit 用上面的脚本爆出部分源码&#xff…

SSM项目转Springboot项目

SSM项目转Springboot项目 由于几年前写的一个ssm项目想转成springboot项目,所以今天倒腾了一下。 最近有人需要毕业设计转换一下,所以我有时间的话可以有偿帮忙转换,需要的私信我或+v:Arousala_ 首先创建一个新的spr…

蓝桥杯第793题——排水系统

题目描述 对于一个城市来说,排水系统是极其重要的一个部分。 有一天,小 C 拿到了某座城市排水系统的设计图。排水系统由 n 个排水结点(它们从 1∼n 编号)和若干个单向排水管道构成。每一个排水结点有若干个管道用于汇集其他排水…

git分支-基本分支与合并

问题假设 让我们通过一个简单的分支和合并的例子,演示在实际工作中可能会使用的工作流程。将按照以下步骤进行: 在网站上进行一些工作。为正在开发的新用户故事创建一个分支。在该分支上进行一些工作。 在这个阶段,我们可能会接到一个电话…

线上研讨会 | 应对汽车毫米波雷达设计中的电磁挑战

智能汽车、新能源汽车最近几年一直是汽车行业关注的热点,随着5G技术越来越普及,汽车智能化发展将越来越迅速。从传统汽车到智能汽车,不是简单功能的增强,而是从单一功能的交通工具变成可移动的办公和娱乐空间,成为物联…

STM32实现软件SPI对W25Q64内存芯片实现读写操作

先看看本次实验的成果吧: 这么简单的一个程序,我学习了一个星期左右,终于把所有的关节都打通了。所有代码都能什么都不看背着敲出来了。为了使自己的记忆更为清晰,特意总结了一个思维导图,感觉自己即便是日后忘记了看一…

机器学习的15个概念

机器学习 有监督学习 有监督学习是利用训练数据集进行预测的机器学习任务。有监督学习可以分为分类和回归。回归用于预测“价格”“温度”或“距离”等连续值,而分类用于预测“是”或“否”、“垃圾邮件”或“非垃圾邮件”、“恶性”或“良性”等类别。 分类包含…

如何保护IP地址?安全匿名上网的方法

当互联网成为每个家庭的重要组成部分后,IP地址就成了你的虚拟地址。您的请求从该地址开始,然后 Internet 将消息发送回该地址。那么,您担心您的地址被泄露吗? 对于安全意识高或者某些业务需求的用户,如果您正在寻找保护…

C++ 静态库与动态库的生成和使用:基于 VS Studio 生成 newmat 矩阵库的静态库与动态库

文章目录 Part.I IntroductionChap.I 预备知识Chap.II 静态库与动态库区分 Part.II 静态库的生成与使用 (newmat)Chap.I 生成静态库Chap.II 使用静态库 Part.III 动态库的生成与使用 (newmat)Chap.I 生成动态库Chap.II 使用动态库 Part.IV 文件内容Chap.I test.cpp (静态库)Cha…