Google:使用 Rust 後,安卓系統的記憶體安全漏洞數量大幅下降

【CSDN 編者按】你最常用的開發語言是哪種呢?近日,一位 IT 安全方面的自由撰稿人 Robert Lemos 在一篇文章中表示,軟體公司和國家安全局督促開發人員轉向記憶體安全程式語言,以消除高危缺陷的一個主要來源。

原文連結:https://www.darkreading.com/application-security/shift-memory-safe-languages-gains-momentum

譯者 | 禾木木

軟體安全專家近期表示,軟體行業正在針對一組有害的漏洞進行研究並取得進展,這些漏洞導致了絕大多數關鍵且可遠端利用的瘋狂攻擊。

這類所謂的記憶體安全問題包括緩衝區溢出和釋放錯誤後的使用,佔軟體公司披露的大部分應用程序安全問題。目前,最新資料顯示,記憶體安全語言(如Java、C#和最近的Rust)的使用越來越多,導致整類漏洞在迅速減少。

例如,Google透露,最新版本的 Android 作業系統使用記憶體安全程式語言(如Java、Rust 和 Kotlin)編寫的新程式碼,比使用 C 和 C++ 等記憶體不安全語言編寫的程式碼多,從而過去三年記憶體安全漏洞從 223 個降至 85 個。

谷歌軟體工程師 Jeffrey Vander Stoep 表示:「我們將繼續專注於消除各類漏洞,重點關注最嚴重的。隨著記憶體安全漏洞變得越來越少,我們預計研究界會將其漏洞發現工作重點放在其他漏洞上。」

記憶體安全漏洞比例

記憶體安全漏洞比例

幾十年來,C 和 C++ 一直是軟體行業的主力程式語言。然而,它們缺乏更多現代語言的記憶體保護,如 C#、Go、Java、Python、Ruby、Rust 和 Swift。根據應用程序安全公司 Veracode 的《軟體安全狀態》第 11 卷報告,59% 的 C++ 應用程序存在嚴重缺陷,而 JavaScript 和 Python 則分別為 9% 和 10%。

緩衝區溢出和蠕蟲式漏洞

緩衝區溢出和蠕蟲式漏洞

程式設計師總會很容易地寫出有漏洞的程式碼,這已經成為大型軟體公司的一個主要問題。例如,微軟發現,直到 2018 年,在該公司軟體中發現的漏洞中記憶體安全問題佔了 70%。根據軟體彈性工程師 Alex Gaynor 在 2020 年的研究,總體而言,記憶體安全問題已佔各種生態系統中所有漏洞的 60%-70%。

Veracode 技術長 Chris Wysopal 表示,這些漏洞很容易被利用來攻擊應用程序,所以它們是導致大量入侵事件背後的根本原因:「記憶體損壞問題是最嚴重的缺陷之一,因為它們通常允許攻擊者利用程式碼進行攻擊,從而完全控制應用程序,在最壞的情況下,甚至可以創建蠕蟲攻擊,進而攻擊其他漏洞。」

Google在其最近的部落格文章中指出,在 Android 開發中,雖然記憶體安全漏洞只佔 36%,但在關鍵安全漏洞中佔 86%,在遠端可利用問題中佔 89%。

轉向安全語言

轉向安全語言

出於這個原因,Google和其他公司敦促開發人員採用記憶體安全語言。

就Google而言,C 和 C++ 現在只佔所有新程式碼的一半不到。事實上,最新版本的 Android 13 是第一個用記憶體安全語言編寫大部分程式碼的系統。對許多開發者來說,Rust 取代了 C 和 C++——Rust 是一種專注於創建安全程式碼的高效程式語言,甚至國家安全局也在敦促公司採用記憶體安全的程式語言。

然而,轉換記憶體安全語言是不夠的。雖然這些語言大幅降低了程式設計師編寫不安全程式碼的可能,但每種語言都有不同的保護級別。出於這個原因,NSA 還建議開發人員使用各種應用程序安全工具,從編譯器選項到靜態掃描器再到運行時分析,儘可能地強化應用程序。

美國國家安全局在報告中表示:「軟體分析工具可以檢測到記憶體管理問題,操作環境選項也可以提供一些保護,但記憶體安全軟體語言提供的固有保護可以防止或減輕大多數記憶體管理問題。」

另外,Veracode 的 Wysopal 也指出:「雖然記憶體安全程式語言並不是解決軟體漏洞問題的獨立解決方案,但它們為開發人員提供了指導,他們可以避免一些最嚴重的程式設計錯誤。」

目前,還很難概括並解釋記憶體安全語言中漏洞數量較少的原因,因為它們的使用方式不同。但如果使用兩種不同的語言來完成相同的任務,並且其中一種是記憶體安全語言時,那麼一般它的漏洞就會更少,也不那麼嚴重。

參考連結:https://www.darkreading.com/application-security/shift-memory-safe-languages-gains-momentum

相關文章

真正的Python多執行緒來了!

真正的Python多執行緒來了!

【CSDN 編者按】IBM工程師Martin Heinz發文表示,Python即將迎來了真正的多執行緒時刻! 原文:https://mart...

用一個小時編寫一個小程序

用一個小時編寫一個小程序

【CSDN 編者按】要想快速編寫程序,必須要認真考慮技能、工具選擇、攤銷和回報。 原文連結:https://buttondown.email...

震驚!C 語言字串處理有很多坑?

震驚!C 語言字串處理有很多坑?

【CSDN 編者按】毋庸置疑,在使用 C 字串時必須小心,否則你就會因為各種的未定義行為而感到頭疼。 原文連結:https://www.de...