Linux KVM Zapscape虚拟机逃逸漏洞检测脚本
KVM 虚拟化环境一旦出现虚拟机逃逸漏洞,攻击者就可能从虚拟机直接打到宿主机,影响面很大。
Zapscape 是近期被公开讨论的这类安全风险,目前主要靠检测脚本判断主机是否受影响。
这篇文章会带你从零开始,完成检测脚本的准备、执行、结果解读和常见排错,全程不需要太深的内核知识,照着做就行。
检测前,先把这几项准备好
开始之前,请先确认三件事:
- 你有一台KVM 宿主机的 SSH 登录权限,且当前用户支持
sudo。 - 宿主机系统为 Linux,内核架构一般为 x86_64 或 ARM64,脚本需要以 root 权限读取
/proc和/sys下的关键信息。 - 检测脚本建议从官方公告或可信安全渠道下载,不要随意从第三方博客复制不明脚本,避免引入新的安全风险。
如果无法确定脚本来源,可以先用 sha256sum 校验文件哈希,再与发布方给出的哈希值比对。
这一步虽然简单,但在安全场景下非常必要。
下载并执行 Zapscape 检测脚本
登录宿主机后,先创建一个专用目录,避免脚本文件散落:
mkdir -p ~/zapscape-check && cd ~/zapscape-check
将检测脚本放到这个目录下(假设文件名为 zapscape_check.sh),然后赋予执行权限:
chmod +x zapscape_check.sh
执行检测前,建议先用 Bash 语法检查,防止脚本文件在传输过程中损坏:
bash -n zapscape_check.sh
没有输出说明语法正常。
接着用 root 权限运行:
sudo ./zapscape_check.sh
脚本运行时间一般在几秒到几十秒,期间会收集内核版本、KVM 模块参数、CPU 虚拟化特性等信息。
如果脚本内部会更新缓存或写入临时文件,注意不要让脚本在你完全不信任的环境变量下运行,比如可以先清理一下环境:
env -i HOME=$HOME PATH=$PATH TERM=$TERM ./zapscape_check.sh
实际执行时,以你下载的脚本说明为准。
看懂输出结果,判断是否受影响
脚本执行完毕后,通常会输出以下几种结果之一:
- Vulnerable(受影响):当前主机的 KVM 配置或内核状态符合漏洞触发条件,需要尽快处理。
- Not Vulnerable(不受影响):主机状态安全,但仍建议继续关注官方更新。
- Unknown / Manual Review Required(需要人工复核):脚本无法自动判断,需要人工查看输出中的关键字段。
不要只看最后一行结论,建议把输出内容保存下来便于复查:
sudo ./zapscape_check.sh | tee zapscape_result.txt
然后重点检查这几项信息:
- 当前内核版本与 KVM 模块版本;
- 是否开启了嵌套虚拟化;
- 虚拟机 CPU 模型是否与漏洞触发路径相关。
如果结果包含“processor flags(处理器特性标志)”或“kvm module parameters(模块参数)”,可以对照官方公告里给出的受影响特征逐项确认。
常见报错与避坑指南
缺少依赖命令,比如 lscpu、modinfo 不存在。
可以先用包管理器安装 util-linux 和 kmod:
sudo apt update && sudo apt install -y util-linux kmod # Debian/Ubuntu
sudo yum install -y util-linux kmod # RHEL/CentOS
脚本提示 Permission denied。
检查文件权限和执行方式:
ls -l zapscape_check.sh
sudo bash zapscape_check.sh
误把宿主机当虚拟机检测。
Zapscape 针对的是 KVM 宿主机,如果你在虚拟机内部运行,检测结果可能不适用。
请先确认环境:
systemd-detect-virt
输出为 kvm 时,说明当前就在虚拟机里;
输出为 none 时才大概率是宿主机或物理机。
避免在业务高峰期直接执行带内核模块操作的检测。
部分检测脚本会加载或卸载测试模块,可能短暂影响虚拟化性能。
建议先在测试环境跑一遍,确认无副作用后再在生产主机执行。
确认受影响后,怎么处理
如果脚本确认主机受影响,先不要慌张,可以按以下顺序处置:
- 确认业务影响:临时迁移该宿主机上的关键虚拟机,或做好备份快照。
- 关注官方补丁:KVM 相关漏洞一般通过内核补丁修复,请留意发行版安全公告,及时更新
kernel和qemu-kvm软件包。 - 加固配置:如果官方给出临时缓解措施,比如关闭嵌套虚拟化或调整 CPU 模型,可结合业务情况评估后实施。
- 复查:补丁安装完成后,重启宿主机并再次运行检测脚本,确认结果变为“不受影响”。
整个自查过程建议记录执行时间、脚本版本、输出结果,方便后续安全审计。
如果你正在处理 331.Linux KVM Zapscape虚拟机逃逸漏洞检测脚本,自查受影响主机,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。