色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

2022年Rust安全漏洞分類(lèi)盤(pán)點(diǎn)

jf_wN0SrCdH ? 來(lái)源:Rust語(yǔ)言中文社區(qū) ? 2023-01-09 10:36 ? 次閱讀

去年我寫(xiě)了 2021 年 Rust 生態(tài)版圖調(diào)研報(bào)告 | 星辰大海(上)[1](下)[2] ,大家能看到 Rust 在各個(gè)行業(yè)領(lǐng)域中開(kāi)始暫露頭角。2022 年,在政治動(dòng)蕩、經(jīng)濟(jì)下行和疫情肆虐的世界大環(huán)境下,Rust 卻迎來(lái)了高質(zhì)量的發(fā)展。2022 年,我愿稱(chēng)之為 Rust 發(fā)展元年。

系列目錄

  • Rust 2022 漫談
  • Rust 2022 全球商業(yè)應(yīng)用盤(pán)點(diǎn)
  • Rust 2022 安全參考
  • Rust 2022 開(kāi)源生態(tài)盤(pán)點(diǎn)

Rust 2022 漫談

踏上新的征程:Rust 2024

Rust 2021 Edition 發(fā)布以后,官方就開(kāi)始制定 Rust 2024 Edition 的路線(xiàn)圖了。Rust Edition 是每三年發(fā)布的一個(gè)大版本(版次)。在 2022 年 4 月,官方博客宣布 Rust 2024 Roadmap 。讓我們了解一下 Rust 的下一步愿景是什么。

Rust 2024:廣泛應(yīng)用

Rust 的目標(biāo)是成為一門(mén)賦予每個(gè)人構(gòu)建可靠且高效軟件能力的語(yǔ)言。Rust 不僅需要設(shè)計(jì)和實(shí)現(xiàn)一種具有優(yōu)秀庫(kù)和優(yōu)秀工具的優(yōu)秀語(yǔ)言,還需要維護(hù)一個(gè)優(yōu)秀的支持社區(qū)。

Rust 2024 Edition 的目標(biāo)是廣泛使用,即,讓越來(lái)越多的人開(kāi)始使用 Rust 。為了達(dá)到這個(gè)目標(biāo),2024 Edition 需要關(guān)注以下三個(gè)重點(diǎn):

  • 拉平 Rust 語(yǔ)言的學(xué)習(xí)曲線(xiàn)。讓 Rust 更容易為新用戶(hù)和現(xiàn)有用戶(hù)所用,并讓解決難題變得更容易。這樣可以吸引更多新的 Rust 用戶(hù)。
  • 增強(qiáng) Rust 用戶(hù)間的彼此合作。
  • 讓 Rust Project (語(yǔ)言自身項(xiàng)目)的貢獻(xiàn)者更加方便
拉平學(xué)習(xí)曲線(xiàn)

建立大型 Rust 用戶(hù)團(tuán)隊(duì)的公司報(bào)告說(shuō),Rust 工程師的典型的上崗時(shí)間約為 3-6 個(gè)月。當(dāng)然,一旦人們學(xué)習(xí)了 Rust,他們通常會(huì)喜歡上它。即便如此,許多人表示在使用它時(shí)感覺(jué)“認(rèn)知開(kāi)銷(xiāo)”很高,而“學(xué)習(xí)曲線(xiàn)”仍然是不使用 Rust 的最常見(jiàn)原因。事實(shí)是,即使在您了解了 Rust 借用檢查器的工作原理之后,仍然有許多“小細(xì)節(jié)”需要正確處理才能讓您的 Rust 程序編譯。

對(duì)于 Rust 2024 目標(biāo)是讓開(kāi)發(fā)者能夠直接關(guān)注問(wèn)題域的“固有復(fù)雜性”,并盡可能避免來(lái)自 Rust 的“意外復(fù)雜性”。

實(shí)現(xiàn)這一愿景的計(jì)劃是專(zhuān)注于四個(gè)高級(jí)目標(biāo)(按從廣義到精確的順序):

  • 更精確的分析,更少的繁瑣:通過(guò)改進(jìn)借用檢查器、類(lèi)型推斷等,使編譯器能夠更好地識(shí)別代碼何時(shí)正確。識(shí)別并消除“樣板”模式,例如必須在各處復(fù)制和粘貼同一組 where 子句。
  • **更輕松地表達(dá)自己:必要時(shí)擴(kuò)展語(yǔ)言,以便開(kāi)發(fā)者可以更直接地表達(dá)他希望代碼執(zhí)行的操作。在某些情況下,這采用語(yǔ)法糖的形式(例如let-else),但在其他情況下,它可能意味著擴(kuò)展類(lèi)型系統(tǒng)以能夠描述新模式(例如泛型關(guān)聯(lián)類(lèi)型)。
  • 改進(jìn)異步支持:將我們的async/await支持?jǐn)U展到當(dāng)前的“MVP”之外,以包括 trait 中的async fnasync drop和支持異步愿景文檔路線(xiàn)圖所需的其他功能。
  • 提升dyn Trait可用性:**拓寬可以使用dyn的 trait 集,并使使用dyn更接近于使用泛型。
增強(qiáng) Rust 用戶(hù)間的彼此合作

Rust 結(jié)合了所有權(quán)和借用、底層系統(tǒng)控制以及過(guò)程宏等強(qiáng)大的可擴(kuò)展性機(jī)制,使其成為編寫(xiě)庫(kù)的絕佳語(yǔ)言。而且,多虧了 Cargo,在程序中使用一個(gè)庫(kù)只需要幾行代碼。盡管如此,仍有許多事情是庫(kù)作者不能做或不容易做到的。例如,他們無(wú)法控制用戶(hù)看到的錯(cuò)誤消息或部署需要特殊選擇加入的“Unstable”功能。Rust 2024 希望通過(guò)幫助管理功能生命周期或擴(kuò)展庫(kù)的功能來(lái)構(gòu)建使庫(kù)作者能夠更好地為用戶(hù)服務(wù)的功能。

Rust 2024 希望追求能夠在生態(tài)系統(tǒng)中進(jìn)行更多探索的變化,實(shí)現(xiàn)這一愿景的計(jì)劃是專(zhuān)注于四類(lèi)工作:

  • 功能生命周期:幫助庫(kù)作者在功能從實(shí)驗(yàn)階段過(guò)渡到最終完成階段時(shí)為其提供支持。幫助庫(kù)作者管理他們的開(kāi)發(fā)生命周期和演變。
  • 更豐富的抽象:擴(kuò)展語(yǔ)言讓庫(kù)作者表達(dá)更豐富的抽象。比如支持 GAT ,讓開(kāi)發(fā)者編寫(xiě)更通用的庫(kù)。
  • 定制開(kāi)發(fā)人員體驗(yàn):許可庫(kù)作者可以定制開(kāi)發(fā)人員體驗(yàn),例如,定制未實(shí)現(xiàn) trait 或引入自定義 lints 時(shí)用戶(hù)收到的錯(cuò)誤消息。
  • 互操作性:庫(kù)生態(tài)系統(tǒng)可以輕松協(xié)調(diào),使庫(kù)協(xié)同工作,而無(wú)需將它們捆綁在一起。庫(kù)作者可以根據(jù)需要編寫(xiě)可在多種環(huán)境中移植或特定于一種環(huán)境的代碼。
讓 Rust Project 的貢獻(xiàn)者更加方便

Rust 語(yǔ)言自身也是一個(gè) Rust 項(xiàng)目,雖然 Rust 語(yǔ)言項(xiàng)目非常活躍,但是當(dāng)潛在貢獻(xiàn)者想要對(duì) Rust 項(xiàng)目貢獻(xiàn)時(shí),可能無(wú)法弄清楚感興趣或想要貢獻(xiàn)的某些特定事物的狀態(tài)。因此 Rust 官方團(tuán)隊(duì)需要一個(gè)系統(tǒng),以便這些貢獻(xiàn)者可以很容易地知道 Rust 項(xiàng)目的狀態(tài)而更容易地找到貢獻(xiàn)點(diǎn)。

Rust 2024 實(shí)現(xiàn)這一愿景的計(jì)劃是將重點(diǎn)放在四類(lèi)工作上。

  • 一目了然地看到狀況。潛在貢獻(xiàn)者能夠很容易地識(shí)別出語(yǔ)言團(tuán)隊(duì)正在積極開(kāi)展哪些工作,以及這些設(shè)計(jì)已經(jīng)取得了多大進(jìn)展。希望每一個(gè)跟蹤問(wèn)題都能清楚地識(shí)別出需要哪些 "下一步 "來(lái)推動(dòng)該特定功能的完成,并確保這些步驟被清楚地記錄下來(lái),供可能的貢獻(xiàn)者參考。
  • 清晰的所有者和清晰的溝通。Rust是通過(guò)共識(shí)運(yùn)作的,但這并不意味著每個(gè)人都必須知道所有的細(xì)節(jié)。因此需要一個(gè)系統(tǒng),對(duì)需要完成的工作有明確的所有者,最好是不在 Lang 團(tuán)隊(duì)中的所有者。簡(jiǎn)單的分工會(huì)導(dǎo)致日后的沖突,所以我們也需要頻繁的溝通和更新,以確保每個(gè)人都能了解事情的整體發(fā)展方向,并盡早地提出問(wèn)題。
  • 高效、開(kāi)放的流程與工具支持。官方團(tuán)隊(duì)一直在尋找方法來(lái)改善他們的運(yùn)作方式。他們注意到的一點(diǎn)是,由機(jī)器人或其他工具支持的流程往往能更好地工作。

2022 語(yǔ)言改進(jìn)看點(diǎn)

2022 年 Rust 語(yǔ)言一共發(fā)布 11 個(gè)穩(wěn)定版本(1.58~1.66),從語(yǔ)言特性、編譯器到庫(kù) API 均有改進(jìn)。下面分別從這三方面羅列了一些看點(diǎn)。

語(yǔ)言特性

  • 字符串格式化支持捕獲變量的形式{ident}
  • *const T現(xiàn)在支持常量上下文中解引用
  • 泛型結(jié)構(gòu)體中使用 Unsize的規(guī)則更加寬松 ,參考 relaxed_struct_unsize 跟蹤 issue
  • 穩(wěn)定新的 asm!和 global_asm!適用于 x86、x86_64、ARM、Aarch64 和 RISC-V
  • 穩(wěn)定解構(gòu)賦值,比如支持這種形式(a, (b.x.y, c)) = (0, (1, 2));
  • 穩(wěn)定常量泛型參數(shù)支持默認(rèn)參數(shù)值,并移除類(lèi)型和 const 參數(shù)的順序限制
  • 穩(wěn)定#[cfg(panic = "...")]"unwind""abort"
  • const fn 簽名現(xiàn)在已經(jīng)支持 泛型 trait 限定、 返回位置的 impl Trait 和 函數(shù)指針的創(chuàng)建傳遞轉(zhuǎn)換,以及 extern "C"extern "Rust"
  • NLL 穩(wěn)定,當(dāng)前編譯器僅使用基于 MIR 的借用檢查
  • 穩(wěn)定let else
  • 穩(wěn)定泛型關(guān)聯(lián)類(lèi)型 (GAT),重要特性,允許開(kāi)發(fā)者可以更方便地開(kāi)發(fā)更加通用的庫(kù)和框架。
  • 未初始化的整數(shù)、浮點(diǎn)數(shù)和原始指針現(xiàn)在被視為立即 UB。使用 MaybeUninit是處理未初始化內(nèi)存的正確方法。
  • 不允許對(duì) Pin (哪怕 T 在本地)實(shí)現(xiàn) Drop
  • 重復(fù)的生命周期參數(shù)將不被自動(dòng)省略

編譯器

  • 升級(jí)到 LLVM 14
  • 出現(xiàn) lint 錯(cuò)誤后不要中止編譯
  • 錯(cuò)誤消息在更多地方指向 trait bound obligations 的來(lái)源
  • 將 -Z strip 穩(wěn)定為 -C strip
  • 添加了更多的 Tier 3 編譯目標(biāo)
  • 編譯器內(nèi)部完成了統(tǒng)一跨所有平臺(tái)的 可重入鎖 ReentrantMutex 實(shí)現(xiàn)
  • 為優(yōu)化編譯啟用 MIR 內(nèi)聯(lián)這為真實(shí)世界的 crate 提供了 3-10% 的編譯時(shí)間改進(jìn)。查看性能結(jié)果。

庫(kù) 與 API

  • copycopy_nonoverlapping重新啟用調(diào)試檢查
  • Duration::new 和相關(guān)的一系列函數(shù)可以用于常量上下文
  • 穩(wěn)定ops::is_breakops::is_continue
  • 穩(wěn)定 std::available_parallelism ,該函數(shù)可以返回程序應(yīng)使用的默認(rèn)并行度的估計(jì)值,即它可以同時(shí)執(zhí)行的計(jì)算數(shù)量的限制。也會(huì)考慮CPU 配額。例如,在一個(gè)有 8 個(gè)虛擬 CPU 但配額只允許 50% 使用率的容器中,available_parallelism將返回 4。
  • 常量上下文中新支持了很多 API ,比如 <*const T>::offset<*mut T>::offset
  • 用基于 futex 的 RwLock 取代了 Linux 上基于 pthread 的 RwLock,另外 Mutex 和 Condvar 也正在被改進(jìn)
  • 標(biāo)準(zhǔn)庫(kù)中修復(fù)了許多不正確的使用mem::uninitialized的情況
  • 增加 thread::scope 的支持

其他

  • rustdoc 支持遞歸顯示所有 Deref 實(shí)現(xiàn)
  • Cargo 支持支持縮寫(xiě)--release-r
  • Cargo 將在二進(jìn)制文件之前完成庫(kù)的文檔化
  • std::io中添加/proc/self/mem. 有關(guān)的文檔
  • Cargo 現(xiàn)在可以從workspace繼承設(shè)置,以便可以將設(shè)置集中在一個(gè)地方
  • Rustup組件rust-analyzer現(xiàn)已在穩(wěn)定channel上可用。
  • BTreeMap修復(fù)了一個(gè)健全性錯(cuò)誤,允許在容器之前刪除它借用的數(shù)據(jù)。

