微軟正在探索使用Rust編程語言作為C、C++和其他語言的替代方案,以此來改善應用程序的安全狀況。
自2004年以來,微軟安全響應中心(MSRC)已對所有報告過的微軟安全漏洞進行了分類。根據他們提供的數據,所有微軟年度補丁中約有70%是針對內存安全漏洞的修復程序。
▲微軟每年約有70%的漏洞仍然是內存安全問題
這樣高的百分比是因為Windows和大多數其他微軟產品主要使用C和C++編寫,這兩種“內存不安全”(memory-unsafe)的編程語言允許開發人員對內存地址進行細粒度控制,并且可以執行代碼。管理內存執行的開發人員代碼中的一個漏洞可能導致一系列內存安全錯誤,攻擊者可以利用這些錯誤帶來危險和侵入性后果,例如遠程代碼執行或特權提升漏洞。
于是,探索使用諸如Rust之類的內存安全(memory-safe)語言被提上日程,這或將成為創建更安全的微軟應用程序的替代方法。
Rust最初是Mozilla的一個研究項目,用于更安全、更快速地重寫Firefox瀏覽器。最近,Brave瀏覽器還用Rust版本替換了原先用C++編寫的廣告攔截組件。2019年的StackOverflow開發者調查顯示,Rust已連續四年蟬聯“最受開發者喜愛的編程語言”。開發人員喜歡它,因為它的語法更簡單,并且使用Rust編寫的應用程序bug更少,因此開發人員可以專注于擴展他們的應用程序,而不是進行持續的維護工作。
MSRC首席安全工程經理Gavin Thomas建議第三方開發人員也應該研究內存安全語言,他列舉了一些原因,例如開發人員花時間和精力學習如何調試C++應用程序中出現的與內存相關的安全漏洞。但這顯然是不合適的,“開發人員的核心工作不是擔心安全性,而是要做功能開發”,Thomas提出疑問,“為什么不在一開始就將內存安全問題引入開發語言呢?”
為此,他呼吁:“如果這個行業真正關心安全,應該專注于開發人員的工具,而不應當被所有安全設備和過時的方法弄傻眼。我們首先得努力防止開發人員陷入缺陷,而不是提供解決缺陷的指導和工具。”