時間:2019-12-05 來源:互聯網 瀏覽量:
為提高 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 解決了與標準瀏覽器 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++ 裏,程序員獲取指針,指針是基於對象的,並且基本上是一個對象一個指針。但我認為的數據和語法不應該是這樣的,我所認為的數據結構應該是對象的集合,集合有它自己的生命周期”。
“獲得一組對象的所有權,非常接近使用者的抽象層級,這樣就可以在安全區裏構建數據結構。”他說。