我想知道 root 用户是否可以读取和写入内存中的内核代码部分。它可以?
答案1
是的,通常 root 用户有足够的权限来间接修改内核代码,尽管假设考虑了足够的安全措施,可以使用一些机制来限制这一点。特权 root 用户修改内核代码的方法的非详尽列表:
和
ioperm()
syscallsiopl()
可以设置 I/O 端口权限。当然,引导目录(包括内核)中的文件是可以修改的。
/dev/mem
、/dev/kmem
和字符设备/dev/port
允许直接内存访问。各种 MSR 可用于更改低级 CPU 行为,从而破坏安全性。
该
kexec
功能可用于引导至新内核。ACPI 表可以由 root 在运行时加载,在内核中执行 AML。
ACPI
custom_method
可能被滥用直接写入内存。如果模块签名被禁用,内核模块可以由 root 加载。
像 kprobes 这样的调试功能可以修改内核行为。
可以通过使用强化内核(例如正确配置)来完成缓解网络安全,或者通过使用内核锁定修补哪些现在是上游。当然,仍然有必要防止 root 用户写入内核所在的引导加载程序或引导分区。