程序需要访问 /proc/self/mem 的合法原因是什么?

程序需要访问 /proc/self/mem 的合法原因是什么?

我注意到 Linux 上的 Firefox 和 Chromium 浏览器都会打开该文件/proc/self/mem进行阅读。据我所知,我的系统上没有其他程序读取此文件。

/proc/self/mem因成为无休止的特权升级漏洞利用的载体而臭名昭著,其中内存通常被恶意代码覆盖,程序执行被劫持。

这更令人悲伤,因为浏览器是最暴露的程序,具有最大的攻击面,因为它们从互联网获取不可信的输入。

现代浏览器需要阅读是否有正当理由/proc/self/mem

答案1

Firefox 和 Chromium 等浏览器使用多个进程,特别是减少他们的攻击面。这种分成多个进程的一方面是错误处理:如果给定进程中发生严重错误,最好在另一个进程中处理它(因为崩溃的进程可能不处于允许其分析自身的状态,并且以避免拥有崩溃的进程)。

因此,浏览器保持句柄打开,/proc/self/mem以便可以传递这些句柄,从而允许崩溃处理进程读取崩溃进程的内存,或者允许分析进程读取正在分析的进程的内存。这特别用于堆栈展开;看Perfetto 文档了解详细信息(这是 Chromium 中使用的开卷机)。

相关内容