Xen 必须处理 non-virtualizable instructions在 guest 操作系统内核代码中。
但是如果我的用户空间代码包含此类指令(例如,将 GDT 信息存储到内存中的 SGDT)怎么办?我的代码仍然可以在具有 Xen 半虚拟化的 guest VM 中顺利运行吗?它会泄露主机的 GDT 信息(从而引起一些关注)吗?
此外,有人可以向我展示如何处理 guest 内核中的 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
关于intel - Xen 如何处理用户空间代码中的不可虚拟化指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48314181/