跳到主要内容

CVE-2026-53359 (Januscape) 漏洞缓解指南

漏洞概述

CVE-2026-53359(又名 Januscape)是一个严重的 Linux KVM 虚拟化漏洞,存在于内核中长达 16 年(自 2010 年 Linux 2.6.36 版本以来)。

漏洞影响

  • 影响范围: Linux 内核 2.6.36 至修补前的所有版本
  • 影响组件: KVM/x86 影子页表内存管理代码
  • 漏洞类型: Use-after-free(释放后使用)
  • 严重程度: 高危 (CVSS 7.0)
  • 威胁场景: 多租户云环境、共享主机环境

攻击方式

  1. 虚拟机逃逸: 恶意虚拟机突破隔离,逃逸到宿主机并获取 root 权限
  2. 本地提权: 本地非特权用户通过 /dev/kvm 触发漏洞导致主机崩溃或提权

利用条件

  • 攻击者需要在客户机(Guest VM)内拥有 root 权限
  • 宿主机必须启用嵌套虚拟化(nested virtualization)
  • /dev/kvm 设备对普通用户可访问(EL8+ 默认配置)

已修补的内核版本

根据官方公告,以下内核版本已修补此漏洞:

内核系列已修补版本
7.x7.1.3+
6.18.x6.18.38+
6.12.x6.12.95+
6.6.x6.6.144+
6.1.x6.1.177+
5.15.x5.15.211+
5.10.x5.10.260+

使用说明

下载脚本

wget -O auto-fix.sh https://download.xiaozhuhouses.asia/download/v1/links/-sr4GQealv79N5avMCEKU2Lp2_YDoDEbrFpTDU2JqXM

自动检查并修复

运行以下命令自动检测并修复漏洞:

bash auto-fix.sh

脚本会自动完成:

  • ✅ 检测内核版本是否存在漏洞
  • ✅ 检查 KVM 模块加载状态
  • ✅ 检测嵌套虚拟化是否启用
  • ✅ 评估风险级别(无风险/低/中/高)
  • ✅ 检查 /dev/kvm 设备权限
  • ✅ 检测运行中的虚拟机
  • 如果发现高风险,提示并执行修复
  • ✅ 创建持久化配置
  • ✅ 尝试重新加载 KVM 模块(如无虚拟机运行)
  • ✅ 验证修复结果
  • ✅ 提供后续建议(包括内核升级指引)

恢复嵌套虚拟化(内核升级后)

如果已经升级到已修补的内核版本,可以使用恢复脚本重新启用嵌套虚拟化:

wget -O restore.sh https://download.xiaozhuhouses.asia/download/v1/links/R-_cGe-7AFbddcH9ZniijcasiL-ISCj98eWkCOTnJj4
bash restore.sh

恢复脚本功能:

  • ✅ 检查内核是否已修补(安全检查)
  • ✅ 删除缓解配置文件
  • ✅ 创建启用嵌套虚拟化的配置
  • ✅ 更新 initramfs
  • ✅ 可选择立即重新加载 KVM 模块或重启后生效
  • ✅ 验证恢复结果

恢复选项:

  1. 完全恢复 — 删除配置 + 立即启用嵌套虚拟化
  2. 仅删除配置 — 需要重启后生效
  3. 创建启用配置 — 重启后生效
  4. 仅重新加载 KVM 模块
注意

如果内核未修补,恢复脚本会警告安全风险,需要用户确认后才能继续。

缓解原理

临时缓解(禁用嵌套虚拟化)

通过禁用嵌套虚拟化功能来阻止漏洞利用:

# Intel CPU
echo 0 > /sys/module/kvm_intel/parameters/nested

# AMD CPU
echo 0 > /sys/module/kvm_amd/parameters/nested

持久化配置

/etc/modprobe.d/kvm-nested-disable.conf 中添加:

options kvm_intel nested=0
options kvm_amd nested=0

漏洞技术描述

