首页 > 解决方案 > 用户态应用程序中使用的 mincore 系统调用是什么?

问题描述

Linuxmincore(2)在用户态应用程序中有什么用处?为什么它会暴露给非特权用户?

我可以想象一些数据库利用知道哪些页面被缓存但还有哪些其他示例?

标签: linuxlinux-kernel

解决方案


Linuxmincore(2)在用户态应用程序中有什么用处?

我会说这很可能是基于意见的。我想到了分析、统计、性能评估和类似的东西。除此之外,我想不出其他现实的合法用例。

以下是我发现使用的一些程序示例mincore(如您所见,所有分析/统计相关):

为什么它会暴露给非特权用户?

大约在一年前,这实际上是一个很好的问题,当时系统调用的语义没有明确定义,而且这样的系统调用的存在是相当值得怀疑的。实际上,在内核版本 4.14.2 之前mincore可能已被滥用以从用户空间泄漏未初始化的内核内存(请参阅CVE-2017-16994和相关的零项目错误报告)。

从那时起,系统调用已被修补并更新其语义。进程调用它唯一能做的就是查询关于它的虚拟内存映射的信息。没有什么真正有害的,只是自我检查,因此可以使用非特权进程。没有真正的理由让它成为特权系统调用,如果这样做也可能被视为 API 损坏。


推荐阅读