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