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