0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NSA:建议从C/C++切换到内存安全语言

OSC开源社区 来源:OSC开源社区 作者:OSC开源社区 2022-11-14 15:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

美国国家安全局(NSA)发布了一份指南,旨在帮助软件开发商和运营商预防和缓解软件内存安全问题。其鼓励组织将编程语言从 C 和 C++ 之类的语言转变为内存安全的替代语言 —— 即 C#、Rust、Go、Java、Ruby 或 Swift,以保护代码免受远程代码执行或其他黑客攻击。

“NSA 建议企业尽可能使用内存安全语言,并通过编译器选项、工具选项和操作系统配置等代码强化防御措施加强保护。”

361e566a-6357-11ed-8abf-dac502259ad0.jpg

NSA 方面表示,内存安全问题在可利用的漏洞中占比很大。并引用了微软的数据指出,该公司从 2006 年到 2018 年 70% 的漏洞是由于内存安全问题造成的;谷歌的 Chrome 在几年内也发现了类似比例的内存安全漏洞。

该组织认为,恶意的网络行为者会利用不良的内存管理问题来访问敏感信息、颁布未经授权的代码执行、以及造成其他负面影响,而这些通常会危及设备并成为大规模网络入侵的第一步。

“常用的语言,如 C 和 C++,在内存管理方面提供了很大的自由度和灵活性,同时严重依赖程序员对内存引用执行所需的检查,简单的错误就可能会导致可利用的基于内存的漏洞。软件分析工具可以检测到许多内存管理问题的实例,操作环境选项也可以提供一些保护,但内存安全软件语言所提供的固有保护可以防止或减轻大多数内存管理问题。

NSA 建议在可能的情况下使用内存安全语言。虽然使用非内存安全语言的附加保护措施和使用内存安全语言并不能对可利用的内存问题提供绝对的保护,但它们确实提供了相当的保护。因此,私营部门、学术界和美国政府的总体软件界已经开始倡议,推动软件开发文化向使用内存安全语言发展。”

不过 NSA 也指出,“内存安全” 有点用词不当,且这个概念也是相对的。并警告称,即使使用内存安全语言,内存管理也不完全是内存安全的。

“大多数内存安全语言承认,软件有时需要执行不安全的内存管理功能来完成某些任务。因此,有一些类或函数被认为是非内存安全的,并允许程序员执行可能不安全的内存管理任务。某些语言要求对任何内存不安全的内容进行明确的注释,以使程序员和程序的任何审查者意识到它是不安全的。内存安全语言还可以使用以非内存安全语言编写的库,因此可以包含不安全的内存功能。尽管这些包含内存不安全机制的方法颠覆了固有的内存安全性,但它们有助于定位可能存在内存问题的位置,从而可以对这些代码部分进行额外的审查。”

另一方面,一些内存安全语言可能会以性能为代价。此外,学习一门新的语言也并不容易;譬如,Rust 虽然功能强大,但学习曲线相当陡峭。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    9

    文章

    3174

    浏览量

    76163
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

    76749
  • 编译器
    +关注

    关注

    1

    文章

    1670

    浏览量

    51123

