首頁  >  文章  >  科技週邊  >  白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

PHPz
PHPz轉載
2024-03-01 22:16:11399瀏覽

最近,白宮國家網路主任辦公室(ONCD)在一份長達19頁的報告中提出了一個重要觀點:開發者應該採用記憶體安全的程式語言,例如 Rust 語言。這份報告指出,選擇記憶體安全的程式語言是確保軟體以安全設計方式開發的關鍵方法。

ONCD也指出,報告中的建議是透過與科技公司、學術界和其他機構合作制定的,並獲得了多家知名科技公司的支持,其中包括惠普、埃森哲和Palantir。

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

報告網址:https://www.whitehouse.gov/wp-content/uploads/2024/02/Final-ONCD-Technical- Report.pdf

其實,這並不是美國官方機構第一次呼籲放棄使用C 和C 了。

去年12月,美國網路安全與基礎設施局(CISA)與其他機構一起發布了一份《記憶體安全路線圖指南》,指出了C和C 作為記憶體不安全的程式語言,強調軟體開發人員應採用Rust、Java等其他記憶體安全的程式語言。這份指南的目的是提高軟體開發中對記憶體安全問題的重視,並鼓勵採取更可靠的程式語言來減少潛在的安全漏洞。 CISA特別強調了採用記憶體安全程式語言的重要性,因為這有助於減少惡意攻擊和資料外洩的風險。此舉也是為了推動軟體開發產業朝著更安全可靠的方向發展,

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

##來源:https://www.cisa.gov /sites/default/files/2023-12/The-Case-for-Memory-Safe-Roadmaps-508c.pdf

放棄C、C ,轉向Rust,只為記憶體安全

強調使用記憶體安全的程式語言很重要,因為記憶體安全性能夠防止出現諸如緩衝區溢位和懸空指標等問題,這些問題可能導致bug和漏洞的產生。因此,了解記憶體安全的概念是至關重要的。

記憶體不安全的危害有多大呢? 2019 年,微軟安全工程師報告的數據是:大約 70% 的安全問題是由記憶體安全問題引起的。 2020 年,Google針對在 Chromium 瀏覽器發現的 bug 也報告了類似的數據。

對於程式語言而言,C 和 C 都允許使用直接記憶體位址來進行任意指標運算,並且沒有邊界檢查。報告中指出,專家發現了一些程式語言既缺乏與記憶體安全相關的特徵,又在一些關鍵系統中具有高度擴散性,以 C 和 C 為代表。因此,C 和 C 被認為是「不安全的」程式語言。

與 C 和 C 相對應,Rust 被認為是記憶體安全程式語言的典型範例。 Rust 是一門系統程式語言,專注於安全,尤其是並發安全。它支援函數式和命令式以及泛型等程式設計範式的多範式語言,而 TensorFlow 等深度學習框架也把它當作一個優秀的前端語言。

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

在程式設計師問答網站 Stack Overflow 2021 年度開發者調查報告中,Rust 語言成為最受開發者喜愛的程式語言。 Rust 在系統程式設計領域很受歡迎,原因之一就是它可以幫助消除與記憶體相關的安全漏洞。

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

Rust 記憶體安全的特性早已被業界驗證。 2021 年 4 月,Google就宣布 Android 加入對 Rust 語言支援。原因是 C 和 C 中的記憶體安全 bug 是最難解決的錯誤來源,Google已經投入了大量的精力和資源來檢測、修復和緩解這類 bug,並有效地防止了大量 bug 進入 Android 版本。

然而,儘管做出了這些努力,記憶體安全 bug 仍然是穩定性問題的主要原因,它在 Android 嚴重安全漏洞中長期佔據大約 70% 的比例。因此,Google為作業系統開發者增加了第 3 個選擇 Rust。

華盛頓大學電腦科學教授Dan Grossman 表示,幾十年來,大家都了解C 和C 的危險,現在終於迎來了推動記憶體安全程式語言的好時機,畢竟已經有了實用且成熟的替代方案。

