首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

为提高Windows 10的安全性,微软研究人员Matthew Parkinson在本周的一次演讲中披露:微软正基于Rust开发新的安全编程语言。这个项目,被微软称为“Verona"。

Verona项目主要目的是通过使用Rust开发Windows底层组件,从而让Windows 10变得更安全。

据微软透露,它们通过集成Rust和C/C++来移除Windows中不安全的代码,这种尝试达到了目标。

内存安全问题

众所周知,在每个月的第二个礼拜,微软都会发布修复Windows漏洞的安全补丁。而微软最近透露,近年来发现的大部分bug都与内存安全有关,所以它们想看看是否可以使用Rust来解决这些问题。

在编程语言中,“内存安全”是指保护内存空间不受恶意程序利用。微软的Verona项目旨在防止这类攻击发生。

虽然Verona项目最初可能只是一种尝试,但微软已经取得很大的进展。

Matthew Parkinson是微软主攻托管编程语言内存管理的研究员。在最近的一次演讲中,他分享了微软在解决内存问题方面做了哪些工作。

本次演讲中,Parkinson提到了IE和Edge的MemGC(Memory Garbage Collector,内存垃圾回收器)。

MemGC(Memory Garbage Collector):内存垃圾收集器,是Edge的内存管理机制,由IE11的Memory Protector改进而来,首次在EdgeHTML和MSHTML中使用。Edge使用MemGC来管理DOM和DOM支持的对象,其采用标记清除(Mark-Sweep)算法对垃圾进行回收,能够阻止部分UAF漏洞。

MemGC解决了与标准浏览器DOM相关的漏洞,给谷歌Zero项目的黑客们留下了深刻的印象。

Parkinson说:“我们为DOM开发了一个垃圾回收器。在IE中,内存的‘释放后使用’(use-after-free)是人们利用DOM引擎内存管理机制的常见方式。然后,微软开发了MemGC,作为DOM的守护垃圾回收器。它几乎专治这种类型的漏洞,基本上把这类攻击杜绝掉了。”

而微软要解决的另一类bug与未初始化的内存有关。

Parkinson深入探讨了一个可能会引起消费者共鸣的问题:“如何才能打造出在未来最安全的产品?我们仍然要处理遗留问题,不能把现有的东西全部都扔掉,但可以在一个更安全的系统中重建一些东西。”

Parkinson说微软正在使用Rust重写一些组件,他的演讲主要集中在语言的设计和隔离能力上。

“如果我们想要隔离能力,把遗留代码隔离起来,不让攻击者的攻击代码冒头,那么应该怎样设计这门语言?”

Verona项目

于是,Verona项目诞生。微软宣称这门语言面向的是“安全的基础设施编程”,Verona项目很“快”会开源。

据悉,这个项目得到了C#项目经理Mads Torgensen和微软剑桥研究院工程师Juliana Franco的支持。

微软面临的挑战是要覆盖“应用程序图谱”,从用于桌面应用程序的C#,到用于Exchange、ASP.NET、Azure和设备驱动程序的C和C#,再到深度的Windows组件,如内存管理、启动加载器和Windows内核硬件抽象层(HAL)。

Parkinson说:“要做好内存管理很难。如果存在任意的并发冲突,要保证临时内存安全就非常困难”。

“Rust的所有者模型基于单个对象,而Verona基于一组对象。在C++里,程序员获取指针,指针是基于对象的,并且基本上是一个对象一个指针。但我认为的数据和语法不应该是这样的,我所认为的数据结构应该是对象的集合,集合有它自己的生命周期”。

“获得一组对象的所有权,非常接近使用者的抽象层级,这样就可以在安全区里构建数据结构。”他说。

英文原文:

Microsoft: We’re creating a new Rust-like programming language for secure coding

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/pVKHvjC1hIuae8gXvPXF
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券