[qemu][seccomp]虚拟化安全sandbox技术分析
Posted AlwaysGeek
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[qemu][seccomp]虚拟化安全sandbox技术分析相关的知识,希望对你有一定的参考价值。
前言:
libvirt-4.3搭配qemu-2.12使用,如果使用默认的编译选项,可能会让qemu无法正常启动虚拟机。会报出来“qemu-system-x86_64: -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny: seccomp support is disabled”的错误。
好吧,老习惯,分析代码。
分析:
1, seccomp support is disabled
在编译的时候,没有打开CONFIG_SECCOMP编译选项。
从configure文件上来看,如果安装了libseccomp就是默认打开的;再或者就是--enable-seccomp和--disable-seccomp来控制。
2,libvirt
/etc/libvirt/qemu.conf中通过seccomp_sandbox来控制。
0是关闭,1是打开,-1是自动检测。注意,如果这里没有配置,libvirt则会自动检测。
那么就会出现上文的状况,libvirt的检测逻辑中,没有发现当前版本的qemu不支持sandbox,启动参数中带有了sandbox配置,导致qemu报错。
解决办法就是安装libseccomp,执行congfigure时添加--enable-seccomp,清空/var/cache/libvirt/qemu/capabilities重启libvirtd即可。
3,libseccomp
下载代码https://github.com/seccomp/libseccomp
libseccomp的代码量比较小,大约有几部分:
a,本地的db。用来保存seccomp的规则。
b,bpf生成。用来生成bpf代码。
c,使用syscall加载到kernel。prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, program);
4, PR_SET_SECCOMP
以上是关于[qemu][seccomp]虚拟化安全sandbox技术分析的主要内容,如果未能解决你的问题,请参考以下文章
主流虚拟化平台 QEMU-KVM 被曝存在漏洞,可完全控制宿主机及其虚拟机 | 每日安全资讯