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