美國國家安全局發布軟體記憶體安全指引

美國國家安全局(National Security Agency, NSA)11月10日發布「軟體記憶體安全(Software Memory Safety)指引」,說明軟體記憶體安全之重要性,並建議軟體開發者使用C#、Go、Java、Ruby、Rust及Swift等程式語言取代C與C++,以強化記憶體存取安全。

NSA於報告指出,根據微軟與Google之相關文獻,近70%之安全漏洞源自於記憶體安全問題,讓駭客有機會利用漏洞來進行遠端程式攻擊(remote code execution),成為入侵之首要攻擊步驟。

NSA指出,常見記憶體問題以緩衝區溢位(buffer overflow)居多,若不慎重處理記憶體管理問題,不僅會衍生安全漏洞,並可能因為疏於管理,而造成程式運算結果錯誤,降低程式之工作效能或造成程式錯誤中斷。

有鑑於此,NSA建議軟體開發者強化程式開發及記憶體存取管理,建議事項如下:
1.    使用保障記憶體安全之程式語言(Memory safe languages),
如:使用C#、Go、Java、Ruby、Rust及Swift。
2.    應用程式安全性檢測(Application security testing),
如:對應用程式進行靜態(SAST)與動態(DAST)安全測試。
3.    強化防範滲透作為(Anti-exploitation features),
如:慎選編譯與執行開發環境,以及限制程式碼存取權限與存取位址等。

最後,NSA再次提醒軟體開發者採用多重保護機制,以強化記憶體管理之安全性,除前述所提C#等程式語言外,建議可同時輔以編譯器環境、工具分析及作業系統配置等措施,降低軟體開發過程中所衍生之記憶體漏洞。
 

Reference

https://www.securityweek.com/nsa-publishes-guidance-mitigating-software-memory-safety-issues
https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/3215760/nsa-releases-guidance-on-how-to-protect-against-software-memory-safety-issues/