點(diǎn)評(píng)今年最重要的語(yǔ)言特性就是泛型關(guān)聯(lián)類(lèi)型(GAT )的穩(wěn)定。GAT 的穩(wěn)定帶給了 Rust 更高級(jí)的抽象方式,允許庫(kù)和框架開(kāi)發(fā)者開(kāi)發(fā)出更加通用的工具。

Rust 社區(qū)熱點(diǎn)觀察

Rust for Linux 進(jìn)入 Linux 內(nèi)核

參考:Rust for Linux 文檔

今年最熱的熱點(diǎn)就是 Rust for Linux 進(jìn)入 Linux 6.1 內(nèi)核。

在今年10 月,初始的 Rust 基礎(chǔ)設(shè)施已被合并到 Linux 6.1。意味著未來(lái) Rust 編程語(yǔ)言將用于內(nèi)核驅(qū)動(dòng)程序和其他子系統(tǒng)的代碼。但初始的 12.5k 行新代碼只提供了底層的基礎(chǔ)設(shè)施和一些非常基礎(chǔ)的集成,據(jù)稱(chēng)未來(lái)的 PR 將添加更多的子系統(tǒng)抽象、多個(gè) Rust 編寫(xiě)的驅(qū)動(dòng)程序等等。目前,構(gòu)建具有 Rust 支持的 Linux 內(nèi)核仍然是可選的。

在 11 月,領(lǐng)導(dǎo) Rust for Linux 工作的 Miguel Ojeda發(fā)布了一組優(yōu)化補(bǔ)丁( 28 個(gè)),為內(nèi)核提供了更多的 Rust 核心支持代碼。這些新的補(bǔ)丁很可能會(huì)在 Linux 6.2 合并窗口中看到。

整個(gè) Android 12 和 13 系統(tǒng)中,Rust 代碼中發(fā)現(xiàn)的內(nèi)存安全漏洞為零

近日, Google 發(fā)文稱(chēng) Android 中使用了內(nèi)存安全語(yǔ)言 Rust 之后,發(fā)現(xiàn)內(nèi)存安全漏洞的數(shù)量在過(guò)去幾年/版本中大幅下降,從 2019 年到 2022 年,內(nèi)存安全漏洞的年度數(shù)量從 223 個(gè)下降到 85 個(gè)。2022 年是內(nèi)存安全漏洞不再占 Android 大部分漏洞的第一年

在 Android 13 中,大約 21% 的新原生代碼(C/C++/Rust)是 Rust。AOSP 中大約有 150 萬(wàn)行 Rust 代碼,涵蓋新功能和組件,例如 Keystore2、新的超寬帶 (UWB) 堆棧、DNS-over-HTTP3、Android 的虛擬化框架 (AVF) 以及各種其他組件及其開(kāi)源依賴(lài)項(xiàng)。

迄今為止,在 Android 的 Rust 代碼中發(fā)現(xiàn)的內(nèi)存安全漏洞為零。

我們不希望這個(gè)數(shù)字永遠(yuǎn)保持為零,但考慮到兩個(gè) Android 版本中新 Rust 代碼的數(shù)量,以及使用它的安全敏感組件,這是一個(gè)重要的結(jié)果。它表明 Rust 正在實(shí)現(xiàn)其防止 Android 最常見(jiàn)漏洞來(lái)源的預(yù)期目的。在許多 Android 的 C/C++ 組件(例如媒體、藍(lán)牙NFC 等)中,歷史漏洞密度大于 1/kLOC(每千行代碼有 1 個(gè)漏洞)。基于這個(gè)歷史漏洞密度,使用 Rust 很可能已經(jīng)阻止了數(shù)百個(gè)漏洞進(jìn)入生產(chǎn)環(huán)境。

在 Android 的 Rust 中使用 unsafe 似乎按預(yù)期工作。它很少被使用,當(dāng)它被使用時(shí),它是一種封裝行為,更容易推理和審查安全性。比如,UWB 代碼中 unsafe 有兩種用法:一種是實(shí)現(xiàn)對(duì)存儲(chǔ)在 Java 對(duì)象中的 Rust 對(duì)象的引用,另一種是用于拆解該對(duì)象。Unsafe 在這種情況下非常有用,因?yàn)閷?duì)這段代碼的額外關(guān)注使我們能夠發(fā)現(xiàn)可能的競(jìng)爭(zhēng)條件并加以防范。

Rust 在 Android 平臺(tái)上的使用正在增長(zhǎng),但這還沒(méi)有結(jié)束。為了實(shí)現(xiàn)提高 Android 范圍內(nèi)的安全性、穩(wěn)定性和質(zhì)量的目標(biāo),Android 團(tuán)隊(duì)決定需要在本機(jī)代碼的任何地方使用 Rust。目前正在用 Rust 實(shí)現(xiàn)用戶(hù)空間 HAL。在受信任的應(yīng)用程序中添加了對(duì) Rust 的支持,已將 Android 虛擬化框架中的 VM 固件遷移到 Rust。隨著 Android 從 C/C++ 遷移到 Java/Kotlin/Rust,預(yù)計(jì)內(nèi)存安全漏洞的數(shù)量將繼續(xù)下降。

Rust 語(yǔ)言引入了吉祥物彩蛋

當(dāng)你使用 Rust 吉祥物 定義變量時(shí),

fnmain(){
let=1;
}

Rust 編譯器會(huì)拋出專(zhuān)屬的錯(cuò)誤:

error: Ferris cannot be used as an identifier
 --> src/main.rs9
  |
2 |     let  = 1;
  |         ^^ help: try using their name instead: `ferris`

本來(lái)是非官方吉祥物,這個(gè)彩蛋也許是來(lái)自官方的一種文化認(rèn)可。

rust-analyzer 被納入 rust-lang 官方倉(cāng)庫(kù)中

rust-analyzer 現(xiàn)在已經(jīng)成為了 Rust 官方的一員。VSCode 、NeoVIM 和 Emacs 等編輯器對(duì) ra 有很好的支持。如果你使用基于 IntelliJ 平臺(tái)的 IDE,如 CLion、IDEA 或 PyCharm,則不需要 rust-analyzer,而應(yīng)該使用JetBrains 的IntelliJ Rust插件。

2019 年 rust-analyzer 社區(qū)剛起步構(gòu)建 IDE 的基礎(chǔ),到 2020 年,RFC2912中 就提倡:“將 rust-analyzer 作為官方的 LSP(語(yǔ)言服務(wù)器協(xié)議)實(shí)現(xiàn)”。RFC 在社區(qū)的壓倒性支持下被接受:它仍然是有史以來(lái)投票最多的 Rust RFC。讓 ra 成為官方的一員將持續(xù)推動(dòng)該 RFC 的落地。接下來(lái),將 rust-analyzer 宣傳為 Rust IDE 支持的極有可能的未來(lái),收集反饋,并根據(jù)其積極結(jié)果,淘汰當(dāng)前推薦的語(yǔ)言服務(wù)器 RLS。

來(lái)自開(kāi)源作者的吶喊:“請(qǐng)記住,我的項(xiàng)目是零收入”

開(kāi)源項(xiàng)目Kind和HVM的作者 Victor Taelin ,收到一位社區(qū)中有影響力的人的如是批評(píng):“這個(gè)項(xiàng)目背后的人往往會(huì)建立令人印象深刻的東西,但后來(lái)他突然放棄了這些東西,然后去做點(diǎn)別的……”。這份批評(píng)讓 Victor 非常難過(guò),因?yàn)檫@位來(lái)自社區(qū)有影響力的人也給予了 Victor 很多靈感。

Victor 公開(kāi)聲明:“我們只是沒(méi)有資金!看,這不是大公司的工作,甚至不是大團(tuán)隊(duì)的工作。80% 的代碼仍然是我做的。有一些朋友幫忙,但他們大多是兼職,自愿,還在學(xué)習(xí)這東西,所以幫助有限。**然而,什么都沒(méi)有被放棄。我們只是受到我們微小規(guī)模的限制。我沒(méi)有報(bào)酬,這不是一家營(yíng)利性公司,我只是一個(gè)創(chuàng)造酷炫、免費(fèi)技術(shù)以推動(dòng)人類(lèi)進(jìn)步的人。我熱愛(ài)我的工作!不過(guò),如果您確實(shí)希望看到我的想法更快地發(fā)展,請(qǐng)考慮對(duì)它們進(jìn)行投資”。

Victor 說(shuō):不管怎樣,HVM 和 Kind 都在積極、熱情的開(kāi)發(fā)中,并將繼續(xù)向前發(fā)展,即使有點(diǎn)慢!

來(lái)自社區(qū)的另一位回復(fù)非常暖心:“老實(shí)說(shuō),即使你放棄了你的項(xiàng)目,我仍然會(huì)感謝你的工作。你的輸出是創(chuàng)新的,我可以看到它們影響未來(lái)的 PL 發(fā)展。就我個(gè)人而言,我認(rèn)為你對(duì)我自己產(chǎn)生了積極的影響,并且確實(shí)幫助激發(fā)了我對(duì)類(lèi)型理論的興趣。綜上所述,請(qǐng)不要讓一些誤導(dǎo)性的批評(píng)使您沮喪。只要繼續(xù)做你最擅長(zhǎng)的事情,你就會(huì)知道這些年來(lái)你已經(jīng)贏得了很多感激的支持者。”

Rust 1.65 穩(wěn)定版發(fā)布

Rust 1.65 穩(wěn)定版發(fā)布帶來(lái)了 Rust 最重要的特性:泛型關(guān)聯(lián)類(lèi)型。該特性的重要性可以這么說(shuō):如果沒(méi)有它, Rust 將停滯不前。GAT 非常通用,可以實(shí)現(xiàn)許多當(dāng)前無(wú)法編寫(xiě)的模式。有關(guān)更多信息,請(qǐng)查看穩(wěn)定公告。

虛幻引擎集成 Rust

社區(qū)中有人將 Rust 集成到了 虛幻引擎(Unreal Engine )5 中,發(fā)布了 unreal-rust。unreal-rust 使用基于 Bevy 的實(shí)體組件系統(tǒng) (ECS),然后 Rust 通過(guò) C FFI 與 Unreal 通信,在 Unreal 之上編寫(xiě)AActor并以 Rust 友好的方式公開(kāi)其 API。

雖然是個(gè)人項(xiàng)目,但非常有創(chuàng)意

Asahi Lina 談她用 Rust 編寫(xiě)內(nèi)核驅(qū)動(dòng)程序的經(jīng)歷

Asahi Lina 用 Rust 編寫(xiě)了新的 Apple AGX GPU 驅(qū)動(dòng)程序(M1 和 M2)。這些 GPU 運(yùn)行固件并且具有相當(dāng)復(fù)雜的需要宿主機(jī)管理的共享內(nèi)存數(shù)據(jù)結(jié)構(gòu),所以 Lina 一直傾向于 Rust。在使用 Rust 之后,Asahi Lina 如是說(shuō):「關(guān)于內(nèi)核中的 Rust 是否有用存在很多奇怪的爭(zhēng)論......根據(jù)我的經(jīng)驗(yàn),它比我想象的更有用!我從第一個(gè)渲染到一個(gè)穩(wěn)定的桌面,可以運(yùn)行游戲、瀏覽器等。在我的驅(qū)動(dòng)程序上工作了大約兩天!所有并發(fā)錯(cuò)誤都隨著 Rust 消失了!內(nèi)存在需要釋放時(shí)被釋放!一旦你學(xué)會(huì)了讓 Rust 與你一起工作,我覺(jué)得它會(huì)引導(dǎo)你編寫(xiě)正確的代碼,甚至超出語(yǔ)言的安全承諾。這真的很神奇!」

NSA 發(fā)布關(guān)于如何防范軟件內(nèi)存安全問(wèn)題的指南

美國(guó)國(guó)家安全局 (NSA) 發(fā)布了一份指南,以幫助軟件開(kāi)發(fā)人員和操作員預(yù)防和緩解軟件內(nèi)存安全問(wèn)題,這些問(wèn)題占可利用漏洞的很大一部分。建議使用內(nèi)存安全的Rust 語(yǔ)言。

NSA 方面表示,內(nèi)存安全問(wèn)題在可利用的漏洞中占比很大。并引用了微軟的數(shù)據(jù)指出,該公司從 2006 年到 2018 年 70% 的漏洞是由于內(nèi)存安全問(wèn)題造成的;谷歌的 Chrome 在幾年內(nèi)也發(fā)現(xiàn)了類(lèi)似比例的內(nèi)存安全漏洞。

該組織認(rèn)為,惡意的網(wǎng)絡(luò)行為者會(huì)利用不良的內(nèi)存管理問(wèn)題來(lái)訪(fǎng)問(wèn)敏感信息、頒布未經(jīng)授權(quán)的代碼執(zhí)行、以及造成其他負(fù)面影響,而這些通常會(huì)危及設(shè)備并成為大規(guī)模網(wǎng)絡(luò)入侵的第一步。

Rust 連續(xù) 7 年榮獲 Stackoverflow 最受歡迎語(yǔ)言

每年面向百萬(wàn)開(kāi)發(fā)者的Stackoverflow 調(diào)研結(jié)果顯示,Rust 再次拿下最受歡迎語(yǔ)言,今年是連續(xù)第七年收獲此殊榮。并且,在今年 11月的 TIOBE 編程語(yǔ)言排行榜中,Rust 也首次進(jìn)入了前二十,暫排第 17 位。

Rust 基金會(huì)成員增加到了 39 家

