由于联想固件ThinkPwn错误,我试图了解权限和响铃。
如果内核是 Ring 0 而 SMM(系统管理模式)是 Ring -2,那么在这两者之间可能是 Ring -1?
由于联想固件ThinkPwn错误,我试图了解权限和响铃。
如果内核是 Ring 0 而 SMM(系统管理模式)是 Ring -2,那么在这两者之间可能是 Ring -1?
作为 x86 保护模式设计的一部分,您现在通常看到的“环”命名法 (0-3) 从段选择器中请求的特权级别字段开始。
过去,可以将内存空间的独占部分称为段。在“实模式”中,这是必要的,因为您只有 20 位可寻址内存。当保护模式出现时,它仍然提供分段,但也提供特权级别。0-2级是“主管”级别,可以做大部分事情。环 1-2 不能运行特权指令,但这是唯一真正的限制;否则它们与环 0 一样具有特权。
Ring 3 同时是“用户模式”。如果您将段选择器设置为指向此环,则需要通过某些系统调用接口获得内核的帮助才能执行任何需要特权 CPU 或内存访问的操作。
如今,在 64 位 x86 中几乎要求不使用分段。但是,段选择器仍然存在 - 所有段只是重叠并覆盖整个地址空间。
因此,ring 0-3 的最初目的是隔离用户模式代码和内核之间的特权,并阻止用户模式代码遍历系统控制结构。
然后虚拟化成为 x86 上的一件事,英特尔/AMD 决定为其添加硬件支持。这需要一段管理程序(管理程序)代码来设置一些定义虚拟机的控制结构(称为 VMCS),然后调用vmenter
和处理vmexit
虚拟机需要管理程序帮助的条件。
这段代码被称为“ring -1”。没有这样的实际特权级别,但由于它可以托管多个内核,所有内核都认为它们对系统具有 ring 0 访问权限,因此这是有道理的。
系统管理模式是另一种带有特殊说明的野兽。固件(您的 BIOS)设置了一个 SMM 处理程序来处理系统管理中断 - 可根据固件想要通知的内容进行配置。当这些事件被触发时,操作系统(甚至管理程序)被挂起并进入一个特殊的地址空间。该区域应该对操作系统本身不可见,同时在同一处理器上执行。因此是“ring -2”,因为它比管理程序更有特权。
您还会听到这里和那里提到的关于 Intel ME 或 AMD 的 PSP 的“ring -3”。这是运行独立固件的第二个处理器(我相信英特尔使用 ARC SoC 处理器),能够对主系统做任何它喜欢的事情。表面上这是为了提供硬件类型功能的 IPMI/远程管理。无论主系统是否通电,只要硬件通电,它就可以运行 - 正如我所说,它的目的是为主系统通电。
从安全的角度来看,你可以让自己进入的环越低,你就越难以察觉。bluepill 研究是关于向操作系统隐藏它真正在 VM 中运行的事实。后来对SMM持久性进行了研究。例如,SMM 持久性可能允许您重新安装恶意软件,即使完全擦除硬盘并重新安装也是如此。英特尔 ME 可能会打开一个始终在线的持久网络芯片,以便在主要目标上安装恶意软件。
我在这里坚持使用英特尔芯片,但您应该知道其他平台的工作方式不同。例如,ARM 芯片具有“主管”和“用户”模式等。
Ring -1 是管理程序,实现为 Intel VT-x ("Vanderpool") [Wikipedia]或 AMD-V ("Pacifica") [Wikipedia]。