为什么用户进程无法在内核地址空间上写入或修改数据似乎相当明显。但我不明白为什么他们甚至无法读取数据。我知道在这种情况下会出现分段陷阱,但其背后的原因是什么?
如果用户进程只能读取内核地址空间上的数据,会出现什么问题?
提前致谢
答案1
比“意外”发现密码更糟糕的是:
如果您可以读取内核空间,那么很可能您也可以读取其他进程的内存。如果您正在考虑一个场景,您可以仅有的读取内核空间,那么您仍然可以读取磁盘缓冲区、I/O 缓冲区等,因此您可以看到与其他进程之间的所有 I/O。
这意味着所有凭据、密码和秘密现在都可供您使用:您只需尝试进行身份验证(例如执行sudo
等),然后观察其他进程的行为。它要么在进程内存中拥有凭证,要么您可以从您可以看到的 I/O 中重建它们(因为所有计算都是确定性的,您将能够模仿其他进程的操作,即使您无法读取它的内容)记忆)。
因此,能够读取内核空间可以为您提供 root 凭据。然后你就可以做一切事情了。