0

我知道 CPU 根据程序状态字区分内核模式和用户模式,但假设用户程序试图通过访问内核代码来获得未经授权的访问以调用系统调用。CPU架构中有什么样的防御机制来防止这种利用?

4

1 回答 1

4

大多数架构都有特权级别,在 x86 中它们被称为“环”。它们是分配给地址空间中某些位置的特权级别,定义了该空间中的代码可以执行的特权指令的类型。

程序无法修改这些代表特权级别的位,因为它们驻留在页表中,而页表保存在内核空间中。代码访问此空间的任何尝试都会被 CPU 捕获并被操作系统捕获,即所谓的页面错误或分段错误,具体取决于您使用的操作系统。

此外,程序不能执行特殊指令,比如访问允许它们访问内核空间的 DMA 控制器,因为它们被认为是特权的。用户代码尝试使用此类特殊指令也会导致 CPU 出现故障,该故障被操作系统捕获。

因此,在设计良好的操作系统中,内存空间保护(即程序无法修改内核数据结构)和特权指令保护的结合使系统安全。程序通常无法提升其权限,因为所有尝试都会导致操作系统捕获的 CPU 出现故障。然后操作系统可以杀死有问题的程序。

要更详细地了解这些如何在 x86 架构中协同工作,请参阅 OSdev Wiki 页面的安全性:

http://wiki.osdev.org/Security

于 2013-06-11T18:09:16.683 回答