美国国家安全局建议从 C/C++ 切换到内存安全语言
美国国家安全局(NSA)发布了一份指南,旨在帮助软件开发商和运营商预防和缓解软件内存安全问题。其鼓励组织将编程语言从 C 和 C++ 之类的语言转变为内存安全的替代语言——即 C#、Rust、Go、Java、Ruby 或 Swift,以保护代码免受远程代码执行或其他黑客攻击。
“NSA 建议企业尽可能使用内存安全语言,并通过编译器选项、工具选项和操作系统配置等代码硬化防御措施加强保护。”
NSA 方面表示,内存安全问题在可利用的漏洞中占比很大。并引用了微软的数据指出,该公司从 2006 年到 2018 年 70% 的漏洞是由于内存安全问题造成的;谷歌的 Chrome 在几年内也发现了类似比例的内存安全漏洞。该组织认为,恶意的网络行为者会利用不良的内存管理问题来访问敏感信息、颁布未经授权的代码执行、以及造成其他负面影响,而这些通常会危及设备并成为大规模网络入侵的第一步。
“常用的语言,如 C 和 C++,在内存管理方面提供了很大的自由度和灵活性,同时严重依赖程序员对内存引用执行所需的检查,简单的错误就可能会导致可利用的基于内存的漏洞。软件分析工具可以检测到许多内存管理问题的实例,操作环境选项也可以提供一些保护,但内存安全软件语言所提供的固有保护可以防止或减轻大多数内存管理问题。NSA 建议在可能的情况下使用内存安全语言。虽然使用非内存安全语言的附加保护措施和使用内存安全语言并不能对可利用的内存问题提供绝对的保护,但它们确实提供了相当的保护。因此,私营部门、学术界和美国政府的总体软件界已经开始倡议,推动软件开发文化向使用内存安全语言发展。”
不过 NSA 也指出,“内存安全”有点用词不当,且这个概念也是相对的。并警告称,即使使用内存安全语言,内存管理也不完全是内存安全的。
“大多数内存安全语言承认,软件有时需要执行不安全的内存管理功能来完成某些任务。因此,有一些类或函数被认为是非内存安全的,并允许程序员执行可能不安全的内存管理任务。某些语言要求对任何内存不安全的内容进行明确的注释,以使程序员和程序的任何审查者意识到它是不安全的。内存安全语言还可以使用以非内存安全语言编写的库,因此可以包含不安全的内存功能。尽管这些包含内存不安全机制的方法颠覆了固有的内存安全性,但它们有助于定位可能存在内存问题的位置,从而可以对这些代码部分进行额外的审查。”
另一方面,一些内存安全语言可能会以性能为代价。此外,学习一门新的语言也并不容易;譬如,Rust 虽然功能强大,但学习曲线相当陡峭。NSA 还建议,开发人员可以采取一些措施来强化非内存安全语言。例如谷歌的 Chrome 团队就正在探索多种方法来强化 C++ ,但这些方法也会带来性能开销。
更多详情可查看完整报告。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Fedora Workstation 引入原生支持 Wayland 的 Blender
开源3D 图形设计软件 Blender 上月为每日构建的 Linux 版本实现了对 Wayland 的原生支持,并表示如果一切顺利,即将发布的 Blender 3.4 将引入该项特性。 近年来,越来越多的 Linux 发行版开始默认提供 Wayland 桌面,开发者也一直在积极为 Blender 提供原生 Wayland 支持。目前 Blender 的 Wayland 支持依赖于libdecor库。Blender 团队认为,Wayland 从 2008 年开始就已成为X11 替代方案,近年不少Linux 发行版都已默认提供 Wayland 桌面。因此从长远来看,Blender 原生支持 Wayland 能带来更好的用户体验,让 Blender 支持 Wayland 的开放功能,不受 X11 兼容层的限制。 现在,Fedora Workstation 37 将率先引入原生支持 Wayland 的 Blender。Fedora 用户很快就会发现他们打包的 Blender 版本可在启用 Wayland 支持后运行。 据介绍,Fedora Rawhide 中的 Blender 软件包目前已经启...
- 下一篇
Dante Cloud 2.7.5.2 发布,Spring Cloud 版本升级至 2021.0.5
Dante Cloud 是一款企业级微服务架构和服务能力开发平台。首个全面拥抱 Spring Authorization Server 的版本,基于Spring Boot 2.7.5、Spring Cloud 2021.0.5、Spring Cloud Alibaba 2021.0.4.0、 Spring Authorization Server 0.3.1、Nacos 2.1.2 等最新版本开发的多租户系统,遵循SpringBoot编程思想,高度模块化和可配置化。具备服务发现、配置、熔断、限流、降级、监控、多级缓存、分布式事务、工作流等功能 平台定位 构建成熟的、完善的、全面的,基于 OAuth2.1 的、前后端分离的微服务架构解决方案。 面向企业级应用和互联网应用设计开发,既兼顾传统项目的微服务化,又满足互联网应用开发建设、快速迭代的使用需求。 平台架构使用微服务领域及周边相关的各类新兴技术或主流技术进行建设,是帮助快速跨越架构技术选型、研究探索阶段的利器。 代码简洁规范、结构合理清晰,是新技术开发应用的典型的、综合性案例,助力开发人员对新兴技术的学习和掌握。 [1]、为什么更名为...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路