微軟正著(zhù)手用Rust語(yǔ)言重寫(xiě)核心Windows庫,這批內存安全度更高的代碼已被交付至軟件開(kāi)發(fā)商手中。
Windows系統安全總監David “dwizzle” Weston在上月以色列特拉維夫的BlueHat IL 2023大會(huì )上,正式宣布Rust即將入駐Windows系統內核。
“在未來(lái)幾月甚至是幾周內,大家就會(huì )開(kāi)始用內核中的Rust代碼啟動(dòng)Windows,這可太酷了。我們的基本目標是將一部分內部C++數據類(lèi)型轉換成Rust形式!
微軟對Rust的關(guān)注已經(jīng)持續了好幾年,并將其視為在產(chǎn)品交付之前發(fā)現并消除內存安全漏洞的好辦法。自2006年以來(lái),Windows團隊根據CVE修復了產(chǎn)品中的大量安全漏洞,其中約70%都跟內存安全有關(guān)。
Rust工具鏈關(guān)于揪出代碼中的潛在漏洞,從理論上打擊惡意黑客攻擊軟件弱點(diǎn)的行為。Rust編程語(yǔ)言在設計上就高度強調內存安全等保護措施,能夠減少代碼中嚴重bug的數量。
除微軟之外,谷歌等競爭對手也已公開(kāi)表達了對Rust的支持。
順應行業(yè)對內存安全編程的踴躍態(tài)度,微軟的Rust探索計劃也愈發(fā)積極。去年9月,微軟Azure首席技術(shù)官Mark RUssinovich以非官方身份表示,新的軟件項目不該再用C/C++,而應更多使用Rust。
Windows的Rust革新之路始于2020年的DWriteCore項目,它屬于Windows DWrite引擎的Windows App SSDK實(shí)現,負責進(jìn)行文本分析、布局和渲染。DWriteCore目前擁有約15.2萬(wàn)行Rust代碼,C++代碼則為約9.6萬(wàn)行。
除了安全改進(jìn)之外,據說(shuō)使用OTLS(OpenType庫服務(wù))還能將Shaping字形的處理性能提高5%至15%。目前這些功能均已向開(kāi)發(fā)人員開(kāi)放。
微軟Windows圖形設備接口(Win32 GDI)也在進(jìn)行Rust移植,目前的Rust代碼量已達3.6萬(wàn)行。最新版本的Windows 11就使用Rust版GDI啟動(dòng),其已經(jīng)通過(guò)了所有測試,只是目前仍被功能標志禁用。
Weston表示,“Windows內核中的SysCall其實(shí)就是用Rust實(shí)現的!
但微軟也沒(méi)有對Rust的未來(lái)盲目樂(lè )觀(guān)。Weston坦言“短信內可能不會(huì )用Rust全面重寫(xiě)Windows。雖然我們很喜歡Rust,但仍需要一套全面的策略,包括考慮如何保護更多原生代碼!
但無(wú)論如何,微軟的關(guān)注和支持正在以代碼貢獻的形式讓Rust變得更加強大,也成為整個(gè)開(kāi)源社區的一股重要助力。
Flask in Python項目負責人兼Sentry安全工程師Armin Ronacher就以開(kāi)源軟件開(kāi)發(fā)者的身份,在郵件采訪(fǎng)中肯定了微軟的支持對于Rust這門(mén)語(yǔ)言的重要意義。
“具體來(lái)講,我希望微軟能重用現有編譯器,從而實(shí)現更好的PDB(程序數據庫)支持。至少就目前來(lái)講,Windows對開(kāi)發(fā)者工具的支持還落后于基于DWARF(使用屬性記錄格式進(jìn)行調試)類(lèi)平臺的支持能力!
Pydantic公司創(chuàng )始人兼Python與Rust開(kāi)發(fā)者Samuel Colvin也指出,“我對微軟的這種前瞻性眼光非常贊賞,而且這也完全在情理之中。我相信微軟是在內部工程師的壓力下才選擇Rust的。如果當下我們打算開(kāi)發(fā)一款強調性能或者底層應用程序,那么Rust肯定是個(gè)明智的選項!
Colvin表示,雖然優(yōu)秀的Rust工程師相對沒(méi)那么普遍,但尋找這類(lèi)人才的難度還是要比尋找優(yōu)秀C/C++工程師更低。
“雖然擁有豐富Rust開(kāi)發(fā)經(jīng)驗的人不多,但很多工程師都抱有興趣、愿意學(xué)習。既然編寫(xiě)安全代碼本身就是件難事,使用Rust至少能把難度降低一個(gè)數量級!
“對我們這些高度依賴(lài)Rust的開(kāi)發(fā)者來(lái)說(shuō),微軟對這門(mén)語(yǔ)言表達的認可和支持真的令人非常興奮!