有关Linux内核安全性的一些基本问题[关闭]


8

我对Linux内核了解不多,并且有一些疑问。

  1. 将内核内存与用户空间内存分开的主要目的是什么?要确保用户应用程序不会对内核造成任何不良影响?

  2. 用户级应用程序有几种方法可以将控制权转移到内核?我能想到的包括(1)调用系统调用,(2)将内存映射到内核(但我认为mmap()也是系统调用),以及(3)加载内核模块(但我想lsmod还调用一些系统调用)。我对么?还有其他我想念的方式吗?

  3. 有几种攻击内核的方法?我可以简要介绍一下吗?

  4. 如果我获得root特权,是否意味着我完全控制了内核?即,我可以对内核和硬件做任何我想做的事吗?还是我对内核的功能仍然有限?

如果有人可以帮助我找出这些问题的答案,我将不胜感激。


1
这里有一些很好的问题,但是您可以将它们分为更具体的问题,每个问题一个主要主题吗?
Caleb 2014年

Answers:


5

我将尝试尽可能简短地回答问题。您所提出的问题通常在大学的操作系统入门课程中得到解决,但是我认为您没有参加过此课程。

  1. 非常需要用于用户空间进程的内存隔离-不仅要保护内核免受恶意用户空间程序的侵害,而且要使用户空间程序之间的相互保护。这通常称为虚拟内存。它还使分页更容易实现,这也是出于其他原因(更简单的分段,更简单的链接器/加载器等)所希望的。

  2. 中断(并非所有中断都由用户级应用程序控制)。放弃处理器还从过程中夺走了“控制权”(例如,wait等也是系统调用)。内核本身可能决定取消计划应用程序。

  3. 这是一个非常广泛的问题。系统调用实施不当的内核很容易受到攻击。写入物理内存的能力将是另一种方式。错误执行指令可能还会导致其他漏洞(例如Intel处理器中的sysret漏洞)。

  4. 根特权不同于内核特权。以root用户身份运行的应用程序仍在使用虚拟内存,仍必须进行系统调用,还必须遵守任何用户级应用程序必须遵循的其他规则。

如果您希望我提供某些答案的更多详细信息,请告诉我。

如果有人可以改善某些答案,请随时指出。


谢谢您的回复。您说的是“中断(并非所有中断都在用户级应用程序中控制)。”表示仅软件中断在用户级中进行控制,而硬件中断则不在。这是对的吗?
hebothu 2014年

我相信用户空间必须以某种方式要求内核空间让它处理一些中断。因此内核基本上仍在控制中断。特别是,如果用户空间应用程序希望接收中断,则内核仍在处理中断并将其传递给用户空间。查找Linux UIO。
mtahmed 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.