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