漏洞概述

在魔方云虚拟化环境中发现一处高危 0Day 安全漏洞,由于 libvirt 服务错误配置,导致16509 端口对外无认证暴露,攻击者无需 SSH 账号密码,即可远程接管整台宿主机上全部 KVM 虚拟机,可实现虚拟机操控、虚拟机内 root 命令执行、篡改磁盘镜像等高危操作,且攻击行为不会留存于 SSH 登录日志,隐蔽性极强。

风险等级:严重(Critical) 影响对象:采用魔方云默认配置、开启 libvirt tcp 监听的宿主机 暴露端口:16509

漏洞成因

错误配置项

libvirt 配置文件内认证参数被设置为关闭 TCP 认证:

auth_tcp = "none"

该配置代表 TCP 接入 libvirt 时完全关闭身份校验,任何人连接均可获得完整权限。

同时 libvirt 服务监听在全地址:

0.0.0.0:16509
[::]:16509

再加上宿主机防火墙 INPUT 链默认策略为ACCEPT,端口直接对公网开放。 外部扫描即可确认端口公网可达:

IP:16509 EXTERNALLY_OPEN

攻击利用链路

攻击者仅需要知道宿主机公网 IP,不需要 SSH 密码、不需要服务器账号,直接使用 libvirt tcp 协议连接:

qemu+tcp://IP/system

连接成功后可执行全部高危操作:

  1. 查看、启动、关闭、删除宿主机上所有虚拟机

  2. 修改任意虚拟机硬件配置

  3. 挂载磁盘、ISO 镜像文件

  4. 通过 QEMU Guest Agent,在运行中的虚拟机内部直接执行 root 权限命令

  5. 虚拟机关机状态下,直接篡改虚拟磁盘镜像文件

  6. ⚠️重点:整套攻击流程不会出现在 SSH 登录日志中,管理员很难通过 SSH 日志发现入侵痕迹。

攻击者拿到 libvirt 权限之后,可以横向控制全部客户虚拟机,窃取业务数据、植入后门、销毁业务数据,对 IDC 服务商与租户都造成毁灭性风险。

受影响环境特征

  1. 使用魔方云魔方虚拟化管理平台

  2. libvirt 配置设置auth_tcp = "none"

  3. libvirtd 监听0.0.0.0:16509对公网

  4. 防火墙未拦截 16509 入站流量

注意:很多运维人员误以为 16509 仅内网使用,平台部署脚本错误直接开启对公网监听,是本次漏洞的根源。

紧急修复方案

cat > /etc/libvirt/libvirtd.conf << EOF
listen_tls = 0
listen_tcp = 1
listen_addr = "127.0.0.1" 
auth_tcp = "none"
EOF

systemctl restart libvirtd

入侵排查建议

  1. 检查所有虚拟机磁盘镜像是否存在异常篡改、新增后门文件

  2. 检查 libvirt 日志 /var/log/libvirt/,查看未知来源客户端连接记录

  3. 所有虚拟机内部全盘查杀后门,即便 SSH 日志没有异常,也不能排除被入侵

特别鸣谢

  • 欢妹(星空云)

  • xioiox(7iNet)

  • 爱睡觉是天赋(冥雾云)

  • 极点(极点云计算)

  • 智简魔方