在 2021 年2 月9 日 Rust 基金會(huì)成立之初,只有Mozilla、Amazon、華為、谷歌、微軟五家創(chuàng)始白金成員,截止到今天(2022.12月)已經(jīng)有 39 家不同領(lǐng)域的頭部公司成為了Rust 基金會(huì)成員,共同推動(dòng) Rust 在各自領(lǐng)域的落地。

本節(jié)小結(jié)

2022 年,是新的起點(diǎn)。在 2021 Edition 發(fā)布之后,官方又起草和制定了 2024 Edition 路線(xiàn)圖,并且在該路線(xiàn)圖的指導(dǎo)下開(kāi)啟了新的征程。Rust 2024 的目標(biāo)是讓 Rust 廣泛應(yīng)用。

2022年,Rust 語(yǔ)言特性上取得了重大進(jìn)展,穩(wěn)定發(fā)布了泛型關(guān)聯(lián)類(lèi)型。這一特性的發(fā)布將解鎖 Rust 語(yǔ)言高階統(tǒng)一抽象,促進(jìn)生態(tài)庫(kù)和框架的長(zhǎng)足發(fā)展,以及 Rust 異步特性向零成本抽象的目標(biāo)更近了一步。

2022 年,最受人們關(guān)注的是 Rust for Linux 進(jìn)入Linux 內(nèi)核這件事。雖然當(dāng)前進(jìn)入內(nèi)核的只是初步基礎(chǔ)補(bǔ)丁,但這關(guān)鍵的一步已經(jīng)為未來(lái) Rust 在 Linux 內(nèi)核領(lǐng)域發(fā)展奠定了很好的基礎(chǔ)。

2022 年,也是收獲碩果的一年。Google Android 團(tuán)隊(duì)宣布,2022 年是內(nèi)存安全漏洞不再占 Android 大部分漏洞的第一年。Android 13 已經(jīng)有大約 21% 的新原生代碼(C/C++/Rust)是 Rust。AOSP 中大約有 150 萬(wàn)行 Rust 代碼,涵蓋新功能和組件。并且,迄今為止,在 Android 的 Rust 代碼中發(fā)現(xiàn)的內(nèi)存安全漏洞為零。

2022 年,我們也看到社區(qū)中一些個(gè)人開(kāi)發(fā)者,雖然遭遇不公平的流言蜚語(yǔ),依然對(duì) Rust 熱愛(ài)依舊,在零收入的狀況下默默地使用 Rust 實(shí)現(xiàn)自己的開(kāi)源項(xiàng)目。

2022 年,可以說(shuō)是 Rust 語(yǔ)言的發(fā)展元年。隨著越來(lái)越多的公司采用 Rust ,Rust 變得越來(lái)越受歡迎。展望未來(lái),我們衷心希望 Rust 2024 Edition 發(fā)布目標(biāo),讓 Rust 廣泛應(yīng)用,可以圓滿(mǎn)實(shí)現(xiàn)。

Rust 2022 全球商業(yè)化應(yīng)用盤(pán)點(diǎn)

  • Rust 基金會(huì)成員應(yīng)用盤(pán)點(diǎn)
  • Rust 初創(chuàng)產(chǎn)品
  • Rust 領(lǐng)域應(yīng)用
  • 總結(jié)

2022 年是 Rust 語(yǔ)言距離穩(wěn)定版正式發(fā)布以來(lái)已經(jīng)走過(guò)的第七年。從 Rust 發(fā)布以來(lái),就一直受到廣大開(kāi)發(fā)者的歡迎。在 Stackoverflow 來(lái)自 180 個(gè)國(guó)家 7萬(wàn)3千多名開(kāi)發(fā)者的投票調(diào)查中,Rust 連續(xù)七年榮獲最受歡迎的編程語(yǔ)言,87% 的開(kāi)發(fā)人員希望使用 Rust 。

2022 年也距離 Rust 基金會(huì)成立的第二年。在 2021 年2 月9 日 Rust 基金會(huì)成立之初,只有Mozilla、Amazon、華為、谷歌、微軟五家創(chuàng)始白金成員,截止到今天(2022.12月)已經(jīng)有 39 家不同領(lǐng)域的頭部公司成為了Rust 基金會(huì)成員,共同推動(dòng) Rust 在各自領(lǐng)域的落地。

2022 年在 Rust 基金會(huì)成員公司之外,也有不少公司開(kāi)始使用 Rust。其中包含初創(chuàng)企業(yè),使用 Rust 從頭構(gòu)建產(chǎn)品;也有成立多年的老牌公司,使用 Rust 來(lái)改進(jìn)生產(chǎn)。Rust 開(kāi)發(fā)者數(shù)量也逐漸增多。據(jù)開(kāi)發(fā)者調(diào)查分析公司 SlashData 發(fā)布了一份題為“第 22 屆開(kāi)發(fā)者國(guó)家狀況”的報(bào)告指出,從 2020 年 Q1 季度到 2022 年 Q1 季度,Rust 語(yǔ)言的開(kāi)發(fā)者用戶(hù)量從 60 萬(wàn)猛增到了 220 萬(wàn)。TIOBE 編程語(yǔ)言排行榜2022 年 11 月榜單中,Rust 語(yǔ)言進(jìn)入了前 20 。

可以說(shuō),2022 年是 Rust 語(yǔ)言開(kāi)始廣泛應(yīng)用的元年。本文就讓我們來(lái)盤(pán)點(diǎn)一下 Rust 在全球商業(yè)化領(lǐng)域的應(yīng)用狀態(tài)。

Rust 基金會(huì)成員應(yīng)用盤(pán)點(diǎn)

Rust 基金會(huì)成員投資 Rust ,尤其是白金成員們,是在投資 Rust 的可持續(xù)性,他們認(rèn)為應(yīng)該使用這種語(yǔ)言來(lái)構(gòu)建可持續(xù)且安全節(jié)能的解決方案。

白金成員如何應(yīng)用 Rust

在 AWS,Rust 已迅速成為大規(guī)模構(gòu)建基礎(chǔ)設(shè)施的關(guān)鍵。Firecracker是一種開(kāi)源虛擬化技術(shù),為AWS Lambda和其他無(wú)服務(wù)器產(chǎn)品提供支持,它于 2018 年公開(kāi)發(fā)布。AWS 使用 Rust 來(lái)交付Amazon Simple Storage Service(Amazon S3)、Amazon Elastic Compute Cloud(Amazon EC2)、Amazon CloudFront等服務(wù)。2020 年,推出了Bottlerocket,這是一個(gè)用 Rust 編寫(xiě)的基于 Linux 的容器操作系統(tǒng)。Amazon EC2 團(tuán)隊(duì)使用 Rust 作為新AWS Nitro 系統(tǒng)組件的首選語(yǔ)言,包括敏感應(yīng)用程序,例如Nitro Enclaves(用于處理機(jī)密數(shù)據(jù)的隔離 EC2 環(huán)境)。

此外,過(guò)去一年,Amazon Prime Video 使用了 WASM 和 egui 為超過(guò) 8k 多種設(shè)備類(lèi)型更新其應(yīng)用向數(shù)百萬(wàn)客戶(hù)提供內(nèi)容(例如游戲機(jī)、電視、機(jī)頂盒和流媒體等)。他們認(rèn)為對(duì) Rust 和 WebAssembly 的投資得到了回報(bào),經(jīng)過(guò)一年的開(kāi)發(fā),共編寫(xiě)了 37,000 行 Rust 代碼,顯著地提高了性能、穩(wěn)定性和 CPU 消耗并降低了內(nèi)存利用率。

Google 將 Rust 應(yīng)用于Chromium、 Android 和 Fuchsia OS 中,其中 Chromium 對(duì) Rust 支持是實(shí)驗(yàn)性的。開(kāi)發(fā)者可以使用 Rust 為 Android 和 Fuchsia OS 開(kāi)發(fā)組件,并且 Rust 在 Android 和 Fuchsia OS 內(nèi)部代碼使用超過(guò)了一定的比例,尤其是 Fuchsia OS 中 Rust 代碼占比已經(jīng)超過(guò) 50%。因?yàn)槠鋬?nèi)部 Cpp 代碼比較多,所以 Google 聯(lián)合 Meta (原 Facebook) 一起開(kāi)發(fā)了 cxx 用于和 Cpp 安全交互。在今年 10 月份,Google 又推出基于開(kāi)源 RISC-V 芯片嵌入式系統(tǒng)的新型安全操作系統(tǒng) KataOS。Sparrow 是 KataOS 的參考實(shí)現(xiàn),它運(yùn)行在seL4 之上,幾乎完全用 Rust 編寫(xiě)。該操作系統(tǒng)不適用于臺(tái)式機(jī)或智能手機(jī),而是用于物聯(lián)網(wǎng),可能用于智能家居。目標(biāo)是為嵌入式硬件或邊緣設(shè)備構(gòu)建可驗(yàn)證的安全操作系統(tǒng),例如用于捕獲圖像的網(wǎng)絡(luò)連接相機(jī),這些圖像在設(shè)備上或云中處理以進(jìn)行機(jī)器學(xué)習(xí)。在最新發(fā)布的 Android 13 版本中,Google 也宣布在 Android 13 中,大約 21% 的新原生代碼(C/C++/Rust)是 Rust。AOSP 中大約有 150 萬(wàn)行 Rust 代碼,涵蓋新功能和組件。并且,迄今為止,在 Android 的 Rust 代碼中發(fā)現(xiàn)的內(nèi)存安全漏洞為零。 為了實(shí)現(xiàn)提高 Android 范圍內(nèi)的安全性、穩(wěn)定性和質(zhì)量的目標(biāo),Android 團(tuán)隊(duì)表示需要能夠在代碼庫(kù)中需要本地代碼的任何地方使用 Rust。

華為的目標(biāo)是引領(lǐng)通信系統(tǒng)軟件向安全可信演進(jìn),其中 Rust 語(yǔ)言正在發(fā)揮很大的作用。華為希望通過(guò)部分 C/C++ 代碼的遷移,在保證高性能的同時(shí),擁有更高的安全性。在此過(guò)程中, 為開(kāi)發(fā)者提供一套自動(dòng)化工具支持:基于開(kāi)源的 C2Rust 轉(zhuǎn)譯工具, 首先從 C 代碼生成 Rust 代碼, 然后通過(guò)源到源變換工具自動(dòng)重構(gòu)。在華為內(nèi)部還基于 Actor 的并發(fā)編程模式開(kāi)發(fā)了 Rust 庫(kù),方便程序員充分利用 Rust的語(yǔ)言特性, 例如async/await等開(kāi)發(fā)異步程序。華為也為 Rust 社區(qū)貢獻(xiàn)了許多重要的功能特性。例如,為 Rust 編譯器提交了一系列代碼,使得 Rust 編譯目標(biāo)可以支持ARM AArch64 32位大端變體ILP32芯片組, 用于華為的通信產(chǎn)品中。這些改進(jìn)使得華為和友商可以在這些常用網(wǎng)絡(luò)硬件架構(gòu)上執(zhí)行Rust 原生程序。這些代碼已經(jīng)通過(guò)華為的 Rust 專(zhuān)家Amanieu d'Antras提交給了LLVM 編譯器,libc 庫(kù), 以及Rust 編譯器等開(kāi)源社區(qū)。華為國(guó)內(nèi)工程師 李原 也為 Rust 做了很多貢獻(xiàn),其中包括修復(fù)了多個(gè)當(dāng)前并行編譯導(dǎo)致的程序錯(cuò)誤,(比如串行并行模式在迭代器panic場(chǎng)景的行為一致性、并行編譯死鎖處理的ICE問(wèn)題)、分析并優(yōu)化了多個(gè)編譯過(guò)程中頻繁鎖同步導(dǎo)致并行編譯效率降低的問(wèn)題(比如生成attributes編號(hào)、生成生命周期依賴(lài)分析表等等)、優(yōu)化了編譯器中多處診斷信息的生成,(比如查詢(xún)中l(wèi)ayout深度限制、錯(cuò)誤using語(yǔ)句的提示信息、let語(yǔ)句中默認(rèn)類(lèi)型的提示信息等),并且在2022年李原主導(dǎo)發(fā)起重啟 Rust 編譯器并行編譯工作組,準(zhǔn)備為加速 Rust 編譯器并行編譯做出貢獻(xiàn)。

Meta(原Facebook )從 2016 年開(kāi)始使用 Rust,也就是該語(yǔ)言的 1.0 版發(fā)布一年后。Rust 是它用于 Diem(以前的 Libra)穩(wěn)定幣區(qū)塊鏈、Mononoke 源代碼控制服務(wù)器和Meta 的“用于區(qū)塊鏈的新的安全編程語(yǔ)言”Move的主要語(yǔ)言。 選擇 Rust 而不是 C++ 對(duì) Meta 來(lái)說(shuō)是一個(gè)重大決定,因?yàn)樗拇蟛糠趾蠖舜a都是用 C++ 編寫(xiě)的,這使其成為顯而易見(jiàn)的選擇。據(jù) Meta 稱(chēng),在 Mononoke 被認(rèn)為取得成功后,Rust 的采用勢(shì)頭強(qiáng)勁,吸引了具有 Python 和 JavaScript 背景的工程師。現(xiàn)在,Rust 與 Hack、C++ 和 Python 一起成為主要受支持的服務(wù)器端語(yǔ)言。Meta現(xiàn)在建議將 Rust 用于編寫(xiě)命令行界面 (CLI) 工具和“性能敏感的后端服務(wù)”。Meta 內(nèi)部也針對(duì) Rust 建立了專(zhuān)門(mén)的新手訓(xùn)練營(yíng),用于培養(yǎng) Rust 工程師。Meta 對(duì) Rust 生態(tài)的重要貢獻(xiàn)之一是 cxx ,用于 Rust 和 Cpp 之間的安全交互。在 2022年 7 月,Meta 首次宣布 Rust 成為 Meta 支持服務(wù)器端使用的編程語(yǔ)言。

