微軟的“半條命”,交給了Rust!微軟傳奇技術(shù)大牛力捧Rust,自曝微軟核心基礎(chǔ)已被Rust化,三方驅(qū)動(dòng)也不放過(guò),曝內(nèi)部秘密武器
原創(chuàng) 精選編輯 | 云昭
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
五年多過(guò)去,微軟已經(jīng)把半條命交給了Rust。
眾所周知,微軟幾十年來(lái)一直都在折騰 Windows 的安全問(wèn)題,其中的一個(gè)噩夢(mèng)就是,去年7月的CrowdStrike全球范圍內(nèi)計(jì)算機(jī)藍(lán)屏事件,這引起了地震級(jí)關(guān)注。
現(xiàn)在,這家公司打算用 Rust 來(lái)解決它,還希望所有人都跟著用。
別急,這就帶大家看到一家Rusty版本的微軟。微軟在Rust道路上,其實(shí)已經(jīng)走得很遠(yuǎn)了!
Windows的部分內(nèi)核已經(jīng)用Rust重寫(xiě)了
9月,微軟 Azure CTO Mark Russinovich 在 RustConf 2025 發(fā)表了主題演講《從藍(lán)屏到橙蟹:微軟的 Rust 革命》中, 他把Windows內(nèi)核漏洞的現(xiàn)狀比作“一個(gè)地下油庫(kù),每次只漏幾滴油,但一直在漏”。
圖片
問(wèn)題在于:C 和 C++ 。代碼雖然看起來(lái)沒(méi)問(wèn)題,但崩潰起來(lái)會(huì)異常慘烈,甚至被很容易被黑掉。微軟自己的內(nèi)核,每個(gè)月都在 Win32k.sys(負(fù)責(zé)圖形和窗口的部分)里漏出提權(quán)漏洞。
于是,他們開(kāi)始用 Rust 重寫(xiě)部分內(nèi)核。不是全部,只是一些模塊。如果你現(xiàn)在翻一下 Windows 的 System32 文件夾,就會(huì)看到一個(gè) win32kbase_rs.sys 文件,那就是跑在內(nèi)核里的 Rust 代碼。
為什么Rust版本的內(nèi)核這么管用?
關(guān)鍵點(diǎn)在于:安全研究人員在 Rust 版本里找到漏洞時(shí),系統(tǒng)會(huì)直接崩潰,而不是被攻擊者利用,Russinovich 說(shuō)。
“我們認(rèn)為這是成功,”他說(shuō)。“如果是 C++ 寫(xiě)的,這個(gè)漏洞可能會(huì)導(dǎo)致權(quán)限提升,而不是一個(gè)不可利用的藍(lán)屏?!?/p>
微軟還重寫(xiě)了 DirectWrite(字體渲染器),這個(gè)模塊多年來(lái)問(wèn)題不斷。兩個(gè)開(kāi)發(fā)者花了 6 個(gè)月,寫(xiě)了 15.4 萬(wàn)行 Rust 代碼。新版本不僅比舊的快,還沒(méi)那些老毛病。
Rust 全面滲透 Azure
除了Windows內(nèi)核,作為自己管理下的 Azure 部門,更是身體力行。
Russinovich 多年來(lái)在微軟內(nèi)部推動(dòng) Rust。早在他有權(quán)下達(dá)正式命令前,他就告訴團(tuán)隊(duì):別再用 C/C++ 開(kāi)新項(xiàng)目,除非能接受垃圾回收,否則就用 Rust。
現(xiàn)在,作為 Azure CTO 兼副 CISO,他把話說(shuō)死了:
“用或新增 C++ 風(fēng)險(xiǎn)太大,不能做。”
實(shí)際落地起來(lái),動(dòng)作是真得猛:
- Caliptra 硬件根信任 從 ROM 到固件到模擬器,全都用 Rust 寫(xiě)。
- Azure Boost(管理服務(wù)器、處理網(wǎng)絡(luò)卸載的系統(tǒng))規(guī)定:所有處理“不可信輸入”的地方必須用 Rust 重寫(xiě),新 Agent 也要用 Rust。
- Hyper-V(微軟的虛擬機(jī)管理器,最安全的軟件之一,1.5ms內(nèi)啟動(dòng))已開(kāi)始 Rust 化,ARM64 模擬支持就是 Rust 寫(xiě)的。微軟還推出了 OpenVMM(開(kāi)源虛擬機(jī)管理器),兼容 Hyper-V、Windows、Linux 和 KVM,完全用 Rust 寫(xiě)。
- 還有 Hyperlight 項(xiàng)目,一個(gè)用 Rust 寫(xiě)的開(kāi)源庫(kù),用虛擬化保護(hù)來(lái)安全執(zhí)行小型函數(shù)調(diào)用。
此外,今年微軟還推出了 Azure Rust SDK。
Office&數(shù)據(jù)系統(tǒng)也換Rust重寫(xiě)了性能更好、內(nèi)存占用更少
Office 碰到的問(wèn)題是:DiskANN(語(yǔ)義搜索系統(tǒng))能支撐 Bing 的幾百個(gè)節(jié)點(diǎn),但扛不住 Office 的數(shù)百萬(wàn)文檔。
結(jié)果,團(tuán)隊(duì)直接用 Rust 重寫(xiě)了。性能更好、內(nèi)存占用更少。Office 的部分團(tuán)隊(duì)甚至說(shuō)服自己“全盤(pán)上 Rust”,覺(jué)得連 C# 也不如 Rust 的并發(fā)處理。
Azure Data Explorer 則展示了大規(guī)模遷移的過(guò)程:一個(gè)開(kāi)發(fā)者花了一年把存儲(chǔ)層移植到 Rust,后來(lái)連查詢引擎也跟上?,F(xiàn)在它處理數(shù)百 PB 數(shù)據(jù),Rust 代碼 35 萬(wàn)行,C# 還有 230 萬(wàn)行,C++ 越來(lái)越少。
Rust 與現(xiàn)有系統(tǒng)的集成
微軟發(fā)布了一個(gè) MSBuild 的 Cargo 插件,讓團(tuán)隊(duì)能把 Rust 模塊嵌入 C++/C# 項(xiàng)目。
Russinovich 直言這是出于現(xiàn)實(shí)考慮:“我們不能讓團(tuán)隊(duì)直接丟掉數(shù)百萬(wàn)行能跑的代碼?!?/p>
插件機(jī)制很簡(jiǎn)單:Rust 代碼用 Cargo 編譯,MSBuild 把它當(dāng)作依賴處理。但為此微軟花了大量精力解決鏈接和 ABI 的兼容問(wèn)題。插件已 開(kāi)源,方便其他公司復(fù)用。
給AI用的《實(shí)用 Rust 指南》
微軟還發(fā)布了內(nèi)部的 《Pragmatic Rust Guidelines》 —— 企業(yè)級(jí) Rust 開(kāi)發(fā)手冊(cè),分兩版:
- 人類版:給新人看,涵蓋錯(cuò)誤處理模式、FFI 最佳實(shí)踐、異步運(yùn)行時(shí)選擇等。
- AI 優(yōu)化版:專門為 Copilot 這類 AI 助手格式化,可以直接放進(jìn)提示詞里,AI 就會(huì)遵循。
這表明微軟不僅重視開(kāi)發(fā)者,也考慮 AI 輔助編程的普及。
圖片
重寫(xiě)“皇冠上的明珠”:SymCrypt
Russinovich 宣布微軟正在用 Rust 重寫(xiě) SymCrypt —— 微軟的核心加密庫(kù),支撐 Windows、Azure 和 Office 的所有加密。
更重要的是,微軟研究院使用 Rust 的形式化驗(yàn)證工具 來(lái)證明新代碼的數(shù)學(xué)正確性,并能反向轉(zhuǎn)譯回 C++ 方便集成。
新的后量子算法(如 ML-KEM)也直接用 Rust 從零實(shí)現(xiàn)。這意味著微軟不僅在試點(diǎn),而是把 Rust 定位為加密領(lǐng)域的主力語(yǔ)言。
不止,就連三方驅(qū)動(dòng)也要Rust化
更激進(jìn)的是,微軟還希望硬件廠商和驅(qū)動(dòng)開(kāi)發(fā)者用 Rust 寫(xiě)驅(qū)動(dòng)。他們搞了個(gè) windows-drivers-rs 框架,把 Rust 接到 Windows 驅(qū)動(dòng)工具包(WDK):
- wdk-build:把 Cargo 接入 Windows 構(gòu)建系統(tǒng)
- wdk-sys:提供 Windows 驅(qū)動(dòng) API 的原始訪問(wèn)
- wdk:提供更安全的封裝
- cargo-wdk:像普通 Rust 項(xiàng)目一樣創(chuàng)建和編譯驅(qū)動(dòng)
你現(xiàn)在已經(jīng)能寫(xiě) KMDF、UMDF、WDM 驅(qū)動(dòng),并在 Windows 11 上加載運(yùn)行。不過(guò)因?yàn)?Windows 內(nèi)核 API 不是為內(nèi)存安全設(shè)計(jì)的,很多地方還得寫(xiě)不安全的 Rust。微軟正在開(kāi)發(fā)安全封裝,讓大部分驅(qū)動(dòng)都能用“安全 Rust”。
微軟內(nèi)部開(kāi)發(fā)者一開(kāi)始也對(duì)Rust頭疼
微軟內(nèi)部調(diào)研發(fā)現(xiàn),開(kāi)發(fā)者一開(kāi)始會(huì)被 Rust 嚇到,尤其是 C++ 出身的人。但幾個(gè)月后,他們適應(yīng)了 Rust 的借用檢查器,甚至覺(jué)得寫(xiě)起來(lái)更爽。
他們最喜歡:性能提升 + 消滅 bug 類別。最不喜歡:
- 混用 C++ / C# 痛苦
- 異步調(diào)試難
- 動(dòng)態(tài)鏈接有問(wèn)題
但 Rust 的魅力就在于,即使吐槽這些,沒(méi)人想放棄 Rust。
微軟移植的秘密武器:用AI把C++翻譯成Rust
微軟正在研發(fā) AI 工具,可以用 GraphRAG 技術(shù)自動(dòng)把整個(gè) C++ 代碼庫(kù)翻譯成 Rust,保持原有結(jié)構(gòu)和功能。
Russinovich 演示了一個(gè)工具,能把 Python 應(yīng)用自動(dòng)翻譯成 Rust,并保持項(xiàng)目結(jié)構(gòu)與功能一致。
他展示了一個(gè) 200 行左右的 Python 橫版小游戲。傳統(tǒng) LLM 翻譯出來(lái)的是“垃圾代碼”,而 GraphRAG 工具能生成 可編譯、可運(yùn)行的 Rust 版本。
雖然還不清楚能否擴(kuò)展到百萬(wàn)行 C++ 工程,但如果成熟,這將解決 Rust 最大的 adoption 障礙:移植成本過(guò)高。
微軟的半條命已經(jīng)交給了Rust
“我們相信,Rust 這樣的內(nèi)存安全語(yǔ)言代表了軟件工程的未來(lái)。”
美國(guó)NSA 也早在 2022 年支持遷移到內(nèi)存安全語(yǔ)言,Linux 內(nèi)核也已支持 Rust。行業(yè)趨勢(shì)正在形成。
微軟希望硬件廠商寫(xiě) Rust 驅(qū)動(dòng),自己就不用獨(dú)自扛安全大旗。只要安全改善能被證明,工具足夠完善,生態(tài)就能慢慢轉(zhuǎn)過(guò)來(lái)。
而早期結(jié)果表明:Rust 代碼在關(guān)鍵系統(tǒng)里能“安全失敗”,而不是被利用。微軟已經(jīng)在內(nèi)核、虛擬化、加密庫(kù)中落地,現(xiàn)在他們希望整個(gè)生態(tài)跟上。
Russinovich 坦言:Rust 正在滲透微軟的核心基礎(chǔ)設(shè)施,并且只會(huì)加速。驅(qū)動(dòng)框架只是這場(chǎng)大變革的最新一步?!?/p>
從Windows內(nèi)核、Office數(shù)據(jù)系統(tǒng)的重寫(xiě),再到與現(xiàn)有軟件的集成和GraphRAG技術(shù)的大量代碼移植,再到三方驅(qū)動(dòng)框架的Rust化,可以看出微軟對(duì) Rust 的投入遠(yuǎn)不止“嘗試”。
可以確定的是,結(jié)合 AI 翻譯工具和無(wú)縫構(gòu)建集成,Rust 的門檻正在降低,可能引發(fā)行業(yè)拐點(diǎn)。
而Rust的普及,注定離不開(kāi)軟件巨頭們的傾力投入。
就比如微軟,已經(jīng)把半條命押注在Rust上。
參考鏈接:https://thenewstack.io/microsofts-rust-bet-from-blue-screens-to-safer-code/



























