首次!美國政府立法推動改善內存安全問題

美國國會首次將內存安全納入法律,建議國家網絡總監研究政府層面的內存安全問題。
前情回顧·美國網絡安全立法動態
- 美國2023財年國防授權法案將發布:網絡安全看點解析
- 美國擬立法保護開源軟件:首次認定為公共數字基礎設施
- 美國擬立法禁止采購有漏洞軟件,“引爆”網絡安全行業
- 大力回應行業關切!美國今年已有5部網絡安全法案施行
安全內參12月28日消息,美國國會上周五通過的2023財年綜合撥款法案中包含一份“圣誕彩蛋”,倡導開發者使用可支持內存安全的編碼語言,以阻止網絡對手利用絕大多數軟件漏洞。
“有史以來第一次,國會將內存安全納入法律,要求國家網絡總監研究政府層面的內存安全問題。總體法案預計將在本周通過。為在參議院期間參與制定這項法規感到自豪!”知名安全研究員Jack Cable昨天發布推文稱。

Cable推文中引用的法案原文采用了更保守的用詞,稱“鼓勵”國家網絡總監研究和報告內存安全問題,而非“要求”,并提到國家網絡總監辦公室的領導作用仍在不斷變化。
非內存安全語言存在較高安全隱患
與此同時,美國國家安全局和網絡安全與基礎設施安全局一直在密切關注編碼語言的影響,承認多數語言并不會自動檢查和控制軟件開發者的內存管理方法。
網絡安全與基礎設施安全局高級技術顧問Bob Lord在內部網絡安全咨詢委員會12月6日的會議上表示,“我們年復一年,甚至可以說十年如一日地發現各類漏洞,而其中約有三分之二”跟內存管理問題有關。
在11月公布的一份信息表中,NSA表示,“質量低下或粗糙的內存管理設計,可能令惡意黑客獲得可乘之機,例如隨意令程序崩潰、或者篡改正在執行的程序指令以完成任何惡意操作。”
內存安全語言可解決問題,
但性能消耗大
NSA認為“軟件程序的內存管理機制是預防各類漏洞、保障程序健壯性的核心所在”,并建議開發者應盡可能使用內存安全語言。
典型內存安全語言包括JavaScript、Ruby、Python等。NSA指出,與C、C++等常見的非內存安全語言不同,內存安全語言可以“控制內存的分配、訪問和管理方式,在很大程度上提供安全保護。”
當然,這其中也存在著權衡取舍。內存安全語言的默認檢查可能會耗費大量時間和開發資源。
NSA表示,“對于極端強調內存保護的語言,即使是簡單程序的編譯也涉及大量檢查和保護工作。必須承認,內存安全也帶來了高昂的性能和靈活性成本。”
另一方面,手動檢查代碼中的內存管理錯誤同樣耗時耗力,考慮到可能引發的網絡攻擊后果,其成本可能更為沉重。
美國政府呼吁采用內存安全語言
在12月6日的會議上,網絡安全與基礎設施安全局長Jen Easterly強調了技術在“設計層面上保障安全”的重要意義。她認為應當“繼續呼吁軟件開發企業以完全透明的方式,從設計出發構建切實安全的產品。”
除了鼓勵開發商改用內存安全編程語言之外,NSA的文件還列出了推薦工具,可用于測試應用程序是否存在易遭對手利用的內存管理錯誤。
考慮到開發人員已經習慣于使用非內存安全語言的軟件庫,并積累起大量相關專業知識,國安局承認這種開發范式轉換絕非易事。
Lord總結稱,“好消息是,新興的內存安全編程語言已經存在,其他配套技術、硬件和保障性元素也陸續問世。所以,我們已經有了可行的解決方案。接下來的重點是提高人們的安全意識,現在各相關組織是時候行動起來了。”