美國國家安全局(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)存管理方面提供了很大的自由度和靈活性,同時嚴(yán)重依賴程序員對內(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)存問題提供絕對的保護,但它們確實提供了相當(dāng)?shù)谋Wo。因此,私營部門、學(xué)術(shù)界和美國政府的總體軟件界已經(jīng)開始倡議,推動軟件開發(fā)文化向使用內(nèi)存安全語言發(fā)展?!?/p>
不過 NSA 也指出,“內(nèi)存安全” 有點用詞不當(dāng),且這個概念也是相對的。并警告稱,即使使用內(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)存問題的位置,從而可以對這些代碼部分進行額外的審查?!?/p>
另一方面,一些內(nèi)存安全語言可能會以性能為代價。此外,學(xué)習(xí)一門新的語言也并不容易;譬如,Rust 雖然功能強大,但學(xué)習(xí)曲線相當(dāng)陡峭。
審核編輯 :李倩
-
內(nèi)存
+關(guān)注
關(guān)注
8文章
3125瀏覽量
75280 -
C++
+關(guān)注
關(guān)注
22文章
2119瀏覽量
75343 -
編譯器
+關(guān)注
關(guān)注
1文章
1662瀏覽量
50237
原文標(biāo)題:NSA:建議從 C/C++ 切換到內(nèi)存安全語言
文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
主流的 MCU 開發(fā)語言為什么是 C 而不是 C++?

源代碼加密、源代碼防泄漏c/c++與git服務(wù)器開發(fā)環(huán)境

Spire.XLS for C++組件說明

EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù)

AKI跨語言調(diào)用庫神助攻C/C++代碼遷移至HarmonyOS NEXT
同樣是函數(shù),在C和C++中有什么區(qū)別
C語言中申請的堆內(nèi)存能不能自動釋放
C語言與Java語言的對比
如何從模擬輸入設(shè)備切換到數(shù)字輸入設(shè)備

評論