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

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

3天内不再提示

微软未来将使用 Rust 作为 C、C++ 以及其他编程语言的替代方案

DPVg_AI_era 来源:lq 2019-07-27 07:50 次阅读

微软近日提出,未来将使用 Rust 作为 C、C++ 以及其他编程语言的替代方案,以改善应用程序的安全性的计划。

近日,微软安全响应中心(MSRC)团队在官网更新文章,就近日提出的最新计划,即未来将使用 Rust 作为 C、C++ 以及其他编程语言的替代方案以改善应用程序的安全性的计划,从空间内存安全、时间内存安全、数据竞争等方面进行了进一步的深入补充。

首席安全技术经理 Gavin Thomas 表示,开发人员的核心工作不是担心安全性,而是做好功能开发,首先需要启用一种 “不会引入内存漏洞隐患” 的开发语言。显然,这一次的主角是 Rust。

过去 12 年,约 70% 的微软补丁针对内存漏洞

如今,内存漏洞已成为黑客攻击的主要对象。据微软最新调查数据显示,在过去 12 年里,约 70% 的微软补丁都是针对内存漏洞的。

自 2004 年以来,微软安全响应中心 (MSRC) 已经对每一个报告的微软安全漏洞进行了分类。从所有的分类中,人们得出了一个令人惊讶的事实:正如 Matt Miller 今年在 BlueHat IL 的演讲中所讨论的那样,大多数修复的漏洞和分配的 CVE 都是由开发人员无意中将内存损坏错误插入到其 C 和 C++ 的代码中造成的。这两种存在内存漏洞风险的编程语言允许开发人员在代码被执行的地方对内存地址进行细粒度控制。开发人员内存管理代码中的一个错误可能导致大量内存漏洞,攻击者便可利用这些错误造成具有危险性和侵入性的后果,比如远程代码执行 (RCE) 和权限升级漏洞(EoP)。

数据来源:微软安全响应中心网站

近年来,随着微软增加其代码库并在代码中使用更多的开源软件,这一问题并没有得以解决,反而变得更糟,而微软也并不是唯一一个暴露出内存漏洞的企业。

在官网发布的最新文章中,微软安全响应中心(MSRC)团队就如何解决内存安全问题进行了如下分析,

为了解决内存安全问题,需要采取几种不同的方式。C++ 中的 “现代” 构造(例如 span)能够在一定程度上预防某些内存安全问题。此外,我们应尽可能使用其它现代 C++ 功能(例如智能指针)。

然而,现代 C++ 仍然不具备全面的内存安全与数据争用机制。更重要的是,如果程序员不加以运用,这些功能本身将毫无意义;而且这些功能在规模较大,且较为模糊的代码库可能也无法奏效。再者,C++ 缺乏能够在安全抽象当中打包不安全代码的良好工具,这意味着虽然能够在本地级别强制执行正确的编码实践,但开发人员仍很难在 C 或者 C++ 当中构建出能够安全组合的软件组件。除此之外,我们应尽可能将软件最终迁移至具备全面内存安全特性的语言当中,例如,通过运行时检查以及垃圾回收机制,实现内存保护的 C# 或者 F#。毕竟,内存管理是一项极为复杂的功能,最好是确保必要时才与其打交道。

Rust 的优势

多年来,微软始终在寻找更安全的 C 和 C++ 的替代品。2016 年 6 月,微软曾开源 “Checked C”,这是 C 语言的一个扩展,它带来了一些解决安全问题的新特性,但依然没有彻底解决问题。由于自动内存管理,Microsoft 还有其他更安全的编程语言,C#和.NET 系列是一个,编译为 JavaScript 的 TypeScript 是另一个。这些语言被 Microsoft 及其客户广泛使用,但它们无法满足所有需求。对此,微软安全响应中心(MSRC)首席安全技术经理 Gavin Thomas 表示:“如果开发人员能够将确保内存安全的 .NET,C#等语言与高效的 C ++ 结合起来,那就太好了。也许我们可以。” 因此,Rust 成为了这项计划的主角。

据了解,Rust 创建于 2006 年,被创建者 Mozilla 称为 “C / C ++ 的替代品”。最初,它只是 Mozilla 的一个研究项目,旨在开发更安全、快速的编程语言以重写 Firefox 浏览器,大多数开发人员认为它是一个理论项目,而如今 Rust 正在逐步证明自己的实力。2016 年 8 月发布的 Firefox 48 采用了以 Rust 构建的 mp4 轨道元数据解析器,该解析器首次在 Windows 和 32 位 Linux 桌面提供。最近,Brave 浏览器用 Rust 替换了最初用 C ++ 编写的广告拦截组件。Cloudflare 和 Dropbox 目前也在生产系统中运行 Rust。

Rust 的显著特征包括:

零成本抽象

移动语义

保证内存安全

没有数据竞争的线程

基于特质的泛型

模式匹配

类型推断

最小运行时间

高效的 C 绑定

Rust 团队表示,它具有丰富的系统和所有权模型,可确保内存安全和线程安全。此外,它还提供文档,包含集成的包管理器和其他有助于提高开发人员工作效率的工具。更为重要的是,Rust 从一开始就设计了防止内存损坏的漏洞。它的语法也更为简单,由它编写的应用程序不会产生相同数量的错误,因此开发人员可以专注于扩展其应用程序,而非进行持续的维护工作。

根据 StackoverFlow2019 年开发者调查报告的数据显示,Rust 是如今最受欢迎的编程语言,因此更容易招募到相关开发人员。相比之下,在这项调查中,受访者将 C 列为第四个最讨厌的编程语言,C++ 则排名第九。

StackoverFlow2019 年开发者调查报告数据

