(資料圖片僅供參考)
出品|開源中國
美國國家安全局(NSA)發(fā)布了一份指南,旨在幫助軟件開發(fā)商和運營商預(yù)防和緩解軟件內(nèi)存安全問題。其鼓勵組織將編程語言從 C 和 C++ 之類的語言轉(zhuǎn)變?yōu)閮?nèi)存安全的替代語言 —— 即 C#、Rust、Go、Java、Ruby 或 Swift,以保護代碼免受遠程代碼執(zhí)行或其他黑客攻擊。
“NSA?建議企業(yè)盡可能使用內(nèi)存安全語言,并通過編譯器選項、工具選項和操作系統(tǒng)配置等代碼強化防御措施加強保護?!?/p>
NSA 方面表示,內(nèi)存安全問題在可利用的漏洞中占比很大。并引用了微軟的數(shù)據(jù)指出,該公司從 2006 年到 2018 年 70% 的漏洞是由于內(nèi)存安全問題造成的;谷歌的?Chrome 在幾年內(nèi)也發(fā)現(xiàn)了類似比例的內(nèi)存安全漏洞。
該組織認為,惡意的網(wǎng)絡(luò)行為者會利用不良的內(nèi)存管理問題來訪問敏感信息、頒布未經(jīng)授權(quán)的代碼執(zhí)行、以及造成其他負面影響,而這些通常會危及設(shè)備并成為大規(guī)模網(wǎng)絡(luò)入侵的第一步。
“常用的語言,如 C 和 C++,在內(nèi)存管理方面提供了很大的自由度和靈活性,同時嚴重依賴程序員對內(nèi)存引用執(zhí)行所需的檢查,簡單的錯誤就可能會導(dǎo)致可利用的基于內(nèi)存的漏洞。軟件分析工具可以檢測到許多內(nèi)存管理問題的實例,操作環(huán)境選項也可以提供一些保護,但內(nèi)存安全軟件語言所提供的固有保護可以防止或減輕大多數(shù)內(nèi)存管理問題。
NSA 建議在可能的情況下使用內(nèi)存安全語言。雖然使用非內(nèi)存安全語言的附加保護措施和使用內(nèi)存安全語言并不能對可利用的內(nèi)存問題提供絕對的保護,但它們確實提供了相當?shù)谋Wo。因此,私營部門、學(xué)術(shù)界和美國政府的總體軟件界已經(jīng)開始倡議,推動軟件開發(fā)文化向使用內(nèi)存安全語言發(fā)展?!?/p>
不過?NSA?也指出,“內(nèi)存安全” 有點用詞不當,且這個概念也是相對的。并警告稱,即使使用內(nèi)存安全語言,內(nèi)存管理也不完全是內(nèi)存安全的。
“大多數(shù)內(nèi)存安全語言承認,軟件有時需要執(zhí)行不安全的內(nèi)存管理功能來完成某些任務(wù)。因此,有一些類或函數(shù)被認為是非內(nèi)存安全的,并允許程序員執(zhí)行可能不安全的內(nèi)存管理任務(wù)。某些語言要求對任何內(nèi)存不安全的內(nèi)容進行明確的注釋,以使程序員和程序的任何審查者意識到它是不安全的。內(nèi)存安全語言還可以使用以非內(nèi)存安全語言編寫的庫,因此可以包含不安全的內(nèi)存功能。盡管這些包含內(nèi)存不安全機制的方法顛覆了固有的內(nèi)存安全性,但它們有助于定位可能存在內(nèi)存問題的位置,從而可以對這些代碼部分進行額外的審查。”
另一方面,一些內(nèi)存安全語言可能會以性能為代價。此外,學(xué)習(xí)一門新的語言也并不容易;譬如,Rust 雖然功能強大,但學(xué)習(xí)曲線相當陡峭。
關(guān)鍵詞: 美國國家安全局建議從 C C+切換到內(nèi)存安全語言 美國國家