Microsoft 擁有世界上最大的 C/C++ 代碼庫(kù)之一。從 Windows 和 Office 到 Azure 云,其所有核心產(chǎn)品都在其上運(yùn)行。從2019年開(kāi)始,微軟開(kāi)始尋找內(nèi)存安全的語(yǔ)言,與此同時(shí),引入了 Rust 進(jìn)行嘗試。隨后在 GitHub 上開(kāi)源了 Rust for Windows 庫(kù) ,供 Rust 開(kāi)發(fā)者們無(wú)縫地使用 Windows API。此外,Azure 孵化的團(tuán)隊(duì) DeisLabs 開(kāi)始嘗試用 Rust 構(gòu)建 Krustlet 來(lái)允許開(kāi)發(fā)人員在 Kubernetes 中運(yùn)行多個(gè) WebAssembly 模塊的服務(wù)。2022 年微軟 Azure首席技術(shù)官M(fèi)ark Russinovich表示,C 和C++不應(yīng)該用于新項(xiàng)目。“是時(shí)候停止使用 C/C++ 啟動(dòng)任何新項(xiàng)目,并將 Rust 用于那些需要非 GC 語(yǔ)言的場(chǎng)景。為了安全性和可靠性,業(yè)界應(yīng)該宣布這些語(yǔ)言已被棄用”。他在 Twitter 上表示,表達(dá)的是個(gè)人觀點(diǎn),而不是微軟的新政策。

2022 年 DeisLabs 初創(chuàng)團(tuán)隊(duì)離職后出來(lái)創(chuàng)業(yè)創(chuàng)建了 Fermyon 公司 ,專(zhuān)注于 WebAssembly 云產(chǎn)品。

JFrog 于 2022 年 9 月宣布加入了 Rust 基金會(huì)成為白金會(huì)員。JFrog 提供了一個(gè)DevOps 平臺(tái) ,并且支持多種主流編程語(yǔ)言。JFrog 加入 Rust 基金會(huì)的目的就是為了與 Rust 社區(qū)和 Rust 基金會(huì)合作,幫助保護(hù)軟件供應(yīng)鏈。JFrog 將識(shí)別并消除 Rust 平臺(tái)和生態(tài)系統(tǒng)面臨的安全威脅,并修正 Rust 平臺(tái)問(wèn)題以防止進(jìn)一步的風(fēng)險(xiǎn)。隨著物聯(lián)網(wǎng)(IoT)、云計(jì)算和大數(shù)據(jù)的出現(xiàn),網(wǎng)絡(luò)安全威脅也越來(lái)越大。在過(guò)去兩年中,Rust 編程語(yǔ)言的使用量增加了兩倍,達(dá)到 220 萬(wàn)開(kāi)發(fā)人員。JFrog 與非營(yíng)利組織的合作反映了其從最近采用的覆蓋組織軟件供應(yīng)鏈的安全解決方案中獲益的戰(zhàn)略。

金牌成員如何應(yīng)用 Rust

Shopify 是加拿大跨國(guó)電商公司,在 2022 年 12 月份宣布加入 Rust 基金會(huì),成為基金會(huì)第一個(gè)金牌會(huì)員。Shopify 在服務(wù)端一直使用 Ruby 語(yǔ)言,從2021年開(kāi)始,Shopify 團(tuán)隊(duì)開(kāi)始使用 Rust 實(shí)現(xiàn)YJIT,這是一種新的 CRuby 即時(shí) (JIT) 編譯器 ,到今年合并到了 Ruby 3.1 版本中。在最近的一次性能測(cè)試中,YJIT 的性能比 Ruby 解釋器 CRuby 快了 38%。

除此之外, Shopify 也決定采用 Rust 作為公司的系統(tǒng)編程語(yǔ)言,比如編寫(xiě)高性能網(wǎng)絡(luò)服務(wù)器。在 Shopify 看來(lái),Rust 的一致性、性能、社區(qū)生態(tài)、生產(chǎn)力、安全和互操作性是他們采用 Rust 用于系統(tǒng)編程的原因。

銀牌會(huì)員及普通贊助商如何應(yīng)用 Rust

Rust 基金會(huì)的銀牌成員逐漸增多,目前已經(jīng)達(dá)到了 28 家公司。這些公司分布在各個(gè)領(lǐng)域。此外,還包括三家非會(huì)員普通贊助商。在文后的「Rust 其他領(lǐng)域應(yīng)用」小節(jié)將統(tǒng)計(jì)他們的應(yīng)用信息。

Rust 初創(chuàng)產(chǎn)品

2022 年也可以算作是 Rust 創(chuàng)業(yè)元年。因?yàn)榻衲觋懤m(xù)有好幾家采用 Rust 的創(chuàng)業(yè)公司拿到了巨額融資。

Fermyon

首當(dāng)其沖的是 Fermyon 技術(shù)公司。在今年十月份,F(xiàn)ermyon 宣布拿到了 2000 萬(wàn)美元的 A 輪融資。并且發(fā)布了 Fermyon Cloud 平臺(tái)。

Fermyon Cloud 旨在使基于 WebAssembly 的應(yīng)用程序和微服務(wù)的[1]部署變得快速和容易。使用 Fermyon 的 Spin 構(gòu)建工具(基于 Rust 實(shí)現(xiàn)),為 WebAssembly 編譯和打包應(yīng)用程序,然后可以立即將其部署到 Fermyon Cloud。Fermymon 的工具鏈處理將應(yīng)用程序代碼投入生產(chǎn)所需的所有基礎(chǔ)設(shè)施配置和部署步驟,使應(yīng)用程序開(kāi)發(fā)人員無(wú)需了解有關(guān)底層基礎(chǔ)設(shè)施的任何信息。

WebAssembly 起源于瀏覽器,針對(duì)高安全性和低資源消耗進(jìn)行了優(yōu)化。通過(guò)將 WebAssembly 引入服務(wù)器環(huán)境,應(yīng)用程序可以享受相同的優(yōu)化,同時(shí)使用通用代碼庫(kù)部署到各種環(huán)境:云、邊緣、物聯(lián)網(wǎng)或任何組合。Fermyon 以這些概念為基礎(chǔ),將 WebAssembly 引入數(shù)據(jù)中心和云端。Fermyon 希望實(shí)現(xiàn)類(lèi)似于 Java 的“一次編寫(xiě),隨處運(yùn)行”的承諾,同時(shí)又具有 Heroku 的易用性。它使開(kāi)發(fā)人員無(wú)需過(guò)多考慮基礎(chǔ)架構(gòu),從而有助于消除應(yīng)用程序開(kāi)發(fā)中的摩擦。

“使用 Fermyon Spin,開(kāi)發(fā)人員可以快速創(chuàng)建 WebAssembly 微服務(wù)應(yīng)用程序,現(xiàn)在使用 Fermyon Cloud,開(kāi)發(fā)人員可以在不到兩分鐘的時(shí)間內(nèi)從零開(kāi)始實(shí)現(xiàn)并部署應(yīng)用程序。這是 WebAssembly 在云中實(shí)現(xiàn)的承諾:快速開(kāi)發(fā)、快速部署、快速執(zhí)行。”,F(xiàn)ermyon 的聯(lián)合創(chuàng)始人兼首席執(zhí)行官 Matt Butcher 在一份聲明中如是說(shuō)。

新終端 Warp

雖然現(xiàn)在的常用的終端模擬器也有很多好用的,比如 Rust 實(shí)現(xiàn)的高性能跨平臺(tái)現(xiàn)代化終端模擬器alacritty。但它們的內(nèi)核其實(shí)還是一個(gè)傳統(tǒng)的終端模擬器。現(xiàn)代開(kāi)發(fā)者,要使用終端做很多事,從構(gòu)建代碼、執(zhí)行和部署,與版本控制系統(tǒng)交互到與云端交互等。作為開(kāi)發(fā)者日常離不開(kāi)的工具,在當(dāng)下日益增長(zhǎng)的開(kāi)發(fā)需求的時(shí)代,現(xiàn)在的終端模擬器卻沒(méi)有幫助開(kāi)發(fā)者提升更多工作效率。

而 Warp 的出現(xiàn),讓我看到了終端模擬器進(jìn)化的下一代形態(tài)。Warp 在 2022 年 4 月 5 號(hào)推出其公開(kāi)測(cè)試版并宣布獲得 2300 萬(wàn)美元的資金,它正試圖通過(guò)構(gòu)建一個(gè)旨在提高開(kāi)發(fā)人員生產(chǎn)力的新命令行終端來(lái)改變這一現(xiàn)狀。Warp 值得關(guān)注的功能特性是對(duì)團(tuán)隊(duì)協(xié)作的支持,可以共享團(tuán)隊(duì)的終端模擬器會(huì)話(huà),可以方便地解決團(tuán)隊(duì)之間溝通的問(wèn)題。其他功能還有很多,包括集成了云端,可以讓團(tuán)隊(duì)方便地共享剪切板等。更多功能可以去這里查看。

我還沒(méi)有來(lái)得及自己的去挖掘 Warp 的具體功能,但是單從這些功能特性上來(lái)看,正如 Figma CEO Dylan 所說(shuō),Warp 這個(gè)產(chǎn)品和 Figma (在服務(wù)端和 wasm 模塊 也使用 Rust)很像,都是All in One,并且連接了云端,為團(tuán)隊(duì)協(xié)作提供了很多方便的功能。并且在商業(yè)模式上,都屬于產(chǎn)品驅(qū)動(dòng)增長(zhǎng)(PLG, Product-led Growth)型公司。事實(shí)上,正是 Figma CEO 領(lǐng)投了 Warp ,跟投的還有 Elad Gil (AirBnB、Pinterest、Stripe 和 Square 的早期投資者)、Jeff Weiner(領(lǐng)英執(zhí)行董事長(zhǎng)兼前CEO)和 Marc Benioff(Salesforce 創(chuàng)始人兼 CEO)。Dylan 認(rèn)為 Warp 和 Figma 正是可以提升用戶(hù)十倍工作效率的那種工具,他也承認(rèn)投資 Warp 有賭博的成分。

Warp 選擇使用 Rust 語(yǔ)言來(lái)實(shí)現(xiàn)。使用 Rust 技術(shù)棧(包括 WebAssembly)也方便構(gòu)建跨平臺(tái)支持。在底層,使用 Metal (Mac 的 GPU API)直接用 GPU 進(jìn)行 UI 渲染。之所以使用 GPU 進(jìn)行渲染,是因?yàn)閳F(tuán)隊(duì)想擺脫 CPU 上面的許多軟件和架構(gòu)瓶頸,來(lái)適應(yīng)更高分辨率的顯示器。選擇 Metal 而不是 OpenGL 作為 GPU API,因?yàn)?Warp 把 MacOS 作為第一個(gè)平臺(tái)。Xcode 中的 Metal 調(diào)試工具非常出色,使 Warp 團(tuán)隊(duì)能夠檢查紋理資源并輕松測(cè)量幀速率和 GPU 內(nèi)存大小等重要指標(biāo)。Mac 平臺(tái)現(xiàn)在也是大多數(shù)開(kāi)發(fā)者選擇的重要生產(chǎn)力工具。

但是,目前 Rust 對(duì) GPU 支持并不是很完善,沒(méi)有開(kāi)箱即用的合適的 UI 庫(kù)。團(tuán)隊(duì)考慮過(guò)Azul和Druid,但這兩者都處于實(shí)驗(yàn)階段,所以團(tuán)隊(duì)決定和 Atom 編輯器聯(lián)合創(chuàng)始人Nathan Sobo合作,使用他創(chuàng)建的一個(gè)受 Flutter 啟發(fā)的 Rust UI 框架,不久后應(yīng)該會(huì)開(kāi)源。在未來(lái),會(huì)支持更多的渲染后端,比如OpenGL 和 WebGL(會(huì)通過(guò) wasm 支持)。同時(shí)也和 Nathan 合作,在 Warp 中構(gòu)建了一個(gè)文本編輯器。Warp 也 fork 了Alacritty的模型代碼,用于處理數(shù)據(jù)模型,為 Warp 界面中的塊實(shí)現(xiàn)提供了幫助。

看得出來(lái),Warp 作為一個(gè)商業(yè)產(chǎn)品,它并沒(méi)有將其產(chǎn)品的全部代碼進(jìn)行開(kāi)源。但他們?cè)趯?shí)現(xiàn)產(chǎn)品過(guò)程中,通過(guò)解決 Rust GUI 和 GPU 渲染相關(guān)的問(wèn)題,沉淀出一些工具和庫(kù),會(huì)以開(kāi)源的方式貢獻(xiàn)給社區(qū)。雖說(shuō)要走 PLG 路線(xiàn),開(kāi)源社區(qū)非常重要,但也并不是說(shuō)盲目地之間把產(chǎn)品全部開(kāi)源出來(lái)。還是要根據(jù)自己的商業(yè)模式和產(chǎn)品形態(tài)做出最好的權(quán)衡。

初創(chuàng)數(shù)據(jù)庫(kù)領(lǐng)域公司

今年在數(shù)據(jù)庫(kù)領(lǐng)域的初創(chuàng)公司可以算得上是扎堆出現(xiàn)了。

在 2022 年 4 月,Rust 社區(qū)知名開(kāi)發(fā)者 Jon Gjengset 宣布成為ReadySet 公司的聯(lián)合創(chuàng)始人,準(zhǔn)備將其博士論文中的 Noria 數(shù)據(jù)庫(kù)研究成果進(jìn)行落地為 ReadySet ,為數(shù)據(jù)庫(kù)提供 SQL 緩存引擎,可幫助開(kāi)發(fā)人員構(gòu)建高性能的實(shí)時(shí)應(yīng)用程序,而無(wú)需更改代碼或切換數(shù)據(jù)庫(kù)。該公司目前 A 輪融資 2900 w 美元。