原文标题:NSA:建议从 C/C++ 切换到内存安全语言

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CC++之间的联系

    ,后来才逐渐演变为一种成熟的面向对象编程语言。 总之,C语言C++虽然有很多共同之处,但在编程范式、安全性、抽象层次等方面存在显著差异。开
    发表于 12-11 06:51

    C语言C++之间的区别是什么

    区别 1、面向对象编程 (OOP): C语言是一种面向过程的语言,它强调的是通过函数将任务分解为一系列步骤进行执行。 C++C
    发表于 12-11 06:23

    C语言特性

    存储和处理方式,提高系统的运行效率。 4、丰富的开发工具与社区支持 在嵌入式开发领域,大部分的开发工具都对 C/C++ 语言提供了良好的支持。经典的 Keil、IAR,到开源的
    发表于 11-24 07:01

    请问GPIO切换到C模式时如何使用施密特触发器功能?

    GPIO切换到C模式时如何使用施密特触发器功能?
    发表于 08-29 08:16

    GPIO切换到C模式时如何使用施密特触发器功能?

    GPIO切换到C模式时如何使用施密特触发器功能?
    发表于 08-27 09:33

    GPIO切换到I,C模式时如何使用施密特触发器功能?

    GPIO切换到I?C模式时如何使用施密特触发器功能?
    发表于 08-22 08:19

    灵活高效ZBUFF — C内存数据操作库:优化内存管理的利器

    C语言开发中,高效的内存管理是提升程序性能的关键。ZBUFF作为一款灵活高效的内存数据操作库,通过优化内存分配与释放机制,为开发者提供了更
    的头像 发表于 08-14 18:01 531次阅读
    灵活高效ZBUFF — <b class='flag-5'>C</b><b class='flag-5'>内存</b>数据操作库:优化<b class='flag-5'>内存</b>管理的利器

    灵活高效双引擎驱动:ZBUFF让C语言内存操作更智能!

    高性能系统。 一、ZBUFF核心库常用函数 如果小伙伴们此前没有接触过C语言或者不精通C语言,把ZBUFF核心库当成新库来学习即可,建议先从
    的头像 发表于 08-11 13:27 459次阅读
    灵活高效双引擎驱动:ZBUFF让<b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>内存</b>操作更智能!

    C++ 与 Python:树莓派上哪种语言更优?

    Python是树莓派上的首选编程语言,我们的大部分教程都使用它。然而,C++在物联网项目中同样广受欢迎且功能强大。那么,在树莓派项目中选择哪种语言更合适呢?Python因其简洁性、丰富的库和资源而被
    的头像 发表于 07-24 15:32 674次阅读
    <b class='flag-5'>C++</b> 与 Python:树莓派上哪种<b class='flag-5'>语言</b>更优?

    在通话中VoWiFi切换到VoLTE时掉话的故障分析

    某运营商VoWiFi业务,用户在通话中先从VoLTE切换到VoWiFi,再从VoWiFi切换到VoLTE时掉话。
    的头像 发表于 05-23 10:09 800次阅读
    在通话中<b class='flag-5'>从</b>VoWiFi<b class='flag-5'>切换到</b>VoLTE时掉话的故障分析

    主流的 MCU 开发语言为什么是 C 而不是 C++

    在单片机的地界儿里,C语言稳坐中军帐,C++想分杯羹?难喽。咱电子工程师天天跟那针尖大的内存空间较劲,C++那些花里胡哨的玩意儿,在这儿真玩
    的头像 发表于 05-21 10:33 793次阅读
    主流的 MCU 开发<b class='flag-5'>语言</b>为什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    源代码加密、源代码防泄漏c/c++与git服务器开发环境

    源代码加密对于很多研发性单位来说是至关重要的,当然每家企业的业务需求不同所用的开发环境及开发语言也不尽相同,今天主要来讲一下c++及git开发环境的源代码防泄密保护方案。企业源代码泄密场景一、在很多
    的头像 发表于 02-12 15:26 924次阅读
    源代码加密、源代码防泄漏<b class='flag-5'>c</b>/<b class='flag-5'>c++</b>与git服务器开发环境

    Spire.XLS for C++组件说明

    Spire.XLS for C++ 是一款专业的 C++ Excel 组件,可以用在各种 C++ 框架和应用程序中。Spire.XLS for C++ 提供了一个对象模型 Excel
    的头像 发表于 01-14 09:40 1320次阅读
    Spire.XLS for <b class='flag-5'>C++</b>组件说明

    EE-128:C语言中的DSP:C调用汇编类成员函数

    电子发烧友网站提供《EE-128:C语言中的DSP:C调用汇编类成员函数.pdf》资料免费下载
    发表于 01-07 13:48 0次下载
    EE-128:<b class='flag-5'>C</b><b class='flag-5'>语言</b>中的DSP:<b class='flag-5'>从</b><b class='flag-5'>C</b>调用汇编类成员函数

    AKI跨语言调用库神助攻C/C++代码迁移至HarmonyOS NEXT

    /C++代码快速迁移至HarmonyOS NEXT。凭借卓越的兼容性,AKI已成为厂商与开发者打造鸿蒙原生应用过程中广泛使用的跨语言调用解决方案。 AKI是一款专为鸿蒙原生开发设计的FFI(外部函数接口
    发表于 01-02 17:08