![我可以使用 SELinux 在 KVM/QEMU 中添加额外的保护层以防止 0day VM 逃逸攻击吗?](https://linux22.com/image/230189/%E6%88%91%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20SELinux%20%E5%9C%A8%20KVM%2FQEMU%20%E4%B8%AD%E6%B7%BB%E5%8A%A0%E9%A2%9D%E5%A4%96%E7%9A%84%E4%BF%9D%E6%8A%A4%E5%B1%82%E4%BB%A5%E9%98%B2%E6%AD%A2%200day%20VM%20%E9%80%83%E9%80%B8%E6%94%BB%E5%87%BB%E5%90%97%EF%BC%9F.png)
我的主机是 Fedora,我想添加一层额外的保护,以防止在主机上执行代码的 0day KVM/QEMU 漏洞。例如,在一些 CVE 中,如果我们以管理员身份在 Windows 虚拟机上运行特制的恶意 Windows 可执行文件,它就会在主机上执行代码。
我时不时地分析恶意软件,需要执行未知的恶意软件,所以对此无能为力,而且我也不想为此购买一台单独的计算机。
我的问题是,我可以利用 SELinux 来保护自己免受此类攻击吗?或者 KVM/QEMU 是否已经使用 SELinux 来防范此类攻击?或者有更好的方法来防范这些攻击吗?
编辑:
以下是semanage boolean -l | grep virt
在我更新的 Fedora 39 中的输出:
virt_lockd_blk_devs (off , off) Allow virt to lockd blk devs
virt_qemu_ga_manage_ssh (off , off) Allow virt to qemu ga manage ssh
virt_qemu_ga_read_nonsecurity_files (off , off) Allow virt to qemu ga read nonsecurity files
virt_qemu_ga_run_unconfined (off , off) Allow virt to qemu ga run unconfined
virt_read_qemu_ga_data (off , off) Allow virt to read qemu ga data
virt_rw_qemu_ga_data (off , off) Allow virt to rw qemu ga data
virt_sandbox_share_apache_content (off , off) Allow virt to sandbox share apache content
virt_sandbox_use_all_caps (on , on) Allow virt to sandbox use all caps
virt_sandbox_use_audit (on , on) Allow virt to sandbox use audit
virt_sandbox_use_fusefs (off , off) Allow virt to sandbox use fusefs
virt_sandbox_use_mknod (off , off) Allow virt to sandbox use mknod
virt_sandbox_use_netlink (off , off) Allow virt to sandbox use netlink
virt_sandbox_use_sys_admin (off , off) Allow virt to sandbox use sys admin
virt_transition_userdomain (off , off) Allow virt to transition userdomain
virt_use_comm (off , off) Allow virt to use comm
virt_use_execmem (off , off) Allow virt to use execmem
virt_use_fusefs (off , off) Allow virt to use fusefs
virt_use_glusterd (off , off) Allow virt to use glusterd
virt_use_nfs (on , on) Allow virt to use nfs
virt_use_pcscd (off , off) Allow virt to use pcscd
virt_use_rawip (off , off) Allow virt to use rawip
virt_use_samba (off , off) Allow virt to use samba
virt_use_sanlock (off , off) Allow virt to use sanlock
virt_use_usb (on , on) Allow virt to use usb
virt_use_xserver (off , off) Allow virt to use xserver
有人可以解释一下我需要打开或关闭其中哪些来添加针对 KVM/QEMU 漏洞的额外保护而不会使 Windows VM 无法使用吗?我对 Windows 虚拟机的基本用法是,我在其中一些虚拟机中进行编码,并在其他虚拟机中运行恶意软件进行分析,并且我不需要虚拟机的互联网连接,这些规则是否针对这种情况进行了正确配置,或者我可以使其更进一步安全的?
基本上,如果您的任务是使用 SELinux 规则来保护 KVM/QEMU,您会关闭或打开哪些 SELinux 规则以使其更安全?
互联网上关于上述一些规则的信息几乎为零,例如“ Allow virt to rw qemu ga data
”到底是什么意思?嘎数据??
答案1
我的主机是 Fedora,我想添加一层额外的保护,以防止在主机上执行代码的 0day KVM/QEMU 漏洞。
哇!这些都是稀有的。无论如何,0days 的本质是你无法事先了解其机制。因此,唯一实际的做法是 a) 不使用功能或 b) 让您的功能与版本保持同步。
我的问题是,我可以利用 SELinux 来保护自己免受此类攻击吗?
依靠! qemu 可执行文件在 SELinux 上下文中运行,因此只能执行您允许它执行的操作。
但如果 0day 影响了 KVM、内核等方面,那么那里就不存在安全边界了。
或者有更好的方法来防范这些攻击吗?
老实说,除非您可能正在分析国家预算规模的专家针对高价值目标所利用的东西,否则我建议您不要担心,只使用最新版本的 Linux。 Linux 定期发布正是因为这允许他们定期发布可能或已经被利用的功能的补丁。
如果您可能正在分析国家预算规模的专家组针对高价值目标(例如整个 AWS 或 NSA 等)所利用的内容,那么您为什么不在空中使用专用计算机进行工作- 间隙网络?