在 2022 年 4月,已經(jīng)融資千萬(wàn)美元的數(shù)據(jù)庫(kù)初創(chuàng)企業(yè) Singularity Data Singularity Data(奇點(diǎn)無(wú)限公司)宣布開(kāi)源 Rust 實(shí)現(xiàn)的云原生的支持SQL的流式數(shù)據(jù)庫(kù) RisingWave 。RisingWave 于 2021 年初開(kāi)始用 Cpp 創(chuàng)建,在七個(gè)月之后用 Rust 重寫(xiě)。對(duì)于早期創(chuàng)業(yè)公司來(lái)說(shuō),這是一個(gè)瘋狂的決定。特別是在競(jìng)爭(zhēng)激烈的環(huán)境中,對(duì)科技初創(chuàng)公司來(lái)說(shuō),時(shí)間幾乎就是一切。

流媒體服務(wù)

實(shí)時(shí)事件流媒體公司 InfinyOn 籌集了 500 萬(wàn)美元的種子資金,由 Gradient Ventures 和 Fly Ventures 領(lǐng)投,Bessemer Venture Partners、TSVC 等參投。InfinyOn 使用由 Rust 開(kāi)發(fā)的動(dòng)態(tài)數(shù)據(jù)可編程平臺(tái) Fluvio 。Fluvio 擁有超過(guò) 1,000 個(gè) Github star,在開(kāi)發(fā)人員和開(kāi)源社區(qū)中越來(lái)越受歡迎。

“在 Java 時(shí)代構(gòu)建的遺留數(shù)據(jù)平臺(tái)會(huì)生成大型二進(jìn)制文件,需要大量?jī)?nèi)存,并且從邊緣到核心的操作具有挑戰(zhàn)性。這些也缺乏實(shí)時(shí)決策的在線(xiàn)處理能力,”InfinyOn 的聯(lián)合創(chuàng)始人兼首席技術(shù)官 Sehyo Chang 說(shuō)。“我們通過(guò)消除對(duì) ETL 工具的需求來(lái)簡(jiǎn)化數(shù)據(jù)架構(gòu),提供更具成本效益的平臺(tái),內(nèi)存減少高達(dá) 80 倍,并通過(guò)內(nèi)存安全解決方案提供最大的安全性。”

“我們整合來(lái)自不同來(lái)源的醫(yī)療保健數(shù)據(jù):物聯(lián)網(wǎng)、患者和醫(yī)生的輸入。借助 InfinyOn,我們可以使用現(xiàn)代工具快速高效地完成這項(xiàng)工作。它是用 Rust 編寫(xiě)的,與 Kafka 相比,這使得團(tuán)隊(duì)更容易集成。” Nammu 首席執(zhí)行官 Chris Brucker 說(shuō)。

InfinyOn 可以輕松地從多個(gè)來(lái)源提取、整形和轉(zhuǎn)換數(shù)據(jù),并實(shí)時(shí)計(jì)算結(jié)果。雖然仍處于 Beta 階段,但早期采用者已在 InfinyOn 的概念驗(yàn)證中看到了與替代解決方案相比的顯著優(yōu)勢(shì)。除了易用性和開(kāi)發(fā)速度之外,與其他供應(yīng)商相比,供應(yīng)商還看到了總擁有成本的顯著降低。

Rust 其他領(lǐng)域應(yīng)用

軟件定義汽車(chē):Rust 的關(guān)鍵作用

關(guān)鍵字:軟件定義汽車(chē)

汽車(chē)標(biāo)準(zhǔn)組織 Autosar——其成員包括福特、通用、寶馬、博世、大眾、豐田、沃爾沃等——在 4 月份宣布在其功能安全工作組 (WG-SAF) 中成立一個(gè)新的子組,以探索 Rust 如何能夠用于其參考平臺(tái)之一。SAE International 還成立了一個(gè)工作組來(lái)研究汽車(chē)行業(yè)中與安全相關(guān)系統(tǒng)的 Rust 。在 5 月份 Autosar 和 Rust 團(tuán)隊(duì)進(jìn)行了一次交流 ,探討Safe Rust 在汽車(chē)領(lǐng)域是否可以構(gòu)造一個(gè)合規(guī)的安全子集,討論內(nèi)容就是 Ferrocene Rust 安全子集。

隨后 Autosar 官網(wǎng)撤銷(xiāo)了成立新的 Rust 工作組的新聞,也許是要等待 Ferrocene Rust 的成果。另外,在今年9月份,Volvo 汽車(chē)公司的技術(shù)專(zhuān)家和系統(tǒng)架構(gòu)師Julius Gustavsson 接受了采訪(fǎng),他坦言,想在 Volvo 中推動(dòng) Rust 開(kāi)發(fā)。

Ferrocene Rust 安全子集

Ferrous Systems 和 AdaCore 在今年2月份宣布,他們將聯(lián)手開(kāi)發(fā) Ferrocene——一種符合安全要求的 Rust 工具鏈,旨在支持各種受監(jiān)管市場(chǎng)的需求,例如汽車(chē)、航空電子設(shè)備、太空和鐵路。這意味著根據(jù)各種安全標(biāo)準(zhǔn)對(duì) Ferrocene Rust 編譯器進(jìn)行汽車(chē)安全性等級(jí) ASIL 的 D 級(jí)(D 代表最高程度的汽車(chē)危險(xiǎn))認(rèn)證,這項(xiàng)工作最終將包括必要的動(dòng)態(tài)和靜態(tài)分析工具的開(kāi)發(fā)和資格認(rèn)證。Ferrous Systems 和 AdaCore 也在尋找經(jīng)過(guò)安全認(rèn)證的庫(kù),包括語(yǔ)言支持 (libcore) 或其他用戶(hù)庫(kù)。我們的目標(biāo)是針對(duì)與這些市場(chǎng)相關(guān)的各種架構(gòu)和操作系統(tǒng)。這一愿景需要時(shí)間才能實(shí)現(xiàn),而 Ferrous Systems 和 AdaCore 準(zhǔn)備從關(guān)注某些特定方面開(kāi)始。最終,我們的目標(biāo)是像支持任何其他與高完整性應(yīng)用程序開(kāi)發(fā)相關(guān)的編程語(yǔ)言一樣全面地支持 Rust。Ferrocene 語(yǔ)言規(guī)范目前正在制定中,預(yù)計(jì)年底發(fā)布。

其他公司

在 Rust 基金會(huì)銀牌會(huì)員中還有 ARM 也在致力于推動(dòng) Rust 在軟件定義汽車(chē)中落地。

即時(shí)通信: Threema

關(guān)鍵字:即時(shí)通信

Threema 是一款跨平臺(tái)、隱私安全且開(kāi)源的即時(shí)通信工具。

密碼管理工具:1Password

關(guān)鍵字:跨平臺(tái)

1Password 很早就使用 Rust 來(lái)構(gòu)建其 Windows 客戶(hù)端。在 2019 年將其支持瀏覽器擴(kuò)展的邏輯引擎從 Go 移植到了 Rust ,然后就開(kāi)始了 Rust 跨平臺(tái)的應(yīng)用實(shí)踐。直到 2022 年 11 月,1Password 也開(kāi)源了其跨多種語(yǔ)言生成一致的類(lèi)型模式 的 Typeshare 庫(kù)。Typeshare 可以幫助開(kāi)發(fā)者實(shí)現(xiàn)跨語(yǔ)言無(wú)縫同步共享數(shù)據(jù)類(lèi)型,這是跨平臺(tái)安全開(kāi)發(fā)的利器。

GUI :目標(biāo)取代 Qt

關(guān)鍵字:Qt、GUI

全球知名Qt咨詢(xún)和UI/UX設(shè)計(jì)服務(wù)公司 tQCS 的合作伙伴有兩家都加入了 Rust 基金會(huì)銀牌會(huì)員。分別是:

  • KDBA :在嵌入式系統(tǒng)、3D 圖形以及跨桌面、嵌入式和移動(dòng)平臺(tái)的工作方面擁有多年經(jīng)驗(yàn), KDAB 是 Qt 項(xiàng)目的主要貢獻(xiàn)者。
  • Slint: 極大地簡(jiǎn)化了取代 Qt 需求的嵌入式平臺(tái)的 GUI 開(kāi)發(fā)。支持 Rust/Cpp/Javascript ,有設(shè)計(jì)友好的 UI 標(biāo)記語(yǔ)言。其創(chuàng)始人同樣來(lái)自 Qt 項(xiàng)目主要貢獻(xiàn)者,QtQml 引擎的主要開(kāi)發(fā)者。

云存儲(chǔ):Dropbox

關(guān)鍵字:云存儲(chǔ)

Dropbox 是最早使用 Rust 并取得成功的公司之一。Dropbox將 Rust 用于其部分文件同步引擎。以及一個(gè)新的視覺(jué)交流工具 Dropbox Capture ,旨在使團(tuán)隊(duì)能夠輕松地使用屏幕記錄、視頻信息、屏幕截圖或GIF來(lái)異步分享他們的工作。

邊緣計(jì)算:Cloudflare

關(guān)鍵字:邊緣計(jì)算、serverless

Cloudflare 在其核心邊緣邏輯中使用 Rust 來(lái)替代內(nèi)存不安全的 C。Cloudflare worker 支持 Rust 和 WebAssembly 。在今年 9 月份,Cloudflare 還宣布正在用 Rust 實(shí)現(xiàn)一款可以替代 Nginx 的代理服務(wù)器 Pingora 。

迪士尼公司(Walt Disney Company)

關(guān)鍵字:WebAssembly 、渲染引擎

迪士尼公司正在用 Rust 構(gòu)建其 NCP GUI 框架,從迪士尼的這一職位招聘信息中可以得出這一結(jié)論。從該公司 2021 年發(fā)布的信息“介紹 Disney+ 應(yīng)用程序開(kāi)發(fā)工具包 (ADK)”來(lái)看, 使用 Rust 主要是構(gòu)建代號(hào)為“m5”的 Native Client Platform v2 (NCPv2) 框架。他們選擇了 Rust,以 WebAssembly(WASM) 為目標(biāo),以便在限制更新基于 C 的運(yùn)行時(shí)的能力的任何固件更新周期之外簡(jiǎn)化 Web 部署和應(yīng)用程序可更新性。該項(xiàng)目已經(jīng)持續(xù)進(jìn)行了快三年了,現(xiàn)在已經(jīng)達(dá)到了從手持終端到電視,網(wǎng)頁(yè)等全平臺(tái)使用同一個(gè)渲染引擎來(lái)渲染它們的動(dòng)畫(huà)。

特斯拉

關(guān)鍵字:高性能機(jī)器人模擬器、固件驗(yàn)證

雖然馬斯克在今年2月份于推特上面宣稱(chēng)他是 Rust 語(yǔ)言的粉絲,同時(shí)也承認(rèn)特斯拉主要使用 Cpp 和 Python 。但從今年11月份發(fā)布的兩個(gè) Rust 職位來(lái)看,特斯拉也開(kāi)始采用了 Rust 。其中一個(gè)是特斯拉機(jī)器人模擬引擎團(tuán)隊(duì)的招聘,正在尋找 Rust 開(kāi)發(fā)人員來(lái)擴(kuò)展用 Rust 編寫(xiě)的高性能機(jī)器人模擬引擎。另外一個(gè)是 Rust 固件驗(yàn)證工程師 ,但該職位對(duì)于 Rust 的要求只是“有任何 Rust 經(jīng)驗(yàn)者優(yōu)先,但不是必需的”。

Tweedegolf :與太空公司宇宙飛船

關(guān)鍵字:PTP、衛(wèi)星、宇宙飛船、太空

這次 Rust 真的要上天了。Gama 將發(fā)射太陽(yáng)帆宇宙飛船,并且是公開(kāi)將 Rust 送入太空的公司之一。提供軟件服務(wù)的應(yīng)該是這家公司:Tweedegolf ,該公司也是 Rust 基金會(huì)銀牌會(huì)員。他們的開(kāi)源倉(cāng)庫(kù)里有一個(gè) Rust 實(shí)現(xiàn)的 PTP (精確時(shí)間協(xié)議) 庫(kù),這個(gè)PTP一般用在衛(wèi)星的時(shí)間源,比NTP更精確。但這個(gè)是 PoC 實(shí)現(xiàn),不知道這次發(fā)射的飛船上有沒(méi)有用。從另外的項(xiàng)目 嵌入式開(kāi)發(fā)板 pcf85063a (一般用于計(jì)時(shí)鬧鐘)rust 驅(qū)動(dòng)來(lái)看,這次上天的 Rust 程序很可能和精確計(jì)時(shí)相關(guān)。

Gama 太陽(yáng)帆的衛(wèi)星于 2023 年 1 月 3 日由 SpaceX 獵鷹 9 號(hào)成功送入軌道。

荷蘭 Lightyear 太陽(yáng)能汽車(chē)公司采用 Rust

荷蘭Lightyear公司將在今年晚些時(shí)候開(kāi)始向客戶(hù)交付全球首款可量產(chǎn)的太陽(yáng)能汽車(chē)

在 Tweedegolf 公司的博客網(wǎng)站上透露,由 Lightyear 公司的軟件架構(gòu)師Jorrit 在 Tweedegolf 公司組織的高科技行業(yè) Rust 線(xiàn)下聚會(huì)分享了 Lightyear 公司如何在Lightyear核心平臺(tái)的開(kāi)發(fā)中使用 Rust 。可能是隱私原因,并沒(méi)有放出該分享的視頻和ppt資料

文件數(shù)據(jù)存儲(chǔ):Qumulo

關(guān)鍵字:混合云文件數(shù)據(jù)管理

Qumulo(混合云文件數(shù)據(jù)管理領(lǐng)域領(lǐng)導(dǎo)者) 和 西部數(shù)據(jù) 這兩家公司是合作企業(yè),通過(guò)部署基于西部數(shù)據(jù)UltrastarTM 大容量HDD和高性能SSD的Qumulo可擴(kuò)展文件數(shù)據(jù)平臺(tái),IHME(健康指標(biāo)與評(píng)估研究所)每天可處理高達(dá)2PB數(shù)據(jù),推進(jìn)公共流行病研究、統(tǒng)計(jì)和預(yù)測(cè)。Qumulo 贊助了 RustConf 2022 大會(huì)。

