Chrome 探索使用 Rust 解決內存安全問題
Chrome 安全團隊發表文章稱,谷歌正在探索使用內存安全語言 Rust 重寫或開發 Chrome 的部分模塊。
去年谷歌曾指出,Chrome 70% 的安全漏洞是內存安全問題,主要由 C/C++ 中的指針錯誤導致。針對此問題,谷歌表示 Chrome 探索通過以下三個方向來解決:
- 在編譯時檢查指針是否正確,使 C++ 更安全
- 在運行時檢查指針是否正確,使 C++ 更安全
- 調查代碼庫中內存安全語言的使用情況
“編譯時檢查”意味著在 Chrome 構建過程中保證安全,“運行時”意味著在設備上運行 Chrome 時進行檢查。理想情況下,通常會選擇選項 1 —— 在編譯時使 C++ 更安全。不過語言的設計理念并非如此,因此 Chrome 沒有選擇此方法,而是試驗了 2 和 3。
Chrome 安全團隊介紹了他們對 C++ 安全解決方案的重大投入 —— 例如 MiraclePtr 和 ABSL/STL 強化模式。他們希望消除相當一部分可利用的安全漏洞,同時也預計會出現部分性能損失的情況。
此外,他們還在探索未來是否可以使用內存安全語言 Rust 重寫或開發 Chrome 的部分模塊。Rust 是由 Mozilla 開發的編程語言,能在編譯時發現指針錯誤,因此不會造成性能損失。但要讓 Rust 和 C++ 一起良好地搭配使用仍存在不少問題。
Chrome 安全團隊表示,即使從明天開始使用 Rust 編寫新的大型組件,他們也不太可能在幾年內消除大部分安全漏洞。能否讓語言邊界足夠干凈,以便可以使用 Rust 編寫部分現有組件?Chrome 安全團隊也無法回答這個問題。不過他們已經開始在 Chromium 源代碼樹中進行有限的、非面向用戶的 Rust 實驗,暫時沒有在 Chrome 的生產版本中使用 Rust,這些進行中的方案仍處于實驗階段。
本文轉自OSCHINA
本文標題:Chrome 探索使用 Rust 解決內存安全問題
本文地址:https://www.oschina.net/news/161500/an-update-on-memory-safety-in-chrome