自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

微軟IT故障提醒:RUST比C/C++更好

開發(fā) 前端
微軟在 Rust 工具上花費了大約 1000 萬美元,Azure 是首要目標(biāo)。該公司還希望建立一個 Rust 的長期支持版本,類似于Linux 操作系統(tǒng)。

基于 Rust 的系統(tǒng)能否避免上周 CrowdStrike 的災(zāi)難?

譯自Microsoft’s IT Outage Reminder: Rust Is Better Than C/C++,作者 Agam Shah。

上周,全球范圍內(nèi)的 Windows 系統(tǒng)都出現(xiàn)了藍屏死機 (BSOD),原因是安全供應(yīng)商 CrowdStrike 提供的錯誤配置更新。

這次故障被一些人稱為世界上最嚴(yán)重的故障,它癱瘓了關(guān)鍵基礎(chǔ)設(shè)施。然而,微軟的一位官員在周末也提醒開發(fā)人員注意更好的編碼實踐,以提高系統(tǒng)可靠性,降低系統(tǒng)崩潰和藍屏死機的可能性。

微軟Azure 的 CTOMark Russinovich表示,開發(fā)人員應(yīng)該逐步棄用 C/C++,轉(zhuǎn)而使用內(nèi)存安全的 Rust 語言,以減少系統(tǒng)崩潰和藍屏死機。當(dāng)然,這條推文與 CrowdStrike 的錯誤更新沒有直接關(guān)系。

周六,Russinovich轉(zhuǎn)發(fā)了一條 2022 年的推文,內(nèi)容是:“是時候停止啟動任何新的 C/C++ 項目,并在需要非 GC 語言的場景中使用 Rust。為了安全性和可靠性,行業(yè)應(yīng)該宣布這些語言已過時。”

空指針

藍屏死機的原因有很多,包括 Windows 中的內(nèi)存錯誤、驅(qū)動程序問題和進程問題,這些問題都依賴于用 C/C++ 編寫的內(nèi)核。前 Google 員工Zack Vorhies表示,這次故障是由于 C/C++ 代碼錯誤造成的,但這一說法被 Google 研究員Tavis Ormandy駁斥了。

Vorhies將大規(guī)模故障歸咎于空指針,即代碼中指向無效內(nèi)存位置的一行代碼,他將其描述為“來自內(nèi)存不安全的 C++ 語言的空指針”。

Ormandy 駁斥了 Vorhies 的說法,CrowdStrike 表示:“這與通道文件 291 或任何其他通道文件中包含的空字節(jié)無關(guān)?!?/p>

支持 Rust

微軟多年來一直支持 Rust,但在內(nèi)部,代碼遷移仍在進行中。該公司意識到,從 C/C++ 切換不可能在一夜之間完成。

“我們正在努力。Azure 中已經(jīng)有很多 Rust 代碼,Windows 中也有一些 Rust 代碼,”Russinovich 在最近的一條推文中說。

對 Rust 的采用是循序漸進的;第一步是創(chuàng)建原型應(yīng)用程序,以證明 Rust 代碼可以與 Windows 協(xié)同工作。微軟還將保護系統(tǒng)硬件的周邊應(yīng)用程序遷移到 Rust。

UEFI 固件

微軟正在圍繞 Rust 創(chuàng)建其 Surface 硬件的安全啟動模塊。UEFI(統(tǒng)一可擴展固件接口)包含將系統(tǒng)從啟動引導(dǎo)到 Windows 操作系統(tǒng)的固件代碼。UEFI 代碼通常位于主板上,并在計算機開機時訪問。

UEFI 固件加載到內(nèi)存中,Rust 提供內(nèi)存安全機制,以防止系統(tǒng)崩潰或被利用。許多硬件漏洞和安全問題都起源于計算機內(nèi)存內(nèi)部。

美國政府的主要技術(shù)安全機構(gòu)網(wǎng)絡(luò)安全基礎(chǔ)設(shè)施和安全局 (CISA)在 12 月呼吁公司切換到內(nèi)存安全技術(shù)。

“除了 C/C++ 之外,大多數(shù)現(xiàn)代編程語言已經(jīng)是內(nèi)存安全的。內(nèi)存安全的編程語言管理計算機的內(nèi)存,因此程序員無法引入內(nèi)存安全漏洞,”CISA 在咨詢說明中說。

Rust 保護 PC

微軟正在使用圍繞 Rust 構(gòu)建的安全性和固件來保護其自有硬件,微軟企業(yè)和操作系統(tǒng)安全副總裁Dave Weston在一次采訪中說。