此漏洞是 KVM 影子页表(shadow MMU)中的 use-after-free 缺陷:

  1. 当 PDE (Page Directory Entry) 映射被外部修改后,KVM 未能正确验证影子页的"角色"(role)
  2. kvm_mmu_get_child_sp() 函数重用了角色不匹配的影子页
  3. 当内存槽(memslot)被删除时,rmap 条目未能正确清理
  4. 后续的脏页日志、MMU 通知等操作会访问已释放的影子页,导致 use-after-free

重要提示

注意事项
  1. 嵌套虚拟化影响: 禁用嵌套虚拟化会导致以下场景无法使用:

    • 在虚拟机内运行虚拟机(VM in VM)
    • 容器化虚拟化解决方案
    • 某些开发和测试环境
  2. 虚拟机中断: 选择"完全缓解"会立即中断所有运行的虚拟机,请提前做好准备

  3. 临时措施: 这只是临时缓解措施,强烈建议尽快升级内核到已修补版本

  4. 验证: 执行缓解措施后,再次运行检查脚本验证效果

永久解决方案

升级内核(推荐)

这是唯一的永久解决方案,请根据您的 Linux 发行版执行升级:

RHEL / CentOS / AlmaLinux / Rocky Linux

# 检查可用更新
sudo yum check-update kernel

# 更新内核
sudo yum update kernel

# 重启系统
sudo reboot

Debian / Ubuntu

# 更新包列表
sudo apt update

# 升级内核
sudo apt upgrade linux-image-*

# 重启系统
sudo reboot

Arch Linux

# 更新系统
sudo pacman -Syu

# 重启系统
sudo reboot

验证内核版本

uname -r

升级后清理

内核升级并验证后,可以移除临时缓解配置:

# 删除配置文件
sudo rm -f /etc/modprobe.d/kvm-nested-disable.conf

# 更新 initramfs
# Debian/Ubuntu:
sudo update-initramfs -u -k all

# RHEL/CentOS:
sudo dracut -f

# Arch Linux:
sudo mkinitcpio -P

# 重启系统
sudo reboot

风险级别判定

条件风险级别
KVM 未加载无风险 ✅
内核已修补 + 嵌套虚拟化禁用低风险 ✅
内核已修补 + 嵌套虚拟化启用中风险 ⚠️
内核未修补 + 嵌套虚拟化禁用中风险 ⚠️
内核未修补 + 嵌套虚拟化启用高风险 🔴

常见问题

Q1: 我的系统需要嵌套虚拟化功能怎么办?

A: 如果您必须使用嵌套虚拟化,唯一安全的做法是立即升级内核到已修补版本。临时缓解措施会禁用嵌套虚拟化,因此不适合您的场景。

Q2: 禁用嵌套虚拟化会影响普通虚拟机吗?

A: 不会。禁用嵌套虚拟化只影响"虚拟机中的虚拟机"场景,普通的虚拟机(直接在物理主机上运行)不受影响。

Q3: 如何确认缓解措施是否生效?

A: 运行检查脚本,查看"嵌套虚拟化检查"部分,应显示为"已禁用"状态。

Q4: 我的云服务器是否受影响?

A: 如果您使用的是云虚拟机(作为租户),您的云服务提供商需要在物理主机层面修补此漏洞。如果您是云服务提供商或运行自己的 KVM 主机,则需要立即采取行动。

Q5: 我没有运行任何虚拟机,还需要缓解吗?

A: 如果 KVM 模块已加载,即使没有运行虚拟机,本地用户仍可能通过 /dev/kvm 触发漏洞。建议:

  • 运行缓解脚本禁用嵌套虚拟化
  • 或者完全卸载 KVM 模块(如果不需要)

Q6: 升级内核后需要额外配置吗?

A: 不需要。升级到已修补的内核版本后,漏洞会被自动修复。您可以选择保留或移除嵌套虚拟化禁用配置。

相关链接

支持

如果在使用脚本过程中遇到问题,请:

  1. 确保使用 root 权限运行脚本
  2. 检查系统日志:dmesg | tail -50
  3. 提交 Issue 到项目仓库
  4. 提供以下信息:
    • 系统发行版和版本
    • 内核版本 (uname -r)
    • 脚本输出日志
    • 错误信息

最后更新: 2026-07-08 维护者: QVMConsole 开发团队