他也認為,擺脫 C 和 C 並不是一朝一夕就能完成的,尤其是在嵌入系統中。不過,隨著 Rust 等其他程式語言在系統軟體中更廣泛的應用, 這一進程預計會加快。

對於官方對 C 和 C 的態度,更多的人似乎不買單。

有人認為現代 C 是記憶體安全的,所有作業系統都使用 C 或 C 進行程式設計。也有人認為,即使 C 不能算是記憶體安全,但現代 C 擁有更多的「護欄」,成本低甚至不用花錢。

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

對於被「欽點」記憶體安全的Rust,有人覺得它的支援程度沒有那麼高,也不值得整合到政府系統中。

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

除了Rust,記憶體安全程式語言還有哪些

2022 年11 月,美國國家安全局(NSA) 發布了一份網路安全資訊表,詳細介紹了它認為記憶體安全的程式語言

  • #Rust
  • Go
  • C
  • #Java
  • Swift
  • JavaScript
  • Ruby
  • #Python
  • Delphi/Object Pascal
  • #Ada

以上這些程式語言的流行度如何呢? 2024 年2 月的程式語言流行度指標TIOBE 顯示,在程式設計方面,Python 排名第一,C# 排名第五,Java 排名第四,JavaScript 排名第六,Go 排名第八,Delphi/Object Pascal 排名第12, Swift 排名第16,Rust 排名第18,Ruby 勉強排名第20。

可以看到,大多數 NSA 選擇的語言都在前 20 名中,只有 Ada 不在,但前十名只有 5 種。

白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全

來源:https://www.tiobe.com/tiobe-index/

該報告也呼籲更好地衡量軟體安全性。 ONCD 認為:更好的衡量標準使技術供應商在漏洞成為問題之前更好地規劃、預測和緩解漏洞。

這份報告也回顧了阿波羅 13 號任務,NASA 將這次任務歸類為「成功的失敗」。任務本身遭遇了災難性的失敗,三名太空人臨時進行維修並緩解了一些問題,以便安全返回家園。報告指出:記憶體安全代碼對於太空計畫來說是非常重要的。人類探索太空應該使用一種記憶體安全語言,一種盡可能接近核心的語言,以免將來發生事故。

隨著世界上越來越多的地方變得數位化,更好的編碼變得越來越重要,不良程式碼可能會被惡意使用。

Rust 語言

Rust 語言是由 Mozilla 主導開發的通用、編譯型程式語言。設計準則為「安全、並發、實用」,支援函數式、並發式、過程式以及物件導向的程式設計風格。

Rust 語言最突出的優勢就是可以提供記憶體安全保證,而且沒有額外的效能損失。在傳統的系統級程式語言( C/C++) 的開發過程中,經常出現因各種記憶體錯誤引起的崩潰或bug ,例如空指標、野指標、記憶體洩漏、記憶體越界、段錯誤、資料競爭、迭代器失效等等。

記憶體問題是影響程式穩定性和安全性的重大隱患,並且是影響開發效率的重大因素。 Google和微軟兩大科技巨頭曾表示:旗下重要產品程式安全問題 70% 由記憶體問題引發,並且這兩個巨頭都考慮利用 Rust 語言來解決記憶體安全問題。

此外,Rust 還具有優秀的跨平台性,支援交叉編譯,對嵌入式環境同樣友善。

然而,Rust 語言也有一些棘手的缺點。

首先,由於 Rust 存在一些特殊的語法,因此初學者入門稍微困難,例如「生命週期(lifetime)」。相較之下,Python、Java 等語言則更加簡單、易學。但如果你已經掌握了 C 語言,學習 Rust 語言就容易得多,因為借鑒了大量 C 的語法。

其次,Rust 語言的編譯器檢查非常嚴格,開發過程的大多數時間都在解決編譯問題。不過,一旦編譯通過,開發人員就不需要關心記憶體安全,記憶體洩漏等頭痛問題,只需要專注在業務邏輯。

以上是白宮發文,呼籲開發者放棄C、C++:Rust被「欽點」記憶體安全的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除