当前位置:首页 > 开源分享

Linux KVM/x86 曝 Januscape 高危漏洞

一、情况概述

近日,研究人员公开披露 CVE-2026-53359(Januscape) 漏洞。该漏洞存在于 Linux 内核 KVM/x86 的 shadow MMU 实现中,属于释放后重用(Use-After-Free)类型安全缺陷。

攻击者在特定条件下可仅通过 guest 虚拟机侧操作触发漏洞,破坏宿主机内核内存结构,进而导致宿主机内核崩溃、来宾逃逸至宿主机、宿主机权限提升,并对同宿主机上的其他租户虚机造成安全威胁。

公开信息显示,该漏洞影响 Intel 与 AMD x86 KVM 环境,主要风险场景为接受不可信租户且启用嵌套虚拟化的云平台或虚拟化宿主机;部分发行版若 /dev/kvm 权限配置过宽,还可能带来本地提权风险。该问题影响范围可追溯至 2010 年引入的相关内核代码,修复补丁已在上游合入。

二、风险详情

1. 漏洞成因

Januscape 漏洞源于 Linux 内核 KVM/x86 的 shadow MMU(内存管理单元)实现中的 Use-After-Free 缺陷。shadow MMU 用于为不支持硬件 MMU 虚拟化的客户机或启用了嵌套虚拟化的场景提供内存地址转换支持。

在特定操作序列下,KVM 在 shadow page table 的回收与重用过程中存在释放后继续引用的逻辑缺陷。攻击者通过在 guest 虚拟机中构造精心设计的内存访问模式,可触发 KVM 错误地访问已释放的 shadow page table 结构,从而破坏宿主机内核的内存状态。

2. 漏洞特征

  • 来自 guest 内部触发:攻击者无需宿主机上的任何权限,仅需在 guest 虚拟机内执行恶意代码即可尝试触发漏洞。

  • 跨架构影响:同时影响 Intel 和 AMD x86 平台的 KVM 实现。

  • 长期潜伏:漏洞从 2010 年引入至今,影响跨度长达 16 年

三、风险危害

1. 虚拟化逃逸

攻击者利用漏洞可从 guest 虚拟机突破虚拟化隔离边界,获取宿主机操作系统内核级别的任意代码执行能力,实现虚拟化逃逸(VM Escape)。

2. 宿主机权限提升

成功逃逸后,攻击者可直接获取宿主机的最高 root 权限,完全控制宿主机及其上的所有虚拟机。

3. 跨租户横向渗透

在多租户云环境中,攻击者逃逸至宿主机后,可进一步攻击同宿主机上的其他租户虚拟机,窃取数据、植入后门或横向移动至云平台内部网络。

4. 拒绝服务

即使未能完全实现逃逸,攻击者也可通过触发内核崩溃(Kernel Panic)造成宿主机宕机,导致其上所有虚拟机服务中断。

四、受影响范围

受影响的条件组合:

  • Linux 内核使用 KVM/x86 虚拟化方案

  • 启用了嵌套虚拟化(nested virtualization) 功能

  • 宿主机接受不可信或不受控的 guest 虚拟机负载

  • /dev/kvm 设备权限配置宽松,允许非特权用户直接访问

受影响的内核版本:

  • 从 2010 年引入相关代码至修复补丁合入前的所有 Linux 内核版本

  • 具体影响范围需参照各发行版的内核版本与 KVM 模块构建配置

受影响的主流平台及产品:

  • Intel x86 平台 KVM 虚拟化环境

  • AMD x86 平台 KVM 虚拟化环境

  • 主流 Linux 发行版(Ubuntu / Debian / RHEL / CentOS / Rocky / Alma / Fedora / SUSE)的 KVM 部署

  • 公有云、私有云及裸金属虚拟化平台

  • 魔方云等基于 KVM 的云管理平台

  • Kubernetes 节点使用 KVM 作为容器运行时虚拟化层

  • 基于 KVM 的常见虚拟化管理软件:Proxmox VE(PVE)oVirtOpenStack(Nova 计算节点)Citrix Hypervisor(XenServer 的 KVM 模式)SmartX(ZBS 虚拟化平台)ZStackEasyStackJDCloud(京东云底层 KVM 基础设施)

不受影响的场景:

  • 未使用 KVM 的虚拟化方案(如 Xen、Hyper-V、VMware ESXi)

  • 未启用嵌套虚拟化的 KVM 环境(风险显著降低)

  • 已合入上游修复补丁的内核版本

五、排查方法

1. 检查是否使用 KVM 虚拟化

lsmod | grep kvm

若输出包含 kvmkvm_intelkvm_amd 模块,说明系统在使用 KVM 虚拟化。

2. 检查嵌套虚拟化是否启用

# Intel 平台
cat /sys/module/kvm_intel/parameters/nested

# AMD 平台
cat /sys/module/kvm_amd/parameters/nested

若返回 1Y,说明嵌套虚拟化已启用。

3. 检查 /dev/kvm 权限

ls -l /dev/kvm

通常应为 crw-rw---- 1 root kvm。若其他用户或组具有读写权限,可能存在本地提权风险。

4. 检查内核版本

uname -r

对照各发行版安全公告确认当前内核是否在受影响范围内。

六、处置与修复建议

1. 升级内核(首选方案)

Linux 内核上游已合入修复补丁。建议受影响用户尽快升级内核至修复版本。