老牌數(shù)據(jù)庫(kù)公司:PostgreSQL

關(guān)鍵字:數(shù)據(jù)庫(kù)、postgresql

PostgreSQL 贊助了 RustConf 2022 大會(huì),沒(méi)有發(fā)現(xiàn) PostgreSQL 公司內(nèi)部有使用 Rust 的痕跡。但是在 GitHub 有一個(gè)致力于用 Rust 編寫(xiě) PostgreSQL 擴(kuò)展的項(xiàng)目 pgx,其中核心開(kāi)發(fā)者 Ana 博客也有很多相關(guān)文章。

企業(yè)數(shù)據(jù)分析:Redjack

關(guān)鍵字:數(shù)據(jù)分析Redjack 號(hào)稱(chēng)來(lái)自美國(guó)國(guó)家情報(bào)機(jī)構(gòu)的技術(shù),每年監(jiān)控和保護(hù)超過(guò) 8% 的互聯(lián)網(wǎng)公共 IP 空間和超過(guò) 100 萬(wàn)億次商業(yè)通信,提高可操作的數(shù)據(jù)使組織能夠提高分析的速度和準(zhǔn)確性,從而實(shí)現(xiàn)大規(guī)模運(yùn)營(yíng)的安全性和彈性。Redjack 也贊助了 RustConf 2022 大會(huì),以此推斷 該公司也有采用 Rust 的可能性。

數(shù)據(jù)科學(xué)與人工智能

數(shù)據(jù)科學(xué)、AI

Rust 基金會(huì)銀牌會(huì)員中也包括數(shù)據(jù)科學(xué)和人工智能領(lǐng)域的公司:

  • Watchful,以傳統(tǒng)標(biāo)簽解決方案無(wú)法實(shí)現(xiàn)的速度和規(guī)模為 AI 標(biāo)記數(shù)據(jù)。

汽車(chē)物聯(lián)網(wǎng)

關(guān)鍵字:IoT

Wyliodrin 使用Rust,Tock OSAndroid保護(hù)設(shè)備并構(gòu)建安全高效的系統(tǒng)。將 Rust 嵌入式實(shí)時(shí)操作系統(tǒng) Tock OS 推入商業(yè)應(yīng)用中。該公司也加入了Rust 基金會(huì)銀牌會(huì)員。

消息推送服務(wù)商:OneSignal

關(guān)鍵字:消息推送

消息推送服務(wù)商 OneSignal 在 2017 年就開(kāi)始使用 Rust 了,提供了 Rust Client 來(lái)支持推送通知、電子郵件、短信和應(yīng)用內(nèi)自助式客戶(hù)參與解決方案。

自動(dòng)化貨運(yùn)列車(chē):Parallel Systems

關(guān)鍵字:貨運(yùn)自動(dòng)化列車(chē)

自動(dòng)化貨運(yùn)列車(chē) Parallel Systems,相信貨運(yùn)的未來(lái)是鐵路,所以研發(fā)了零排放的自動(dòng)化電動(dòng)貨運(yùn)跑在鐵路上,Rust 語(yǔ)言是該公司技術(shù)棧的通用語(yǔ)言。該公司也贊助了 RustConf 2022 大會(huì)。

Rust 開(kāi)發(fā)工具、平臺(tái)與工具鏈支持

關(guān)鍵字:開(kāi)發(fā)工具

基于 Rust 實(shí)現(xiàn)了一些好用的開(kāi)發(fā)工具,比如:

  • tabnine,一款基于機(jī)器學(xué)習(xí)的代碼自動(dòng)完成開(kāi)發(fā)工具。
  • Open Source Security ,該公司加入了Rust 基金會(huì)銀牌會(huì)員,致力于為 Rust 生態(tài)推廣做出貢獻(xiàn),目前主要是贊助 GCC Rust 的實(shí)現(xiàn)。截止到 2022 年 12 月,GCC Rust 前端將在 GCC 13 中合并!
  • Embecosm ,提供開(kāi)源軟件工具鏈和嵌入式操作系統(tǒng)服務(wù)。Embecosm 也是 GCC Rust 前端的贊助商。
  • grafbase,構(gòu)建和部署 GraphQL 后端的服務(wù)平臺(tái)。
  • Rust for Linux,Linux 6.1 內(nèi)核版本合并了初始的 Rust 基礎(chǔ)設(shè)施,為未來(lái)的內(nèi)核驅(qū)動(dòng)程序和其他內(nèi)核代碼啟用 Rust 編程語(yǔ)言打好了基礎(chǔ)。在 11 月 11 號(hào),Rust for Linux 又提交了很多補(bǔ)丁代碼到上游內(nèi)核中。一旦所有這些 Rust 基礎(chǔ)設(shè)施就位,我們將看到在更突出的現(xiàn)實(shí)世界驅(qū)動(dòng)程序開(kāi)始過(guò)渡到 Rust 代碼之前需要多長(zhǎng)時(shí)間,以獲得新的硬件支持或在 Rust 中重寫(xiě)現(xiàn)有的 C 驅(qū)動(dòng)程序代碼。Rust 在 Linux 內(nèi)核中的首批主要用戶(hù)之一預(yù)計(jì)將是 Apple M1/M2 圖形的 DRM 驅(qū)動(dòng)程序。

安全監(jiān)控

關(guān)鍵字:資產(chǎn)安全、事件監(jiān)控

該領(lǐng)域目前在 Rust 基金會(huì)銀牌會(huì)員中包括以下公司:

  • Spectralops,監(jiān)控、分類(lèi)和保護(hù)代碼、資產(chǎn)和基礎(chǔ)設(shè)施,以防止暴露的 API 密鑰、令牌、憑證和高風(fēng)險(xiǎn)安全錯(cuò)誤配置。
  • Sentry,應(yīng)用程序監(jiān)控平臺(tái)。

軟件咨詢(xún)

關(guān)鍵字:軟件咨詢(xún)

目前也涌現(xiàn)出一些 Rust 咨詢(xún)公司,下面是加入 Rust 基金會(huì)銀牌會(huì)員的公司:

  • knoldus,
  • Ferrous Systems
  • mainmatter
  • Tag1

游戲 與 渲染引擎

關(guān)鍵字:游戲

Rust 在游戲領(lǐng)域目前還在發(fā)展中。游戲公司動(dòng)視暴雪作為普通贊助商加入了 Rust 基金會(huì),并且在 2021 年發(fā)布了一份由動(dòng)視暴雪旗下工作室 Treyarch 撰寫(xiě)的 「用于游戲工具的 Rust 編程語(yǔ)言 」 調(diào)研報(bào)告。Treyarch 自 2018 年以來(lái), 一直在逐步將 Rust 集成到我們的工具和管道中。

另外還有一家值得關(guān)注的游戲公司是 Embark,該公司贊助了 Rust 游戲引擎 Bevy 和 Fyrox,并且開(kāi)源了 rust-gpu 致力于使 Rust 成為 GPU 著色器的一流語(yǔ)言和生態(tài)系統(tǒng)。

電商

關(guān)鍵字:電商

Rust 也被用于電商領(lǐng)域。

  • 美國(guó)最大的家具電商公司 Wayfair 旗下的開(kāi)源項(xiàng)目 Tremor,已經(jīng)進(jìn)入 CNCF。去年 九月份還召開(kāi)了一次小型的線(xiàn)上的 Tremor Conf 。從2018年開(kāi)始, tremor 就是跑在了 wayfair生產(chǎn)環(huán)境中,每天處理10兆字節(jié)的數(shù)據(jù),或每分鐘100億條消息,每秒1000萬(wàn)個(gè)指標(biāo)。tremor 降低了成本,減少了復(fù)雜性,鞏固和簡(jiǎn)化了操作環(huán)境,以激發(fā)SRE的樂(lè)趣,減少NOC的工作量,并降低運(yùn)營(yíng)成本。Rust 為 Wayfair 省掉數(shù)千個(gè)核心和TB級(jí)的內(nèi)存的成本
  • cargurus ,英國(guó)的一家二手車(chē)電商網(wǎng)站,也成為了 Rust 基金會(huì)普通贊助商成員。

Web3 與 區(qū)塊鏈

關(guān)鍵字:Web3 、同態(tài)加密、隱私計(jì)算、區(qū)塊鏈、數(shù)字貨幣、零知識(shí)證明

Rust 在 Web3 和 區(qū)塊鏈領(lǐng)域已經(jīng)成為了主流語(yǔ)言。在這些領(lǐng)域耳熟能詳?shù)墓竞晚?xiàng)目很多:

  • Diem ,前身叫 Libra ,曾經(jīng)是 Facebook 的穩(wěn)定幣項(xiàng)目,但是現(xiàn)在已經(jīng)被 Silvergate Capital Corporation 收購(gòu)。
  • 超新公鏈aptoslabs 和 sui,都是 Diem 團(tuán)隊(duì)成員離職創(chuàng)業(yè)的兩個(gè)項(xiàng)目,它們的共同點(diǎn)是都使用 Rust 實(shí)現(xiàn)的 Move 語(yǔ)言作為智能合約語(yǔ)言。
  • parastate,波卡生態(tài)多鏈智能合約平臺(tái),是 Rust 基金會(huì)銀牌會(huì)員。
  • Zama,為數(shù)據(jù)科學(xué)和AI構(gòu)建開(kāi)源同態(tài)加密解決方案,是 Rust 基金會(huì)銀牌會(huì)員。
  • Keyrock ,部署了專(zhuān)有且高度可擴(kuò)展的數(shù)字資產(chǎn)做市技術(shù),是 Rust 基金會(huì)銀牌會(huì)員。
  • matter-labs ,擴(kuò)展以太坊零知識(shí)證明 。
  • 日本區(qū)塊鏈技術(shù)孵化公司 TECHFUND ,也加入了 Rust 基金會(huì)銀牌會(huì)員。
  • 其他。

本節(jié)小結(jié)

Rust 是一門(mén)通用的語(yǔ)言,并且多樣化也是 Rust 語(yǔ)言的設(shè)計(jì)原則之一。本文試圖通過(guò)羅列 Rust 在各個(gè)領(lǐng)域的成功應(yīng)用案例,來(lái)幫助人們了解 Rust 適合落地的業(yè)務(wù)場(chǎng)景。然而,本文遠(yuǎn)遠(yuǎn)未能覆蓋 Rust 應(yīng)用的全部角落,還有我們看不到的地方,正在默默地采用 Rust 。本文也幾乎沒(méi)有羅列國(guó)內(nèi)使用 Rust 的公司,但國(guó)內(nèi)也有公司準(zhǔn)備逐步采用 Rust ,只是進(jìn)展比較慢。

P.S 你也可以在 GitHub 上查看別人維護(hù)的全球范圍內(nèi)使用 Rust 的公司列表。

Rust 就像一陣“春雨”,隨風(fēng)潛入夜,潤(rùn)物細(xì)無(wú)聲。感謝閱讀。

Rust 安全參考 | 2022 年 Rust 安全漏洞分類(lèi)盤(pán)點(diǎn)

本文是對(duì) Rust 安全數(shù)據(jù)庫(kù)[1] 中記錄的 Rust 及其生態(tài)庫(kù)安全問(wèn)題的梳理。希望可以對(duì)廣大 Rust 開(kāi)發(fā)者的代碼安全性有所啟發(fā)。

漏洞分類(lèi)

Rust 安全數(shù)據(jù)庫(kù)中記錄的安全問(wèn)題分為兩大類(lèi):安全漏洞(Vulnerability)和非健全(Unsound)問(wèn)題。

安全漏洞又具體分為以下幾類(lèi):

  • 代碼執(zhí)行(Code Execution)
  • 內(nèi)存損壞(Memory Corruption)
  • 權(quán)限提升(Privilege Escalation,在操作系統(tǒng)級(jí)別或應(yīng)用程序/庫(kù)內(nèi)部)
  • 文件泄露/目錄遍歷(File Disclosure / Directory Traversal)
  • 網(wǎng)絡(luò)安全(Web Security,例如 XSS、CSRF)
  • 格式注入(Format Injection),例如 shell 轉(zhuǎn)義、SQL 注入(以及 XSS)
  • 加密失敗(Cryptography Failure,例如機(jī)密性破壞、完整性破壞、密鑰泄漏)
  • 隱蔽通道(例如 Spectre、Meltdown)
  • 代碼中的恐慌(panic)標(biāo)榜為“panic-free”(特別是如果對(duì)網(wǎng)絡(luò) DoS 攻擊有用)
  • 內(nèi)存暴露(memory-exposure)
  • 線(xiàn)程安全(thread-safety)

此外,RustSec 還會(huì)對(duì)生態(tài)庫(kù)的健全性[2] 進(jìn)行跟蹤,而不管它們是否是漏洞。因?yàn)?當(dāng)使用來(lái)自安全代碼的 crate 可能導(dǎo)致未定義行為[3]時(shí),往往伴隨著健全性問(wèn)題。

健全性(Soundness)是一個(gè)類(lèi)型系統(tǒng)概念(實(shí)際上源于邏輯學(xué)研究),意味著類(lèi)型系統(tǒng)在某種意義上是“正確的”,即類(lèi)型良好的程序?qū)嶋H上具有所需的屬性。對(duì)于 Rust,這意味著類(lèi)型良好的程序不會(huì)導(dǎo)致未定義的行為[4]。然而,這個(gè)承諾只適用于安全代碼;對(duì)于unsafe代碼,由程序員來(lái)維護(hù)這份契約。

對(duì)于安全漏洞或非健全問(wèn)題發(fā)生的原因或機(jī)制,RustSec 則使用關(guān)鍵字來(lái)進(jìn)行標(biāo)識(shí)。但是 RustSec 的關(guān)鍵字太多了,所以我對(duì)關(guān)鍵字也進(jìn)一步做了一個(gè)分類(lèi)。