該公司的 Secured-core 計劃包括為 Surface 和 Windows PC 提供穩(wěn)定且安全的啟動環(huán)境。該公司已將許多固件組件從 C 遷移到 Rust,這提高了系統(tǒng)穩(wěn)定性,并降低了系統(tǒng)暴露于黑客攻擊的漏洞的可能性。微軟還為其名為 Pluton 的安全處理器創(chuàng)建了一個完全用 Rust 編寫的實時操作系統(tǒng)。Pluton 包含一個可信平臺模塊 (TPM),用于存儲生物識別數(shù)據(jù)等關(guān)鍵安全信息。

“微軟致力于通過設(shè)計使更多事物變得安全。這是擁有我們自己的安全處理器而不是等待行業(yè)發(fā)展帶來的優(yōu)勢之一。我們將轉(zhuǎn)向 Rust……它在該領(lǐng)域比傳統(tǒng)原生語言具有巨大優(yōu)勢,”韋斯頓說。

內(nèi)存泄漏一直是 TPM 的主要問題。QuarksLab去年指出了 TPM 2.0 代碼中的兩個漏洞,這些漏洞將內(nèi)存暴露給越界讀寫,可能將關(guān)鍵信息暴露給虛擬化環(huán)境中黑客的攻擊。像 Rust 這樣的內(nèi)存安全語言可以幫助防止此類問題。

微軟與 Rust 的歷史

大約十年前,Mozilla 推出了一個包含 Rust 組件的 Firefox 瀏覽器,現(xiàn)在越來越多的程序員正在采用它。其他內(nèi)存安全語言包括Golang,Java,C#, Swift 和Python.

微軟進行了兩次實驗來檢查 Rust 在可行性和性能方面的可行性。Win32K 通常是頻繁攻擊的常見選擇,因為它提供了一種方便的特權(quán)提升攻擊。

“我們從 Rust 最能提供安全價值的地方開始,”韋斯頓在2020 年 6 月的播客中說。

第一個是字體解析器,它在瀏覽器或 Office 客戶端中創(chuàng)建了遠(yuǎn)程攻擊面。將他們的現(xiàn)代 Web 應(yīng)用程序 SDK 字體解析器 DirectWrite 轉(zhuǎn)換為 Rust 花費了 2 到 3 個月的時間。

“大約花了兩個到三個月的時間,由兩名開發(fā)人員完成。有趣的是,性能實際上得到了提升,”韋斯頓在播客中說。

第二個實驗涉及 Win32k 中的一些圖形設(shè)備接口 (GDI) 表面,Win32k 是一個最初設(shè)計于 1980 年代后期的內(nèi)部圖形組件。微軟不想重寫整個代碼,因此它嘗試將 Win32k 的各個組件切片出來以用 Rust 實現(xiàn)。實驗成功完成,Rust 組件現(xiàn)在與 Windows 一起發(fā)布。

“這尤其重要,因為 Microsoft Windows 是用 Visual C++ 編譯器或 C 編譯器編譯的,而 Rust 的后端實際上是 LLVM [低級虛擬機],”韋斯頓說。

Azure 中的 Rust

微軟還在 Azure 中廣泛實施 Rust。

該公司正在實施一個用 Rust 編寫的虛擬機管理器,它將管理 Azure 中的 Hyper-V。

Rust 也正在 Azure Boost 中實施,韋斯頓稱之為“Azure 的未來架構(gòu)”。

“這就是我們將 Azure 主機的更多性能方面卸載到智能網(wǎng)卡和/或 FPGA 等專用卡上的地方,用于存儲,”韋斯頓說。

微軟在 Rust 工具上花費了大約 1000 萬美元,Azure 是首要目標(biāo)。該公司還希望建立一個 Rust 的長期支持版本,類似于Linux 操作系統(tǒng)。

責(zé)任編輯:武曉燕 來源: 云云眾生s
相關(guān)推薦

2024-02-26 07:26:27

RustC++開發(fā)

2010-01-15 19:28:59

C++

2010-01-15 16:25:48

學(xué)習(xí)C++

2020-09-03 07:17:28

Rus微軟C++

2022-10-21 18:41:23

RustC++Azure

2010-01-26 10:01:17

學(xué)習(xí)C++

2010-01-13 18:44:03

C++編譯

2010-01-15 18:06:20

C++引用

2010-01-28 15:31:34

學(xué)習(xí)C++語言

2010-01-11 14:05:01

C++學(xué)習(xí)方法

2023-09-26 19:17:01

項目Windows操作系統(tǒng)

2010-01-08 17:13:46

Visual C++環(huán)

2010-01-25 14:43:00

C++構(gòu)造函數(shù)

2010-01-22 13:20:27

C++代碼

2010-01-20 17:32:16

C++函數(shù)

2010-01-25 11:13:18

C++棧對象

2010-01-15 16:17:04

Carbide C++

2010-01-22 18:06:24

C++代碼

2010-01-08 15:45:04

設(shè)置Dev C++

2024-06-24 07:00:00

C++RustGo
點贊
收藏

51CTO技術(shù)棧公眾號