据了解,目前,除 Mozilla 之外,全球有数百家公司正在使用 Rust,如 Amazon、Atlassian、Dropbox、Facebook、Google、Microsoft、Red Hat 和 Reddit 等。在国内,百度、字节跳动、 PingCAP、蚂蚁金服、知乎、SenseTime 等企业也都在使用 Rust。

Rust 存在的问题

然而,Rust 仍存在一些不足。据先前的一项调查显示,它需要改进的方面包括:

更好的人体工程学

更好的文档

更好的库支持

更简单的学习曲线

更多的 IDE 支持

一些用户在谈及为何不使用 Rust 的原因时表示,“尽管学习曲线和语言的复杂性仍是人们学习 Rust 的阻碍,但令许多人产生共鸣的一个方面是,只是还没有足够活跃的采用 Rust 的商业项目让人们参与其中…… 对于一些人来说,只要有强烈的动机,他们就可以克服 Rust 的学习曲线。” 此外,受缺少 IDE 支持的影响,约 10% 的用户正在寻找更好的 IDE 支持,而 5% 的老用户因此停用 Rust。

对于这项或将构建新的语言生态的计划,微软安全响应中心(MSRC)首席安全技术经理 Gavin Thomas 表示,“我们是一个响应组织,但我们也发挥积极的作用 “,“我们应该从一开始就努力防止开发人员引入问题,而不是为解决问题提供指导和工具 “。目前,关于何时在其产品或云服务上使用 Rust,微软还没有具体透露。

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

    关注

    4

    文章

    6549

    浏览量

    103865
  • 编程语言
    +关注

    关注

    10

    文章

    1927

    浏览量

    34532
  • C++
    C++
    +关注

    关注

    21

    文章

    2094

    浏览量

    73442

原文标题:微软计划使用 Rust 取代 C 和 C++

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言C++中结构体的区别

    同样是结构体,看看在C语言C++中有什么区别?
    的头像 发表于 10-30 15:11 73次阅读

    C语言其他编程语言的比较

    C语言作为一种历史悠久的编程语言,自其诞生以来,一直在软件开发领域扮演着重要角色。它以其高效、灵活和可移植性强的特点,成为了系统级
    的头像 发表于 10-29 17:30 99次阅读

    未来嵌入式系统的黄金搭档 MCX N947遇上Rust

    基于 Rust 的安全性和性能引入了 RustRust 有很多优势,内存安全、并发安全、生态系统、包管理与构建管理,同时也有与 C/C++
    的头像 发表于 07-25 09:14 1237次阅读
    <b class='flag-5'>未来</b>嵌入式系统的黄金搭档 MCX N947遇上<b class='flag-5'>Rust</b>

    C++语言基础知识

    电子发烧友网站提供《C++语言基础知识.pdf》资料免费下载
    发表于 07-19 10:58 6次下载

    [鸿蒙]OpenHarmony4.0的Rust开发

    中集成 Rust 代码,并最大程度发挥 Rust 和 OpenHarmony 中原有 C/C++ 代码的交互性,采用 GN 作为统一构建工
    的头像 发表于 02-26 17:28 765次阅读
    [鸿蒙]OpenHarmony4.0的<b class='flag-5'>Rust</b>开发

    谷歌捐款100万美元给Rust基金会,以增强C++Rust的交互性

    如今,谷歌多项核心业务仍以 C++为主要编程语言,虽然无法直接使用Rust替代现有的C++程序,
    的头像 发表于 02-19 15:41 568次阅读

    c语言,c++,java,python区别

    操作系统、嵌入式系统等对性能要求较高的场景。C语言的语法相对简单,学习曲线较平缓,也是学习其他高级语言的入门语言
    的头像 发表于 02-05 14:11 1923次阅读

    vb语言c++语言的区别

    VB语言C++语言是两种不同的编程语言,虽然它们都属于高级编程
    的头像 发表于 02-01 10:20 1870次阅读

    C++简史:C++是如何开始的

    的 MISRA C++:2023 博客系列的第二部分。 在这篇博客中,我们将深入探讨 C++ 的历史、编程语言多年来的发展历程以及它的下一
    的头像 发表于 01-11 09:00 501次阅读
    <b class='flag-5'>C++</b>简史:<b class='flag-5'>C++</b>是如何开始的

    C语言C++中那些不同的地方

    C语言虽说经常和C++在一起被大家提起,但可千万不要以为它们是一个东西。现在我们常用的C语言C
    的头像 发表于 12-07 14:29 870次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>和<b class='flag-5'>C++</b>中那些不同的地方

    如何选择创建c语言c++

    的详尽、详实、细致的讨论。 C 语言的特点和优势: C 语言是一种过程性的编程语言,它注重的是
    的头像 发表于 11-27 15:58 545次阅读

    c++怎么开始编程

    C++是一种高级的、通用的编程语言,用于开发各种类型的应用程序。它是从C语言演变而来,也是一种静态类型
    的头像 发表于 11-27 15:56 866次阅读

    C/C++语言学习大全套

    电子发烧友网站提供《C/C++语言学习大全套.rar》资料免费下载
    发表于 11-18 14:33 2次下载
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b><b class='flag-5'>语言</b>学习大全套

    Linux C/C++编程中的内存泄漏问题

    ,需要对各种编程语言和技术有深入的理解。而C++作为一种高性能的编程语言,在许多领域(如网络
    的头像 发表于 11-09 10:11 949次阅读
    Linux <b class='flag-5'>C</b>/<b class='flag-5'>C++</b><b class='flag-5'>编程</b>中的内存泄漏问题

    单片机编程语言可以用c++吗?

    单片机编程语言可以用c++吗?
    发表于 11-09 06:40