intel - Xen 如何处理用户空间代码中的不可虚拟化指令?

标签 intel virtualization xen hypervisor

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/

相关文章:

c - 上交所指令

python - 从 Python 查看 vmdk 文件?

c# - 如何检测到 Windows VirtualStore 的文件重定向?

WPF VirtualizingStackPanel 以提高性能

perl - 使用 perl 的自签名证书通过 https 访问 xenapi

virtualization - 为什么许多针对 xen 的 "bare kernel+app"解决方案?

android - Delphi Android 应用程序启动后崩溃

c++ - AVX/SSE 回合向下 float 并返回整数 vector ?

linux - 更新到 OpenGL 3.2 英特尔赛扬 archLinux

linux - 重启后 XenServer 错误(xenopsd 内部错误)