图片 2

▲微软每年约有 70% 的漏洞仍然是内存安全问题,以及其他编程语言的替代方案以改善应用程序的安全性的计划

So by taking ownership at the level of ownership of objects, then we
get much closer to the level of abstraction that people are using and
it gives us the ability to build data structures without going outside
of safety.

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

▲微软每年约有 70% 的漏洞仍然是内存安全问题

图片 1

图片 2

MSRC 首席安全工程经理 Gavin Thomas
建议第三方开发人员也应该研究内存安全语言,他列举了一些原因,例如开发人员花时间和精力学习如何调试
C++
应用程序中出现的与内存相关的安全漏洞。但这显然是不合适的,“开发人员的核心工作不是担心安全性,而是要做功能开发”,Thomas
提出疑问,“为什么不在一开始就将内存安全问题引入开发语言呢?”

之后他由此牵出另一个问题:如何构建最安全的产品?不仅仅丢弃已有的东西,而要考虑可以在更加安全的系统中构建一些什么。他介绍了微软正在使用 Rust
重写某些组件,并提出:“如果我们想要隔离,并精简遗留代码,以使攻击者的利用代码无法逃逸出来,那么如何设计语言呢?” 
  

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

为此,他呼吁:“如果这个行业真正关心安全,应该专注于开发人员的工具,而不应当被所有安全设备和过时的方法弄傻眼。我们首先得努力防止开发人员陷入缺陷,而不是提供解决缺陷的指导和工具。”

微软面临的挑战是应对宽广的应用领域,范围从
C# 桌面应用到 C 或 C# Exchange、ASP.NET、Azure
与设备驱动程序,再到内存管理和启动加载器等底层 Windows 组件,以及
Windows 内核硬件抽象层(HAL,hardware abstraction
layer)。 

来源:InfoQ

MSRC
官方博客原文:

Matthew 提出了微软正在开发的基于
Rust 的新编程语言 Verona,他表示这是首次讨论该项目,Verona
是用于微软“安全基础设施编程(safe infrastructure
programming)”的一种新语言。

没有数据竞争的线程

这样高的百分比是因为 Windows 和大多数其他微软产品主要使用 C 和 C++
编写,这两种“内存不安全”(memory-unsafe)的编程语言允许开发人员对内存地址进行细粒度控制,并且可以执行代码。管理内存执行的开发人员代码中的一个漏洞可能导致一系列内存安全错误,攻击者可以利用这些错误带来危险和侵入性后果,例如远程代码执行或特权提升漏洞。

Matthew 介绍,Verona 由 C# 项目经理
Mads Torgensen 与 Microsoft Research Cambridge 研究软件工程师 Juliana
Franco 维护。 

更多的 IDE 支持

微软正在探索使用 Rust 编程语言作为 C、C++
和其他语言的替代方案,以此来改善应用程序的安全状况。

“执行内存管理确实很困难,如果有任意并发突变,则临时内存安全性将非常困难”,Matthew
介绍了 Verona 的设计思路:“Verona 的所有权模型是基于对象组的,而不是像
Rust 那样基于单个对象的所有权模型。在 C++
中,可以获得指针,并且它是基于对象的。但这与我关于数据和语法的思考不同,我认为数据结构是对象的集合,而对象的集合则是生命周期。 因此,通过在对象的所有权级别获得所有权,我们就可以更接近人们正在使用的抽象级别,它使我们能够构建数据结构而不会超出安全范围。”

类型推断

于是,探索使用诸如 Rust
之类的内存安全(memory-safe)语言被提上日程,这或将成为创建更安全的微软应用程序的替代方法。

另外,Matthew 还表示 Verona 很快将会开源。

新智元推荐

(文/开源中国)    

此前,微软表示正探索将 Rust 作为 C 和 C++
的安全替代方案,并且也对外展示了使用 Rust 重写 Windows
组件的体验,根据微软的说法,Rust 是一种从根本上考虑安全性的编程语言,他们将尝试使用
Rust 重写各种产品,因为在过去的十年里,微软 70%
以上的安全补丁都提供了与内存相关的错误,而
Rust 正是解决这个问题的“良药”。

Rust 存在的问题

Rust 最初是 Mozilla 的一个研究项目,用于更安全、更快速地重写 Firefox
浏览器。最近,Brave 浏览器还用 Rust 版本替换了原先用 C++
编写的广告拦截组件。2019 年的
StackOverflow 开发者调查显示,Rust
已连续四年蝉联“最受开发者喜爱的编程语言”。开发人员喜欢它,因为它的语法更简单,并且使用
Rust 编写的应用程序 bug
更少,因此开发人员可以专注于扩展他们的应用程序,而不是进行持续的维护工作。

(文/开源中国)    

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

图片 3

演讲中,Matthew 先是分享了微软在
MemGC(Memory Garbage Collector)上所做的工作,MemGC 是指 IE 和  Edge
浏览器上的内存垃圾回收器,它解决了标准浏览器一个特性——文档对象模型(DOM)中的漏洞,DOM
以树结构表述了 HTML 文档内容。 

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

自 2004
年以来,微软安全响应中心(MSRC)已对所有报告过的微软安全漏洞进行了分类。根据他们提供的数据,所有微软年度补丁中约有
70% 是针对内存安全漏洞的修复程序。

而根据 ZDNet
的报导,近日在一次演讲中,谈到微软为解决相应内存问题所做的工作,微软研究人员 Matthew
Parkinson 提到了微软正在开发的基于 Rust 的新编程语言 Verona

移动语义

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

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

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章