分類(lèi) 漏洞機(jī)制 備注 類(lèi)型
memory safety[5] alias (多個(gè)可變借用) 2022 年還未見(jiàn)有該漏洞 漏洞
double free 2022 年還未見(jiàn)有該漏洞
use-after-free[6] incorrect-lifetime 2022 年 一例 RUSTSEC-2022-0028: Vulnerability in neon[7] 漏洞
wasm 2022 年 一例 RUSTSEC-2022-0016: Vulnerability in wasmtime[8] 漏洞
segfault 2022 年 一例 RUSTSEC-2022-0002: Vulnerability in dashmap[9] 漏洞
memory-layout cast 2022 年 一例 RUSTSEC-2022-0052: Unsoundness in os_socketaddr[10] Unsound
cell 2022 年 一例 RUSTSEC-2020-0164: Unsoundness in cell-project[11] Unsound
ddos[12] oom 2022 年兩例 RUSTSEC-2022-0055: Vulnerability in axum-core[13]RUSTSEC-2022-0035: Vulnerability in websocket[14] 漏洞
untrust data 2022 年一例 RUSTSEC-2021-0143: Vulnerability in kamadak-exif[15] 漏洞 CVSS分 6.5MEDIUM
directory-traversal Windows 2022 年 兩例:RUSTSEC-2022-0069: Vulnerability in hyper-staticfile[16]RUSTSEC-2022-0043: Vulnerability in tower-http[17] 漏洞
html xss 2022 年一例 RUSTSEC-2022-0003: Vulnerability in ammonia[18] 漏洞
integer-overflow out-of-bounds 2022 年一例 RUSTSEC-2022-0051: Vulnerability in lz4-sys[19] 漏洞 CVSS Score 9.8CRITICAL
out-of-bounds-read out-of-bounds-read 2022 年一例 RUSTSEC-2022-0046: Vulnerability in rocksdb[20] 漏洞
side-channel timing-attack 2022 年一例 RUSTSEC-2022-0018: Vulnerability in totp-rs[21] 漏洞 CVSS Score 4.2MEDIUM
stack-overflow stack-overflow 2022 年一例 RUSTSEC-2022-0004: Vulnerability in rustc-serialize[22] 漏洞
subtype variance/cell 2022 年一例 RUSTSEC-2020-0164: Unsoundness in cell-project[23] Unsound
type-confusion type-confusion 2022 年一例 RUSTSEC-2020-0165: Unsoundness in mozjpeg[24] Unsound
typosquatting typosquatting (惡意偽造同名 crate) 2022 年一例 RUSTSEC-2022-0042: Vulnerability in rustdecimal[25] 漏洞
unaligned-read windows 20222 年一例 RUSTSEC-2021-0145: Unsoundness in atty[26] Unsound
uninitialized-memory uninitialized-memory 20222 年兩例 RUSTSEC-2022-0067: Unsoundness in lzf[27]RUSTSEC-2018-0022: Vulnerability in temporary[28] Unsound 和 漏洞
unsound covariant 2022 年一例 RUSTSEC-2022-0007: Unsoundness in qcell[29] Unsound

注:CVSS 即通用漏洞評(píng)分系統(tǒng),參見(jiàn)文后安全術(shù)語(yǔ)介紹部分。

CVSS 危害級(jí)別劃分

  1. 分值范圍 [0.1 - 3.9] –> 低危害性
  2. 分值范圍 [4.0 - 6.9] –> 中危害性
  3. 分值范圍 [7 - 10] -> 高危害性

2022 年漏洞分類(lèi)排行 Top 3

按出現(xiàn)漏洞次數(shù)由多到少的漏洞分類(lèi)排行:

  • 內(nèi)存損壞[30] ,2022 年一共出現(xiàn) 19 個(gè)此類(lèi)安全問(wèn)題。包括一個(gè)嚴(yán)重危害等級(jí)的漏洞和一個(gè)高危害等級(jí)的漏洞。導(dǎo)致內(nèi)存損壞的 Bug 包括:整數(shù)溢出、越界訪(fǎng)問(wèn)、數(shù)據(jù)競(jìng)爭(zhēng)(無(wú)鎖并發(fā)內(nèi)存順序指定錯(cuò)誤)、Unsafe Rust 中未做邊界驗(yàn)證、Use-After-Free 等。
  • 拒絕服務(wù)[31],2022 年一共出現(xiàn) 14個(gè)此類(lèi)安全問(wèn)題。包括五個(gè)高危害等級(jí)的漏洞。導(dǎo)致內(nèi)存損壞的 Bug 包括:緩沖區(qū)溢出、未驗(yàn)證請(qǐng)求長(zhǎng)度、深度嵌套、棧溢出、資源泄露、無(wú)限循環(huán)等。
  • 內(nèi)存暴露[32] ,2022 年一共出現(xiàn) 9 個(gè)此類(lèi)安全問(wèn)題。導(dǎo)致該問(wèn)題的 Bug 包括:越界讀取(驗(yàn)證不充分)、Use-After-Free 、使用未初始化內(nèi)存、懸垂指針等。

2022 年安全漏洞摘要介紹

內(nèi)存相關(guān)漏洞

RUSTSEC-2022-0002:dashmap 中的引用出現(xiàn) UAF

由Ref(和類(lèi)似類(lèi)型)的一些方法返回的引用可能會(huì)超過(guò)Ref并逃脫鎖。這將導(dǎo)致未定義的行為,并可能導(dǎo)致一個(gè)段錯(cuò)誤。

  • https://rustsec.org/advisories/RUSTSEC-2022-0002.html[33]
  • https://github.com/xacrimon/dashmap/issues/167[34]

RUSTSEC-2022-0008:Windows-rs 中 Delegate 函數(shù)缺乏 Send 限定

  • https://rustsec.org/advisories/RUSTSEC-2022-0008.html[35]
  • https://github.com/microsoft/windows-rs/issues/1409[36]

RUSTSEC-2022-0012: Arrow2 在 Safe 代碼中出現(xiàn)雙重釋放(double-free)

Ffi_ArrowArray 結(jié)構(gòu)體錯(cuò)誤實(shí)現(xiàn) #derive(Clone) ,因?yàn)樗且粋€(gè) FFi 綁定,實(shí)現(xiàn) Clone 會(huì)導(dǎo)致出現(xiàn)兩份指針,從而導(dǎo)致雙重釋放。

  • https://github.com/jorgecarleitao/arrow2/issues/880[37]
  • https://rustsec.org/advisories/RUSTSEC-2022-0012.html[38]

RUSTSEC-2022-0003: ammonia 中存在格式化注入漏洞

clean_text中錯(cuò)誤映射 HTML 的 Form Feed,導(dǎo)致注入漏洞。

lethtml=format!("",clean_text(user_supplied_string));
  • https://github.com/rust-ammonia/ammonia/pull/147[39]

RUSTSEC-2022-0006: thread_local crate 中的 RawIter::next 存在數(shù)據(jù)競(jìng)爭(zhēng)

主要是因?yàn)閮?nèi)存順序指定錯(cuò)誤而引起的,解決起來(lái)也比較簡(jiǎn)單,修改為正確的內(nèi)存順序即可。

  • https://rustsec.org/advisories/RUSTSEC-2022-0006.html[40]
  • https://github.com/Amanieu/thread_local-rs/issues/33[41]

RUSTSEC-2022-0016:wasmtimeexternref 在啟用 epoch 中斷時(shí)會(huì)導(dǎo)致 UAF

epoch 中斷會(huì)導(dǎo)致 wasmtime 在執(zhí)行 GC 時(shí)錯(cuò)誤回收還在使用的內(nèi)存,從而導(dǎo)致 UAF。

  • https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-gwc9-348x-qwv2[42]
  • https://rustsec.org/advisories/RUSTSEC-2022-0016.html[43]

DoS 漏洞

RUSTSEC-2022-0004:rustc_serialize 解析深度嵌套的 JSON 時(shí)棧溢出

該漏洞會(huì)導(dǎo)致 DoS(denial-of-service)風(fēng)險(xiǎn)。

//觸發(fā)漏洞示例代碼
fnmain(){
let_=rustc_serialize::from_str(&"[0,[".repeat(10000));
}

推薦使用 serde 作為 rustc_serialize 的替代品。

https://rustsec.org/advisories/RUSTSEC-2022-0004.html[44]

Unsound

RUSTSEC-2022-0007: qcell crate 中 TCellTLCell 的內(nèi)存能被惡意代碼訪(fǎng)問(wèn)

因?yàn)樯芷趨?shù)型變未使用正確而引起的問(wèn)題,導(dǎo)致惡意代碼可以對(duì)同一片內(nèi)存獲取兩個(gè)可變引用。解決方法是把類(lèi)型參數(shù)的協(xié)變(Covariant)改為不變(Invariant)。

structInvariant(fn(T)->T);

pubstructTCellOwner'static>{
//AllowSendandSync,andQisinvariant
typ:PhantomData>,
}

pubstructTCellSized>{
//useInvariantforinvariantparameter,notinfluencing
//otherauto-traits,e.g.UnwindSafe(unlikeothersolutionslike`*mutQ`or`Cell`)
owner:PhantomData>,
//It'sfinetoSendaTCelltoadifferentthreadifthecontainted
//typeisSend,becauseyoucanonlysendsomethingifnothing
//borrowsit,sonothingcanbeaccessingitscontents.
//
//`UnsafeCell`disables`Sync`andalreadygivestheright`Send`implementation.
//`Sync`isre-enabledbelowundercertainconditions.
value:UnsafeCell,
}
  • https://rustsec.org/advisories/RUSTSEC-2022-0007.html[45]
  • https://github.com/uazu/qcell/issues/20[46]

RUSTSEC-2022-0010:Enum錯(cuò)誤實(shí)現(xiàn) trait時(shí) enum_map 宏可能會(huì)導(dǎo)致 UB

enum_map!受影響版本在使用宏時(shí)未正確檢查枚舉的長(zhǎng)度,信任用戶(hù)提供的長(zhǎng)度。

當(dāng)Enum trait 中的 LENGTHEnumArray trait 中的數(shù)組長(zhǎng)度不匹配 時(shí),可能會(huì)導(dǎo)致枚舉映射初始化為未初始化的類(lèi)型,進(jìn)而允許攻擊者執(zhí)行任意代碼。

這個(gè)問(wèn)題只能在手動(dòng)實(shí)現(xiàn) Enum trait 時(shí)發(fā)生,它永遠(yuǎn)不會(huì)發(fā)生在使用#[derive(Enum)].

觸發(fā)此漏洞的示例代碼如下所示:

enumE{
A,
B,
C,
}

implEnumforE{
//LENGTH長(zhǎng)度不等于EnumArray長(zhǎng)度
constLENGTH:usize=2;

fnfrom_usize(value:usize)->E{
matchvalue{
0=>E::A,
1=>E::B,
2=>E::C,
_=>unimplemented!(),
}
}

fninto_usize(self)->usize{
selfasusize
}
}

implEnumArrayforE{
typeArray=[V;3];
}

let_map:EnumMapString>=enum_map!{_=>"Hello,world!".into()};
  • https://rustsec.org/advisories/RUSTSEC-2022-0010.html[47]
  • https://gitlab.com/KonradBorowski/enum-map/-/blob/master/CHANGELOG.md#version-202[48]

Rust 官方安全通告

Cargo 安全公告

在 2022 年 9月份,Rust 安全響應(yīng)工作組被告知 Cargo 沒(méi)有阻止提取從備用注冊(cè)表下載的一些格式錯(cuò)誤的包。當(dāng) Cargo 下載包時(shí),能夠?qū)蟼鞯絺溆米?cè)表的 攻擊者可能會(huì)填滿(mǎn)文件系統(tǒng)或損壞任意文件。這些問(wèn)題已分配給 CVE-2022-36113 和 CVE-2022-36114。這些漏洞的嚴(yán)重性對(duì)于備用注冊(cè)表的用戶(hù)來(lái)說(shuō)是“低”的。依賴(lài)crates.io[49]的用戶(hù)不受影響。

  • 任意文件損壞 (CVE-2022-36113)。Cargo 允許包包含一個(gè) .cargo-ok 符號(hào)鏈接,Cargo 將提取該鏈接。然后,當(dāng) Cargo 嘗試將 “ok”寫(xiě)入“.cargo-ok”時(shí),它實(shí)際上會(huì)將符號(hào)鏈接指向的文件的前兩個(gè)字節(jié)替換為“ok”。這將允許攻擊者使用 Cargo 提取包來(lái)破壞機(jī)器上的一個(gè)文件。
  • 磁盤(pán)空間耗盡 (CVE-2022-36114)。Cargo 沒(méi)有限制從壓縮檔案中提取的數(shù)據(jù)量。攻擊者可以將一個(gè)特制的包上傳到備用注冊(cè)表,該 包提取的數(shù)據(jù)遠(yuǎn)遠(yuǎn)超過(guò)其大小(也稱(chēng)為 “zip 炸彈”),使用 Cargo 耗盡計(jì)算機(jī)上的磁盤(pán)空間下載包。

這兩個(gè)漏洞都存在于 Cargo 的所有版本中。Rust 1.64 已包括對(duì)它們的修復(fù)。

Regex 安全公告

在 2022 年 3月份,Rust 安全響應(yīng)工作組被告知 regex 包沒(méi)有正確限制它解析的正則表達(dá)式 (regex) 的復(fù)雜性。攻擊者可以利用此安全問(wèn)題執(zhí)行拒絕服務(wù),方法是
將特制的正則表達(dá)式發(fā)送到接受不受信任的正則表達(dá)式的服務(wù)。使用受信任的正則表達(dá)式解析不受信任的輸入時(shí),不存在已知漏洞。此問(wèn)題已分配為 CVE-2022-24713。當(dāng) regex 包用于解析不受信任的正則表達(dá)式時(shí),此漏洞的嚴(yán)重性 為“高”。regex crate 的其他用途不受此漏洞影響。