# Ubuntu / Debian
apt update && apt upgrade linux-image-$(uname -r)

# RHEL / CentOS / Rocky / Alma
dnf update kernel

# Fedora
dnf update kernel

# SUSE
zypper update kernel-default

升级后需重启系统使新内核生效:

systemctl reboot

2. 临时缓解措施

若暂时无法升级内核,可采取以下措施降低风险:

方案一:关闭嵌套虚拟化(强烈推荐)

对于不需要嵌套虚拟化功能的场景,可临时关闭以消除主要攻击面。

# Intel 平台
echo "options kvm_intel nested=0" > /etc/modprobe.d/kvm-nested-off.conf

# AMD 平台
echo "options kvm_amd nested=0" > /etc/modprobe.d/kvm-nested-off.conf

修改后需卸载并重新加载 KVM 模块,或重启系统。

rmmod kvm_intel
modprobe kvm_intel

注意:关闭嵌套虚拟化后,该宿主机上的 guest 虚拟机将无法再创建嵌套虚拟机。

方案二:限制 /dev/kvm 访问权限

严格限制 /dev/kvm 设备文件的访问权限,防止非特权用户的本地提权利用。

chmod 660 /dev/kvm
chown root:kvm /dev/kvm

方案三:配置 Seccomp 与 AppArmor/SELinux

  • 为虚拟机进程配置严格的 Seccomp 策略

  • 确保 AppArmor 或 SELinux 处于 enforcing 模式

  • 限制 QEMU/KVM 进程的系统调用范围

方案四:升级至 Linux Kernel 7.1.3(源码编译)

针对无法通过包管理器直接获取修复内核的环境(如部分 CentOS Stream 8 及 ELRepo 不可达场景),可采用源码编译方式升级至 Linux Kernel 7.1.3。经源码比对确认,该版本已包含修复 commit 81ccda30b4e8("KVM: x86: Fix shadow paging use-after-free due to unexpected role"),在 arch/x86/kvm/mmu/mmu.ckvm_mmu_get_child_sp() 函数中增加了 role.word 匹配条件,从根本上消除因 role 不匹配导致的 shadow paging UAF。

编译升级简要步骤如下:

# 1. 下载内核源码
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
tar -xf linux-7.1.3.tar.xz -C /usr/src
cd /usr/src/linux-7.1.3

# 2. 安装编译依赖(CentOS/RHEL)
dnf groupinstall "Development Tools" -y
dnf install -y ncurses-devel elfutils-libelf-devel openssl-devel bc bison flex perl dwarves

# 3. 导入现有配置
cp /boot/config-$(uname -r) .config
make olddefconfig

# 4. 编译并安装
make -j$(nproc)
make modules_install
make install

# 5. 更新 GRUB 启动项
grub2-mkconfig -o /boot/grub2/grub.cfg
grubby --set-default /boot/vmlinuz-7.1.3

# 6. 重启生效
reboot

注意:编译时间取决于 CPU 和存储性能。升级后可通过 uname -r 验证内核版本是否为 7.1.3。如遇问题可通过 GRUB 回滚至旧内核。

3. 容器与云环境阻断

对于运行不可信工作负载的 Kubernetes 集群或云平台,建议:

  • 在安全策略层面禁止嵌套虚拟化相关的 Annotation 或 Feature Gate

  • 通过准入控制器(Admission Controller)限制 Pod 使用 KVM 设备

  • 在节点上部署内核安全模块(KRSI / BPF)对 KVM 相关系统调用进行监控

七、修复优先级建议

建议按照以下优先级开展处置:

优先级处置对象原因
P0接受不可信租户且启用嵌套虚拟化的公有云 / 私有云平台攻击者可完全控制宿主机,影响同节点所有租户
P0多租户 KVM 虚拟化宿主机虚拟化逃逸风险极高,跨租户渗透后果严重
P1使用 KVM 的 Kubernetes 节点容器或虚机负载可能越狱至宿主机
P1开发 / 测试环境 KVM 宿主机虽然非生产环境,仍可能被用作内部横向跳板
P2未启用嵌套虚拟化的 KVM 环境攻击面受限,但仍建议按计划升级

八、总结

Januscape(CVE-2026-53359)是 Linux 内核 KVM/x86 shadow MMU 中的 Use-After-Free 漏洞,影响跨度追溯至 2010 年,同时涉及 Intel 与 AMD x86 平台。攻击者仅通过 guest 虚拟机侧操作即可触发,实现虚拟化逃逸、宿主机权限提升及跨租户渗透,对云平台与虚拟化环境构成严重威胁。

建议受影响用户尽快升级内核至修复版本。若短期内无法升级,应优先关闭嵌套虚拟化功能、限制 /dev/kvm 设备访问权限,并确保 AppArmor / SELinux 处于 enforcing 模式。

九、外部参考


扫描二维码推送至手机访问。

版权声明:本文由1987网络娱乐团队发布,如需转载请注明出处。

本文链接:https://1987a.cn/?id=15

分享给朋友:

“Linux KVM/x86 曝 Januscape 高危漏洞” 的相关文章

开源狮子头扣字软件c#重构

开源狮子头扣字软件c#重构

using System; using System.IO; using System.Runtime.InteropServices; using System.Threading.Tasks; using System.Windows.F…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。
微信咨询
☎️:4008925302
在线时间
9:00 ~ 23:00