heb*_*thu 1 linux security kernel system-calls linux-kernel
我认为用户程序可以通过多种方式有意影响 Linux 内核的状态。
我想不出任何其他方式。不考虑硬件中断,因为它们不是由用户程序启动的。我认为mmap()和insmod都在使用系统调用,所以用户程序可能不得不依赖系统调用来影响内核的状态。我对么?
如果我是对的,假设内核中存在一些漏洞,恶意用户程序想要利用它们来攻击内核。考虑到我们的验证总能说出真相,是否有可能验证每个系统调用来防御此类攻击?
由于恰巧,还有一个显著与内核接口:/proc和/sys虚拟文件系统。虽然它们不保存常规文件,但它们的内容是内核的直接网关:对它们进行操作就是直接对内核分配的内存进行操作。例如,如果您想删除所有内存缓存,您可以使用...
echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
...内核会立即做出反应。
现在,程序需要系统调用才能与文件系统交互:open、read、write等等... 但是,仍然有一种方法可以跟踪所有这些系统调用:内核在/sys/kernel/debug/tracing. 更具体地说,系统调用的跟踪由/sys/kernel/debug/tracing/events/syscalls. 这个虚拟目录包含每个系统调用的两个子目录。例如,使用 open 系统调用,我们有:
sys_enter_opensys_exit_open在这些目录中,您会找到一个名为enable. 如果它包含“1”,则open正在跟踪相关事件(进入或退出呼叫)。我通常使用该enter事件,但您可以选择更适合您需要的任何内容。
激活系统调用跟踪后,您将在 中找到日志/sys/kernel/debug/tracing/trace。现在,请记住open系统调用被大量使用。它是程序和文件之间的最终网关,文件可以是 Linux 系统上的任何东西。还要记住,...
UNIX 并非旨在阻止其用户做愚蠢的事情,因为这也会阻止他们做聪明的事情。— 道格·格温
虽然您可以监控系统上发生的事情,但内核不会努力阻止用户做愚蠢的事情:这更多是系统管理员工作的一部分。
管理跟踪机制需要在 下的权限/sys/kernel/debug/tracing/trace。您可能需要成为 root 用户才能激活和操作跟踪。完成后不要忘记禁用跟踪。
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |