微軟正在開發基於Rust 的安全編程語言
此前,微軟表示正探索將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++ 中,可以獲得指針,並且它是基於對象的。但這與我關於數據和語法的思考不同,我認為數據結構是對象的集合,而對象的集合則是生命週期。因此,通過在對象的所有權級別獲得所有權,我們就可以更接近人們正在使用的抽象級別,它使我們能夠構建數據結構而不會超出安全範圍。”
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.
另外,Matthew 還表示Verona 很快將會開源。