跳转到内容

KVM 逃逸漏洞 PwnEscape(CVE-2026-99999):Rootserver 和虚拟化主机运营者现在应该检查什么

更新与新闻  ·   ·   ·  6 分钟 阅读时间

简要概述
  • PwnEscape(CVE-2026-99999)存在于 Linux 内核中,允许从 KVM 客户机逃逸到宿主机。评级:CVSS 3.1 为 9.8,即严重。
  • 内核已有补丁。各发行版跟进的速度不一,Canonical 在消息发布时还没有提供更新。
  • 关键在于正在运行的内核,而不是已安装的内核:不重启(或不打 Live-Patch),漏洞依然存在。

虚拟化中最坚固的一道墙,是客户机与宿主机之间的那堵。PwnEscape 展示了当一个带有错误校验和数据的数据包穿过这堵墙时会发生什么。

目前已知的情况

安全研究员 Paulos Yibelo 于 2026 年 10 月 3 日公开表示,他开发出了一个可从 KVM 虚拟机中逃逸的 0-Day 漏洞利用程序。该漏洞是在 Vercel 的一项“Sandbox”挑战中发现的,该挑战旨在检验 KVM 的隔离边界。现在它已有编号 CVE-2026-99999。其他专家已能独立复现这个问题。

错误出在内核的网络部分:如果一个带有错误校验和元数据的数据包进入 IPv4 协议栈,函数 skb_checksum_help 在计算时可能会损坏网络头。在逃逸过程中,这一缺陷会变成对宿主机内存的访问,最终获得宿主机上的 Root 权限。

客户机中的恶意程序可以在宿主机上获得 Root 权限。而这恰恰是 KVM 要防止的。

我们不知道的是:报告中没有提到在野外发生的攻击,但预计很快就会出现。现在正是你该打补丁的阶段,而不是事后。

影响谁

受影响的是运行 KVM 的宿主机内核。在虚拟机里工作的人,通常并不自己管理宿主机。下表对最常见的角色做了归类:

角色是否受影响?你要做什么
自有 KVM 宿主机(Proxmox、libvirt、QEMU)直接受影响安装内核更新,重启宿主机
自带嵌套虚拟机的 Rootserver你的服务器是这些客户机的宿主机按虚拟化主机对待
没有自有虚拟机的 Rootserver宿主机在服务商那里保持自己的内核为最新,并向服务商询问
没有 KVM 的 Docker 主机所述攻击路径要经过 KVM仍然要安装更新

你的服务器是否使用了嵌套虚拟化,可以在下面的第 1 步中看到。在 Rootserver 上运行 Docker 并不需要 KVM,因此 Rootserver 上的 Docker 方案并不是这种攻击的常见场景。

各发行版的更新进度并不一致。在这条消息的讨论中有人提到,尽管 CVSS 为 9.8,Canonical 起初只把该漏洞评为“中危”,并且仍在检查内核版本。发行版内核要经过各自的构建流水线,因此上游内核里有修复,并不意味着你的软件包已经到位。请以软件包为准来核实,而不是看新闻动态。

分步操作:检查并加固宿主机

  1. 确认 KVM 是否在运行。如果 /dev/kvm 存在且模块已加载,这台机器就是虚拟化主机。
    ls -l /dev/kvm
    lsmod | grep kvm
    virsh list --all   # libvirt
    qm list            # Proxmox
  2. 记下正在运行的内核。稍后你要拿这个版本号与已打补丁的版本作比较。
    uname -r
  3. 检查你的内核软件包是否提到了该漏洞。Debian 和 Ubuntu 会在 changelog 中显示该 CVE,RHEL 系发行版同样如此。如果没有出现,说明更新还没有到。
    apt update
    apt changelog linux-image-amd64 | grep -i CVE-2026-99999
    # RHEL, Alma, Rocky:
    rpm -q --changelog kernel | grep -i CVE-2026-99999
  4. 安装更新。对于集群,先通过 Live-Migration 把客户机迁移到另一个节点,再更新宿主机。
    apt full-upgrade
    # Proxmox: 事先迁移客户机
    qm migrate 101 pve2 --online
  5. 重启并检查。只有重启才会加载已打补丁的内核。之后 uname -r 必须显示比第 2 步更新的版本。
    reboot
    uname -r

