尽管允许在 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 内核刚刚提出的这一新增功能的更多信息。