白宮發布報告《Back to the Building Blocks: A Path Toward Secure and Measurable Software》,以呼籲科技界主動減少網路攻擊面,針對軟體漏洞方面,白宮認為應該主動採取措施以減少漏洞帶來的風險,希望開發人員放棄C和C++改用記憶體安全程式語言,以增加軟體安全性。

記憶體安全漏洞是嚴重且長期存在的問題,因為記憶體存取、寫入、分配或是非預期釋放所產生的漏洞,影響了整個數位生態系的安全性,白宮將記憶體安全漏洞分為空間與時間兩類,空間記憶體問題是指,程式存取不屬於其記憶體區域所產生的安全漏洞,而時間記憶體漏洞則是在不對的時間和狀態存取記憶體,像是物件被釋放後才存取物件資料等情況。

過去數十年重大的網路安全漏洞,不少是由記憶體安全漏洞引起,像是1988年的Morris Worm、2003年的Slammer Worm DoS攻擊、2014年的Heartbleed,甚至是2023年的BLASTPASS都是屬於記憶體漏洞,而白宮認為,減少記憶體漏洞最有效的方法便是從程式語言下手。

許多網路安全問題都是由單行程式碼引起,所以白宮指出,解決這些安全問題的有效方法,便是檢查所使用的程式語言本身。藉由分析和選擇程式語言的特性,尤其是關於記憶體安全的功能,可以減少甚至是消除不正確的記憶體使用方式,像是存取未分配的記憶體、緩衝區溢出等,所導致的錯誤和漏洞。

白宮指出,目前一些在重要系統中廣泛使用的語言,像是C和C++,皆缺乏記憶體安全相關的功能。而根據CISA(Cybersecurity and Infrastructure Security Agency)開源軟體安全路線圖的建議,選用記憶體安全程式語言是一種安全設計的方式。目前已經有許多記憶體安全程式語言可用,技術製造商在建構新產品的時候,可以一開始就使用記憶體安全程式語言。

轉換到記憶體安全程式語言對網路安全有明顯且積極的影響,白宮引用產業分析指出,以記憶體不安全語言所開發的程式碼,即便經過嚴格的程式碼審查和其他偵測控制,有分配CVE編號的安全漏洞中高達70%是由記憶體安全問題所致,而證據也顯示,將大型程式碼庫轉移到記憶體安全語言,可幾乎消除安全漏洞。

雖然將現有程式碼完全以記憶體安全程式語言重寫具有困難度,但是還是有其他替代方案,像是混合方法,開發人員可以根據風險標準找出關鍵功能或是函式庫,優先以記憶體安全程式語言重寫這些部分。即便記憶體安全程式語言不是萬靈丹,無法解決所有網路安全問題,但白宮表示,這是技術製造商消除廣泛類別軟體漏洞,一個可以採取的重要行動。

使用記憶體安全的程式語言可以消除大部分記憶體安全錯誤,雖然在特定情況中,專案可能無法使用記憶體安全程式語言,但是白宮藉由太空系統為例,檢視由於效能或是特定技術要求,而無法使用記憶體安全的特殊狀況,並且提出以記憶體安全硬體和形式化方法,作為記憶體安全程式語言不足的補充方法。

OpenSSF正面回應了白宮的這份研究報告,承諾共同努力提高開源軟體的安全性。OpenSSF提倡採用Rust記憶體安全程式語言,以解決C和C++等傳統程式語言在記憶體管理上的脆弱性,OpenSSF也開發了C和C++編譯器選項強化指南,指導無法簡單搬遷使用記憶體安全語言的開發人員。

熱門新聞

Advertisement