如何确认已经生效

  • 版本对比:重启后 uname -r 的输出与第 2 步不同,并且与 changelog 中提到该 CVE 的软件包一致。
  • 没有残留的旧内核:用 dpkg --list | grep linux-image 可以看到安装了哪些内核。引导程序必须启动最新的那个。
  • 客户机重新运行:virsh list 或 qm list 显示所有虚拟机都处于 running 状态。
要规划重启,而不是回避它。Linux 宿主机通常几分钟内就能重新上线。Proxmox 集群应当有足够的余量,以便中途腾空一个节点。如果你从没练习过,那就借这次本来就要做的更新来练一练。在这条消息的评论区里,管理员们描述了两种做法:通过 unattended-upgrades 在固定时间窗口自动重启,或者每周固定一个补丁日,手动并盯着重启。两种都行,重要的是确实有一个固定节奏。

如果补丁还没有到呢?

如果你的发行版还没有提供更新,目前没有经证实、我们能在这里推荐的临时解决办法。不过这段时间仍然可以合理地过渡:

能帮你撑过这段时间的做法
  • 宿主机上只运行可信的客户机,把外部的工作负载放到其他节点上
  • 严格限制对宿主机和客户机的访问,例如使用密钥代替密码,并配合 fail2ban
  • 每天查看软件源,看内核是否已经发布
不够的做法
  • 指望更新客户机:据报告,错误出在宿主机内核
  • 仅仅因为某个发行版这样评级,就把这个漏洞当作“中危”忽略掉
  • 安装了补丁,却不重启宿主机

从以往的案例中可以带走什么

宿主机是个值得攻击的目标,因为它下面的一切都依附于它。我们在管理层面已经见过这种情况:在 Proxmox VE 7 上,攻击者无需密码就以 root 身份登录;而在 Virtualizor 上,损害是通过一个被偷换的更新造成的。PwnEscape 补上了第三个层面,即内核本身。同时盯住这三者——面板、访问权限和内核——的人,在下一次出现类似消息时就不必那么临时应对。

内核更新接连不断,管理员们对此的抱怨不无道理,上面的做法同样适用。本来就有固定补丁日的人,面对这样的消息可以从容应对:一次计划外的重启,而不是恐慌。通过 NetworkManager 的权限提升一事也是类似的过程:检查、更新、验证。

细节的来源有 CVE-2026-99999 的描述、OpenWall 上的帖子,以及 Yibelo 自己的博客文章“PwnEscape: Guest-to-Host KVM Escape”。在转述任何关于确切影响范围的内容之前,请先到那里核对,因为关于这个漏洞的报告仍在不断更新。

你自己运营一台 Rootserver,却不确定是否把它当作虚拟化主机在用?第 1 步中的命令十秒钟就能弄清楚。关于我们服务器的概览,请见我们的 Rootserver。

常见问题

PwnEscape 是什么?这个漏洞有多危险?
PwnEscape(CVE-2026-99999)是 Linux 内核中的一个漏洞,允许从 KVM 客户机逃逸到宿主机。随后在宿主机上即可获得 Root 权限。它按 CVSS 3.1 被评为 9.8,属于严重级别。
作为 Rootserver 客户,我需要做点什么吗?
你的服务器所在的宿主机由服务商负责维护。你要让自己的内核保持最新。如果你在 Rootserver 上自己用 KVM 运行虚拟机,那么对这些客户机来说你就是宿主机,应当像对待虚拟化主机一样对待它。
我怎么知道我的内核是否已经打了补丁?
查看内核软件包的 changelog,看里面是否提到 CVE-2026-99999,例如使用 apt changelog 或 rpm -q --changelog。之后机器必须已经重启,因为 uname -r 显示的是正在运行的内核。
只更新、不重启够吗?
不够。补丁只有在新内核运行之后才会生效。如果不重启也不打 Live-Patch,即使新软件包已经安装,带有漏洞的旧内核仍在运行。
Prepaid-Host.com 本身即为服务器、虚拟主机与域名服务商,在此报道的正是自己所处的市场。我们如何处理这一点,见利益披露说明。