愛伊米

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,這些進行中的方案仍處於實驗階段。

Chrome 探索使用 Rust 解決記憶體安全問題