谷歌向 Linux 内核提交 mseal () syscall 补丁

谷歌工程师近日向 Linux 内核提交了一个新补丁,希望为其添加名为 mseal () 的系统调用「mseal() syscall」。

据介绍, 谷歌这个独立于架构的系统调用最初由 Chrome OS 上的 Chrome 浏览器使用。当时 Glibc 也在动态链接器中进行类似的实验,以在启动时封装所有不可写的段。

通过 mseal () 可防止系统调用修改虚拟地址的元数据。最初支持的是针对 mprotect/pkey_mprotect、munmap、mmap 和 mremap 调用进行封装。为了在 Chrome 和 V8 JavaScript 引擎中提供更好的保护,开发者正在寻求使虚拟内存区域的元数据不可变。

Glibc 的方案是在动态链接器中添加封装,以便在启动时对所有不可写段进行封装,这也将自动使所有应用程序受益。

Linus Torvalds 对 mseal () syscall 提出的模型表达了保留意见,目前这个提案并没有直接被接受,需要修订才能进化成适合上游的形式。

Linus 表示:

“我对添加某种’锁定内存映射’ (lock down memory mappings) 模型没有异议,但事实并非如此。

首先,最明显的问题是提交信息无价值。

另外更根本的问题要严重得多 ——"ON_BEHALF_OF_KERNEL" 和 "ON_BEHALF_OF_USERSPACE" 整体完全不合逻辑,整体概念都需要重写。因为这就是 remap_file_pages () “字面上” 的系统调用定义。”

原文来自:https://www.linuxprobe.com/ggxlnhtjmsbd.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容