Xen 如何处理用户 space 代码中的非虚拟化指令?
How does Xen handle non-virtualizable instructions in user space code?
Xen 必须在 Guest OS 内核代码中处理 。
但是如果我的 user-space 代码包含这样的指令(例如,将 GDT 信息存储到内存中的 SGDT)怎么办?我的代码能否在具有 Xen 准虚拟化的来宾 VM 中顺利运行?它会泄露主机的 GDT 信息(从而引起一些关注)吗?
此外,谁能告诉我 code/details 来宾内核中的 SGDT(和其他非虚拟化指令)是如何处理的?
https://xenbits.xen.org/docs/xtf/test-umip.html
似乎这确实是一个漏洞,直到新的 CPU 功能:
用户模式指令保护 (UMIP) 是新英特尔处理器中的一项功能。
激活时,它会导致 SGDT、SIDT、SLDT、STR 和 SMSW 指令在 CPL > 0 的情况下执行时产生#GP。这会阻止用户空间应用程序获取敏感的操作系统信息。
============================================= ====================
安全社区的人似乎很重视这个问题:
On the Cutting Edge: Thwarting Virtual Machine Detection, 2006
Xen 必须在 Guest OS 内核代码中处理
但是如果我的 user-space 代码包含这样的指令(例如,将 GDT 信息存储到内存中的 SGDT)怎么办?我的代码能否在具有 Xen 准虚拟化的来宾 VM 中顺利运行?它会泄露主机的 GDT 信息(从而引起一些关注)吗?
此外,谁能告诉我 code/details 来宾内核中的 SGDT(和其他非虚拟化指令)是如何处理的?
https://xenbits.xen.org/docs/xtf/test-umip.html
似乎这确实是一个漏洞,直到新的 CPU 功能:
用户模式指令保护 (UMIP) 是新英特尔处理器中的一项功能。
激活时,它会导致 SGDT、SIDT、SLDT、STR 和 SMSW 指令在 CPL > 0 的情况下执行时产生#GP。这会阻止用户空间应用程序获取敏感的操作系统信息。
============================================= ====================
安全社区的人似乎很重视这个问题: On the Cutting Edge: Thwarting Virtual Machine Detection, 2006