建議使用 regex 1.5.5 版本及之上的版本。

安全術(shù)語(yǔ)介紹

CVSS 通用漏洞評(píng)分系統(tǒng)[50] (Common Vulnerability Scoring System, CVSS)。旨在評(píng)估安全漏洞的嚴(yán)重性,是全球各組織使用的公開(kāi)標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)由FIRST制定,并由其組織團(tuán)隊(duì)SIG(The CVSS Special Interest Group)改進(jìn)和推廣。

通過(guò)漏洞難易程度以及對(duì)機(jī)密性、完整性、可用性的影響綜合評(píng)估后,生成一個(gè)0到10分之間的評(píng)分值,此分值即是CVSS得分。CVSS 主要用于評(píng)估漏洞的嚴(yán)重性,而不是對(duì)風(fēng)險(xiǎn)的評(píng)估。風(fēng)險(xiǎn)評(píng)分是需要每個(gè)企業(yè)根據(jù)企業(yè)特性的風(fēng)險(xiǎn)要素,進(jìn)行識(shí)別后再進(jìn)行風(fēng)險(xiǎn)判別。

CVSS 通過(guò)三個(gè)方面進(jìn)行評(píng)估:

  • 基礎(chǔ)得分(Base Score):根據(jù)漏洞的固有特征反映漏洞的嚴(yán)重程度,不受時(shí)間因素影響,并假定在不同部署環(huán)境中產(chǎn)生合理的最壞情況的影響;
  • 時(shí)間得分(Temporal Score):評(píng)價(jià)漏洞被利用的時(shí)間窗的風(fēng)險(xiǎn)大小,比如官方發(fā)布了補(bǔ)丁則會(huì)降低評(píng)估分?jǐn)?shù);
  • 環(huán)境得分(Environment Score):需要在特定環(huán)境下評(píng)估。通常由最終用戶(hù)根據(jù)自己的使用環(huán)境給出。使用業(yè)界通用的CVSS標(biāo)準(zhǔn)需遵循以下原則:
  1. 一般使用CVSS基礎(chǔ)得分進(jìn)行漏洞嚴(yán)重等級(jí)評(píng)估;
  2. 評(píng)估時(shí)必須基于攻擊場(chǎng)景,且攻擊后能對(duì)系統(tǒng)造成了機(jī)密性、完整性、可用性的影響;
  3. 有多個(gè)攻擊場(chǎng)景時(shí),最終得分選擇最高得分場(chǎng)景;
  4. 被嵌入調(diào)用的庫(kù)存在漏洞,要根據(jù)該庫(kù)在產(chǎn)品中的使用方式,確定漏洞的攻擊場(chǎng)景后進(jìn)行評(píng)估;
  5. 不考慮攻擊目標(biāo)的環(huán)境緩解措施(如設(shè)置防火墻),以體現(xiàn)漏洞真實(shí)嚴(yán)重程度;
  6. 不考慮特定配置,即如果攻擊成功需要特定的配置則在該配置存在的情況下進(jìn)行評(píng)分;
  7. 安全缺陷不能被觸發(fā)的場(chǎng)景或不影響CIA(機(jī)密性/完整性/可用性),CVSS評(píng)分為0分。

審核編輯 :李倩



聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 生態(tài)系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    703

    瀏覽量

    20748
  • 程序編譯
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    5474
  • Rust
    +關(guān)注

    關(guān)注

    1

    文章

    229

    瀏覽量

    6623

原文標(biāo)題:Rust 安全參考 | 2022 年 Rust 安全漏洞分類(lèi)盤(pán)點(diǎn)

文章出處:【微信號(hào):Rust語(yǔ)言中文社區(qū),微信公眾號(hào):Rust語(yǔ)言中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    對(duì)稱(chēng)加密技術(shù)有哪些常見(jiàn)的安全漏洞

    對(duì)稱(chēng)加密技術(shù)在實(shí)際應(yīng)用中可能面臨的安全漏洞主要包括: 實(shí)現(xiàn)不當(dāng): 錯(cuò)誤的加解密實(shí)現(xiàn)、弱隨機(jī)數(shù)生成器或其他邏輯錯(cuò)誤都可能導(dǎo)致安全漏洞漏洞利用: 利用已知的弱點(diǎn)或攻擊手段,如理論上可行的分組攻擊或側(cè)
    的頭像 發(fā)表于 12-16 13:59 ?144次閱讀

    物聯(lián)網(wǎng)系統(tǒng)的安全漏洞分析

    隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,越來(lái)越多的設(shè)備被連接到互聯(lián)網(wǎng)上,從智能家居、智能城市到工業(yè)自動(dòng)化,物聯(lián)網(wǎng)的應(yīng)用范圍不斷擴(kuò)大。然而,隨著物聯(lián)網(wǎng)設(shè)備的增多,安全問(wèn)題也日益凸顯。 一、物聯(lián)網(wǎng)系統(tǒng)安全漏洞的成因
    的頭像 發(fā)表于 10-29 13:37 ?422次閱讀

    如何使用 IOTA?分析安全漏洞的連接嘗試

    在當(dāng)今數(shù)字化世界中,網(wǎng)絡(luò)安全變得至關(guān)重要。本文將探討如何利用流量數(shù)據(jù)分析工具來(lái)發(fā)現(xiàn)和阻止安全漏洞和惡意連接。通過(guò)分析 IOTA 流量,您可以了解如何識(shí)別不當(dāng)行為,并采取適當(dāng)?shù)拇胧﹣?lái)保護(hù)您的網(wǎng)絡(luò)和數(shù)據(jù)。我們將深入研究IOTA的工作流程,以了解如何準(zhǔn)確地分析連接嘗試,并識(shí)別可
    的頭像 發(fā)表于 09-29 10:19 ?278次閱讀
    如何使用 IOTA?分析<b class='flag-5'>安全漏洞</b>的連接嘗試

    漏洞掃描的主要功能是什么

    漏洞掃描是一種網(wǎng)絡(luò)安全技術(shù),用于識(shí)別計(jì)算機(jī)系統(tǒng)、網(wǎng)絡(luò)或應(yīng)用程序中的安全漏洞。這些漏洞可能被惡意用戶(hù)利用來(lái)獲取未授權(quán)訪(fǎng)問(wèn)、數(shù)據(jù)泄露或其他形式的攻擊。
    的頭像 發(fā)表于 09-25 10:25 ?451次閱讀

    蘋(píng)果macOS 15 Sequoia將修復(fù)18漏洞,筑牢企業(yè)內(nèi)網(wǎng)安全防線(xiàn)

    8月8日,網(wǎng)絡(luò)安全領(lǐng)域傳來(lái)重要消息,一個(gè)長(zhǎng)達(dá)18安全漏洞正在被黑客廣泛利用,以入侵企業(yè)內(nèi)網(wǎng),威脅企業(yè)信息安全。幸運(yùn)的是,蘋(píng)果公司已確認(rèn)在其即將推出的macOS 15 Sequoia
    的頭像 發(fā)表于 08-08 17:16 ?499次閱讀

    小米科技高級(jí)安全專(zhuān)家:智能汽車(chē)Tbox安全漏洞分析

    以下內(nèi)容整理自談思AutoSec 8周年年會(huì)。 分享嘉賓:小米科技高級(jí)安全專(zhuān)家 尹小元 嘉賓簡(jiǎn)介:小米車(chē)聯(lián)網(wǎng)安全專(zhuān)家,智能終端安全實(shí)驗(yàn)室負(fù)責(zé)車(chē)聯(lián)網(wǎng)
    的頭像 發(fā)表于 05-27 14:31 ?1271次閱讀
    小米科技高級(jí)<b class='flag-5'>安全</b>專(zhuān)家:智能汽車(chē)Tbox<b class='flag-5'>安全漏洞</b>分析

    Adobe修復(fù)35項(xiàng)安全漏洞,主要涉及Acrobat和FrameMaker

    值得關(guān)注的是,Adobe對(duì)Acrobat及Acrobat Reader軟件的漏洞修復(fù)最為重視,共修復(fù)了12個(gè)漏洞,其中9個(gè)為“遠(yuǎn)程執(zhí)行代碼”嚴(yán)重漏洞,主要由RAM的“Use After Free”類(lèi)型
    的頭像 發(fā)表于 05-16 15:12 ?753次閱讀

    PuTTY等工具曝嚴(yán)重安全漏洞:可還原私鑰和偽造簽名

    據(jù)報(bào)道,知名SSH和Telnet工具PuTTY于4月18日暴露安全漏洞CVE-2024-31497,涉及版本0.68至0.80。僅需使用60個(gè)簽名,攻擊者即可還原私鑰。為應(yīng)對(duì)此風(fēng)險(xiǎn),官方更新推出0.81版本,呼吁使用者盡快升級(jí)。
    的頭像 發(fā)表于 04-18 10:06 ?700次閱讀

    微軟修復(fù)兩個(gè)已被黑客利用攻擊的零日漏洞

    此次更新的精英賬號(hào)“泄露型”安全漏洞(代號(hào):CVE-2024-26234)源于代理驅(qū)動(dòng)程序欺騙漏洞。蘿卜章利用可信的微軟硬件發(fā)布證書(shū)簽名惡意驅(qū)動(dòng)程序。
    的頭像 發(fā)表于 04-10 14:39 ?575次閱讀

    iOS 17.4.1修復(fù)兩安全漏洞,涉及多款iPhone和iPad

     據(jù)報(bào)道,iOS/iPadOS17.4.1主要解決了Google Project Zero團(tuán)隊(duì)成員Nick Galloway發(fā)現(xiàn)并報(bào)告的兩大安全漏洞(CVE-2024-1580)。
    的頭像 發(fā)表于 03-26 10:47 ?761次閱讀

    一次Rust重寫(xiě)基礎(chǔ)軟件的實(shí)踐

    受到2022“谷歌使用Rust重寫(xiě)Android系統(tǒng)且所有Rust代碼的內(nèi)存安全漏洞為零” [1] 的啟發(fā),最近筆者懷著濃厚的興趣也順應(yīng)
    的頭像 發(fā)表于 01-25 11:21 ?672次閱讀

    蘋(píng)果承認(rèn)GPU存在安全漏洞

    蘋(píng)果公司近日確認(rèn),部分設(shè)備中的圖形處理器存在名為“LeftoverLocals”的安全漏洞。這一漏洞可能影響由蘋(píng)果、高通、AMD和Imagination制造的多種圖形處理器。根據(jù)報(bào)告,iPhone 12和M2 MacBook Air等設(shè)備也受到了這一
    的頭像 發(fā)表于 01-18 14:26 ?703次閱讀

    源代碼審計(jì)怎么做?有哪些常用工具

    源代碼審計(jì)是一種通過(guò)檢查源代碼來(lái)發(fā)現(xiàn)潛在的安全漏洞的方法。 下面是常用的源代碼審計(jì)工具: 1、Fortify:通過(guò)內(nèi)置的五大主要分析引擎,對(duì)源代碼進(jìn)行靜態(tài)分析,并與特有的軟件安全漏洞規(guī)則集進(jìn)行全面
    發(fā)表于 01-17 09:35

    2023車(chē)聯(lián)網(wǎng)安全事件概覽

    國(guó)內(nèi)車(chē)聯(lián)網(wǎng)安全事件共發(fā)生 5 起,較2022的2起有所提高,車(chē)端漏洞占比增高。
    的頭像 發(fā)表于 01-16 11:24 ?2943次閱讀
    2023<b class='flag-5'>年</b>車(chē)聯(lián)網(wǎng)<b class='flag-5'>安全</b>事件概覽

    Git開(kāi)發(fā)者關(guān)注內(nèi)存安全問(wèn)題,探討引入Rust語(yǔ)言

    根據(jù)最新披露的郵件討論,Git開(kāi)發(fā)團(tuán)隊(duì)熱議在Git項(xiàng)目中引入Rust的可行性。作為一種開(kāi)源的分布式代碼版本管理工具,廣泛運(yùn)用于各種開(kāi)發(fā)項(xiàng)目。盡管現(xiàn)在Git項(xiàng)目主要以C與Python為主要開(kāi)發(fā)語(yǔ)言,但探討顯示,引入Rust能顯著降低內(nèi)存
    的頭像 發(fā)表于 01-15 14:23 ?643次閱讀
    Git開(kāi)發(fā)者關(guān)注內(nèi)存<b class='flag-5'>安全</b>問(wèn)題,探討引入<b class='flag-5'>Rust</b>語(yǔ)言
    主站蜘蛛池模板: 亚洲精品在线网址| 中文无码在线观| 色婷婷国产麻豆AV| 日本一区精品久久久久影院| 日本午夜精品一区二区三区电影 | 亚洲精品资源网在线观看| 亚洲精品偷拍影视在线观看| 一本久道久久综合狠狠躁AV| 最近日本MV字幕免费观看在线 | 人妻中文字幕乱人伦在线| 色欲av蜜臀av高清| 亚洲成人免费在线| 一品道门免费高清视频| 337p啪啪人体大胆| YELLOW视频直播在线观看| 国产 欧美 亚洲 日韩视频| 国产亚洲精品字幕在线观看| 久久中文字幕亚洲精品最新| 欧美黄色一级| 天天躁人人躁人人躁狂躁| 亚洲免费国产| 51xx午夜影视福利| 国产 高清 无码 在线播放| 黄色三级三级免费看| 免费毛片在线视频| 国产成人在线观看免费网站| 国产在线精品一区二区在线看| 久久精品热99看二| 欧美日韩亚洲成人| 性色少妇AV蜜臀人妻无码| 最近2019年日本中文免费字幕| 朝鲜美女bbwbbw撒尿| 国产亚洲视频在线观看| 美女露出乳胸扒开尿口| 天上人间影院久久国产| 在线免费视频a| 贵妃高h荡肉呻吟np杨玉环| 久久99视热频国只有精品| 欧美人与动牲交A精品| 亚洲不卡视频在线观看| 91原创在线|