華為開發者提出為提高記憶體安全性而設計的Linux核心”沙盒模式”
儘管允許在Linux 核心中使用Rust 程式語言(部分原因是為了利用其記憶體安全潛能)的工作已經在進行中,但今天早上又有人提議為Linux 核心開發一種新的”沙箱模式”(SandBox Mode ),以提高核心中C 程式碼的記憶體安全性。
華為公司的Petr Tesarik 發出了關於新SandBox 模式的”徵求意見”補丁系列。 Petr 將SandBox 模式描述為:
“SandBox 模式的最終目標是在僅允許存取預定義位址的記憶體的環境中執行本機核心程式碼,因此潛在漏洞無法被利用或不會對核心的其他部分產生影響。
此補丁系列將SandBox 模式的API 和架構獨立的基礎架構加入核心。它在所有輸入和輸出資料的vmalloc() 編輯副本上運行目標函數。由於有了保護頁,僅此一項就能防止一些越界訪問”。
SandBox 模式文件進一步補充:
“沙盒模式(SBM)的主要目標是透過分解核心來減少核心程式碼中潛在記憶體安全漏洞的影響。SBM API 允許在隔離的執行環境中運行每個元件。特別是,用作輸入和/或輸出的記憶體區域與核心的其他部分隔離,並由保護頁包圍。
在實現了必要的拱形鉤子的架構上,沙盒模式利用硬體分頁設施和CPU 權限級別,只強制使用這些預先定義的記憶體區域。有了arch 支持,SBM 也能從違反保護規定的情況中恢復。這意味著,SBM 會強制終止沙箱,並向呼叫者傳回錯誤代碼(如“-EFAULT“),以便繼續執行。這種實作方式提供了*強隔離*”。
上游核心開發人員對沙箱模式提案的接受程度還有待觀察,有興趣的開發者可以查看RFC 修補程式系列,以了解有關Linux 核心剛剛提出的這項新增功能的更多資訊。