我对Linux内核了解不多,有一些疑问。
将内核内存与用户空间内存分开的主要目的是什么?确保用户应用程序不会对内核做任何坏事?
用户级应用程序有多少种方法可以将控制权转移到内核?我能想到的包括(1)调用系统调用,(2)将内存映射到内核(但我认为mmap()也是一个系统调用),以及(3)加载内核模块(但我猜是lsmod还调用一些系统调用)。我对么?还有其他方法我错过了吗?
有多少种攻击内核的方法?我可以简要介绍一下他们吗?
如果我获得了root权限,是否意味着我完全控制了内核?也就是说,我可以对内核和硬件做任何我想做的事情?还是我对内核的权力仍然有限?
如果有人能帮我找出这些问题的答案,我将不胜感激。
我认为用户程序可以通过多种方式有意影响 Linux 内核的状态。
我想不出任何其他方式。不考虑硬件中断,因为它们不是由用户程序启动的。我认为mmap()和insmod都在使用系统调用,所以用户程序可能不得不依赖系统调用来影响内核的状态。我对么?
如果我是对的,假设内核中存在一些漏洞,恶意用户程序想要利用它们来攻击内核。考虑到我们的验证总能说出真相,是否有可能验证每个系统调用来防御此类攻击?