推荐文章

微软正在开发基于 Rust 的安全编程语言

发布时间:2019-12-09 来源:CLTPHP

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

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

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

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

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

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

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

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