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