TencentOS 安全团队的 Corvus AI(科维斯 AI)主动发现了 Linux 内核 vhost 子系统中存在本地提权及虚拟机逃逸漏洞(CVE-2026-74580)。该漏洞自 2017 年引入,在内核中潜伏约 9 年,影响 TencentOS Server 2.4、TencentOS Server 3、TencentOS Server 4 等全系列产品。低权限攻击者可通过打开
/dev/vhost-vsock 或 /dev/vhost-net 设备并下发常规 ioctl,利用该漏洞实现任意内核地址读写,进而获取 root 权限。当宿主机启用了 vhost,且 QEMU 配置了 vIOMMU(-device intel-iommu)、对应的 virtio 设备开启了 iommu_platform=on 时,还存在虚拟机逃逸风险。监测到漏洞情报后,TencentOS 安全团队第一时间对漏洞进行分析和修复。鉴于该漏洞影响范围较大且内部 Exp 已验证,建议您根据 TencentOS 安全团队提供的漏洞修复解决方案进行修复或应用临时缓解措施。
注意:
若您已使用 TencentOS Server,建议您及时开展风险自查,如受影响,请及时根据 TencentOS Server 提供的方案进行防护,确保您的系统安全。
1. 漏洞详情
该漏洞(CVE-2026-74580)的根因在于 vhost 子系统 vring 元数据(desc/avail/used)维护的 IOTLB 映射缓存,在通过
VHOST_SET_VRING_ADDR 改写 vring 地址时未被失效,而该 ioctl 在 IOTLB 模式下对地址不做任何校验,使非特权用户可将内核任意指定地址当作“已校验的用户态指针”,交给不做 access_ok 检查的 __copy_to_user() / __copy_from_user(),形成稳定的任意内核地址读写,最终实现本地提权。该漏洞位于 vhost 核心子系统(
drivers/vhost/vhost.c),所有前端(vhost-net、vhost-vsock、vhost-scsi、vhost-vdpa)共用同一份代码,是否受影响需结合内核版本与 vhost 模块启用情况判断。警告:目前该漏洞细节、PoC 均已公开,需要您尽快进行处理,以免出现安全事件。
2. 受影响 TencentOS Server 版本
TencentOS Server 4
TencentOS Server 3.3(TK4)
TencentOS Server 3.1(TK4)
TencentOS Server 2.4(TK4)
自查方式
1. 查看环境内核版本是否在受影响范围内。
登录待查环境并执行以下命令:
uname -r
若输出的内核版本为以下任一,则表明当前环境受影响:
5.4.*
6.6.*
2. 检查环境是否启用了 vhost 相关模块。
执行以下命令检查 vhost 后端是否编译启用:
cat /boot/config-$(uname -r) | grep -w CONFIG_VHOST
若输出
CONFIG_VHOST=m 或 CONFIG_VHOST=y,则表明当前环境受影响。3. 宿主机排查 QEMU 虚拟机是否同时启用 vhost 和 iommu。
对确认受影响的宿主机,需进一步检查各虚拟机的 QEMU 启动参数,确认是否同时满足以下三个条件:
排查项 | 启动参数检查方法 |
目标 vhost 设备是否开启 iommu_platform | 对应的 -device virtio-net-pci, ... 是否包含 iommu_platform=on |
是否配置了 vIOMMU | 是否存在 -device intel-iommu |
目标网卡是否配置了 vhost 后端 | 若使用 TAP + 内核 vhost-net,检查对应的 -netdev tap, ... 是否包含 vhost=on |
以 virtio 网卡使用 TAP + 内核 vhost-net 后端为例,符合上述条件的参数片段示例如下(... 表示省略其他参数):
-device intel-iommu-device virtio-net-pci,...,netdev=net0,iommu_platform=on-netdev tap,id=net0,...,vhost=on
警告:若宿主机内核受影响,且同一虚拟机同时满足上述三个条件,则存在本公告所述的虚拟机逃逸风险。
经排查确认,腾讯云 CVM 实例不存在本公告所述的虚拟机逃逸风险。
3. 漏洞修复方案
TencentOS Server 已完成该漏洞修复。建议受影响用户通过官方软件源更新至对应内核修复版本,并在业务变更窗口重启系统,使修复后的内核生效。
系统版本 | 修复后内核版本 |
TencentOS Server 2.4(TK4) | 5.4.119-19.0009.67.4.tl2 |
TencentOS Server 3.1(TK4) | 5.4.119-19.0009.67.4.tl3 |
TencentOS Server 3.3(TK4) | 5.4.241-24.0017.44.tl3 |
TencentOS Server 4 | 6.6.117-45.14.1.tl4 |
各系统版本的修复命令如下:
#TencentOS Server 2.4(TK4)yum update kernel -y#TencentOS Server 3.1(TK4)dnf update kernel -y#TencentOS Server 3.3(TK4)dnf update kernel -y#TencentOS Server 4dnf update kernel -y
注意:
完成内核更新后,请在业务变更窗口完成系统重启。
重启后,执行以下命令确认当前运行内核已切换至修复版本:
uname -r
确认输出内核版本不低于对应 TencentOS Server 修复版本后,可视为内核侧修复已生效。
说明:
执行完
uname -r 后,部分版本显示不包含 tl3 等后缀,比对版本的数字编号即可。4. 临时缓解措施
如果暂时无法完成内核升级和重启,可通过收紧 vhost 字符设备权限来降低风险。
说明:
收紧
/dev/vhost-vsock、/dev/vhost-net 权限可能影响依赖 vhost 后端的虚拟机、容器等业务,执行前请先完成业务依赖评估。1. 用 root 用户执行以下命令:
# 收紧 vhost 字符设备权限cat > /etc/udev/rules.d/72-vhost-perms.rules << 'EOF'KERNEL=="vhost-net", GROUP="kvm", MODE="0660"KERNEL=="vhost-vsock", GROUP="kvm", MODE="0660"EOFudevadm control --reload-rules && udevadm trigger --name-match=vhost-net --name-match=vhost-vsock
2. 执行完成后,用 root 用户执行以下命令检查是否应用成功:
ls -l /dev/vhost-vsock /dev/vhost-net
输出中权限位应为 0660,属主为 root、属组为 kvm,则表示生效。