美國國家安全局(NSA)發布了一份指南,旨在幫助軟件開發商和運營商預防和緩解軟件內存安全問題。其鼓勵組織將編程語言從 C 和 C++ 之類的語言轉變為內存安全的替代語言 —— 即 C#、Rust、Go、Java、Ruby 或 Swift,以保護代碼免受遠程代碼執行或其他黑客攻擊。
“NSA 建議企業盡可能使用內存安全語言,并通過編譯器選項、工具選項和操作系統配置等代碼強化防御措施加強保護。”
NSA 方面表示,內存安全問題在可利用的漏洞中占比很大。并引用了微軟的數據指出,該公司從 2006 年到 2018 年 70% 的漏洞是由于內存安全問題造成的;谷歌的 Chrome 在幾年內也發現了類似比例的內存安全漏洞。
該組織認為,惡意的網絡行為者會利用不良的內存管理問題來訪問敏感信息、頒布未經授權的代碼執行、以及造成其他負面影響,而這些通常會危及設備并成為大規模網絡入侵的第一步。
“常用的語言,如 C 和 C++,在內存管理方面提供了很大的自由度和靈活性,同時嚴重依賴程序員對內存引用執行所需的檢查,簡單的錯誤就可能會導致可利用的基于內存的漏洞。軟件分析工具可以檢測到許多內存管理問題的實例,操作環境選項也可以提供一些保護,但內存安全軟件語言所提供的固有保護可以防止或減輕大多數內存管理問題。
NSA 建議在可能的情況下使用內存安全語言。雖然使用非內存安全語言的附加保護措施和使用內存安全語言并不能對可利用的內存問題提供絕對的保護,但它們確實提供了相當的保護。因此,私營部門、學術界和美國政府的總體軟件界已經開始倡議,推動軟件開發文化向使用內存安全語言發展。”
不過 NSA 也指出,“內存安全” 有點用詞不當,且這個概念也是相對的。并警告稱,即使使用內存安全語言,內存管理也不完全是內存安全的。
“大多數內存安全語言承認,軟件有時需要執行不安全的內存管理功能來完成某些任務。因此,有一些類或函數被認為是非內存安全的,并允許程序員執行可能不安全的內存管理任務。某些語言要求對任何內存不安全的內容進行明確的注釋,以使程序員和程序的任何審查者意識到它是不安全的。內存安全語言還可以使用以非內存安全語言編寫的庫,因此可以包含不安全的內存功能。盡管這些包含內存不安全機制的方法顛覆了固有的內存安全性,但它們有助于定位可能存在內存問題的位置,從而可以對這些代碼部分進行額外的審查。”
另一方面,一些內存安全語言可能會以性能為代價。此外,學習一門新的語言也并不容易;譬如,Rust 雖然功能強大,但學習曲線相當陡峭。
審核編輯 :李倩
-
內存
+關注
關注
8文章
3071瀏覽量
74406 -
C++
+關注
關注
22文章
2114瀏覽量
73922 -
編譯器
+關注
關注
1文章
1642瀏覽量
49326
原文標題:NSA:建議從 C/C++ 切換到內存安全語言
文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Spire.XLS for C++組件說明
![Spire.XLS for <b class='flag-5'>C++</b>組件說明](https://file1.elecfans.com/web3/M00/05/E7/wKgZO2eFwUuAbuoQAAAbn_khf8A091.png)
AKI跨語言調用庫神助攻C/C++代碼遷移至HarmonyOS NEXT
同樣是函數,在C和C++中有什么區別
C語言中申請的堆內存能不能自動釋放
C語言與Java語言的對比
SEGGER編譯器優化和安全技術介紹 支持最新C和C++語言
![SEGGER編譯器優化和<b class='flag-5'>安全</b>技術介紹 支持最新<b class='flag-5'>C</b>和<b class='flag-5'>C++</b><b class='flag-5'>語言</b>](https://file1.elecfans.com/web2/M00/EC/80/wKgaomZew0OAa4J1AAAcf4qxt2I454.png)
為什么很少用C++開發單片機
![為什么很少用<b class='flag-5'>C++</b>開發單片機](https://file1.elecfans.com/web2/M00/C6/8F/wKgaomYBGYeAEfT2AAAsOmCJ4d8781.png)
評論