root 用户是否具有对内核代码的读/写访问权限?

gop*_*opy 3 linux root kernel

我想知道 root 用户是否可以读取和写入内存中的内核代码部分。它可以?

for*_*est 5

是的,通常 root 用户有足够的权限间接修改内核代码,尽管有一些机制可以用来限制这一点,前提是考虑到足够的安全措施。特权 root 用户可以修改内核代码的方式的非详尽列表:

  • ioperm()iopl()系统调用可以设置I / O端口的权限。

  • 当然,引导目录(包括内核)中的文件是可以修改的。

  • /dev/mem/dev/kmem/dev/port字符设备允许直接内存访问。

  • 各种 MSR 可用于更改低级 CPU 行为,从而破坏安全性。

  • kexec功能可用于引导到新内核。

  • ACPI 表可以在运行时由 root 加载,在内核中执行 AML。

  • custom_method可以滥用ACPI直接写入内存。

  • 如果模块签名被禁用,内核模块可以由 root 加载。

  • kprobes 等调试功能可以修改内核行为。

可以通过使用强化内核(例如正确配置的grsecurity)或使用现在位于上游内核锁定补丁来进行缓解。当然,仍然有必要防止 root 用户写入内核所在的引导加载程序或引导分区。