一个16年漏洞,让云服务隔离墙形同虚设

一个16年漏洞,让云服务隔离墙形同虚设

安全漏洞KVM虚拟化

数据源:HN + GitHub + web research · HN

2026年7月6日,韩国安全研究员Hyunwoo Kim在代码托管平台GitHub上公开了一个Linux漏洞的全部技术细节。这个漏洞的编号是CVE-2026-53359,代号Januscape。它从2010年8月1日被引入Linux内核,到2026年6月16日才被修复——整整潜伏了16年。

为什么一个漏洞值得笔者写一整篇文章?因为它的后果,触及了现代社会一项最隐蔽、也最关键的基础设施假设:云计算的隔离是安全的。

Linux Tux被困在虚拟机牢笼中——Januscape项目封面图

Januscape项目封面:Linux吉祥物Tux被困在虚拟机中。来源:GitHub/V4bel/Januscape


你用”云”的时候,到底在用别人的什么东西?

要理解这个漏洞为什么可怕,得先理解”云”到底是什么。

“存到云端”、“跑在云服务器上”——我们在手机上点几个按钮,照片就上传了,企业网站就运转了,AI聊天就响应了。听起来轻飘飘的。但”云”的本质,是把数据放在别人的电脑上

一台物理服务器,造价几万到几十万人民币,放着也是放着,不如切成很多”小块”——也就是虚拟机——分别租给不同的人。你用一台,隔壁公司用一台,再过几个街区、另一个国家的人也用一台。你们共用同一个CPU、同一根内存条、同一个物理硬盘。

打个比方:这就像一栋公寓楼。楼本身是一台物理服务器(行话叫”宿主机”),每间公寓是一个虚拟机。房东(云服务商)给每间公寓装了独立的门锁,承诺你从自己的房间出不去、也看不到隔壁在干什么。

这个承诺是整个云产业的基石。AWS一年收入超过900亿美元,Google Cloud近400亿美元,靠的就是这句潜台词:你租我们一间房,我们保证你和其他房客之间有一堵结实到不可逾越的墙。

Januscape把这堵墙砸了一个洞。


什么是虚拟机逃逸?为什么16年没人发现?

虚拟机逃逸(VM Escape),简单说就是:一个住在一间公寓里的”房客”,找到了方法,走出自己的公寓,拿到了整栋楼的钥匙。

在技术术语里,这意味着在某个云服务商租了一台虚拟机的攻击者,可以通过这个漏洞突破虚拟机的边界,在宿主机上执行自己的代码。一旦拿到宿主机的控制权,他就能看到同一栋”楼”里所有其他租户的数据、程序、甚至截获他们的登录密码。

Januscape之所以16年没被发现,因为它触发条件非常「偏门」。

这个漏洞藏在Linux内核的一个叫KVM的模块里。KVM(Kernel-based Virtual Machine)是2007年被合并进Linux内核的虚拟化技术,它让Linux本身变成一台超级房东——能同时管理几十上百间”公寓”。在云计算爆发后,KVM成了公有云最广泛使用的底层技术。AWS的EC2、Google Cloud的Compute Engine,底层都大量依赖KVM。

漏洞出在KVM的”影子内存管理”代码里。通俗地说,KVM需要帮每个虚拟机翻译它在物理硬件上的地址。当一台虚拟机里再套一层虚拟机时(这叫”嵌套虚拟化”——就像在公寓里再搭一个帐篷),KVM的翻译工作就变得复杂了。Januscape的漏洞就藏在这段复杂翻译逻辑里:两种不同性质的翻译请求被错误地合并在一起处理,导致宿主机内存数据被破坏。

用公寓楼的比喻来说:房东有一个房间登记本。正常情况下,“出租记录”和”自用记录”是分开管理的。但在嵌套虚拟化这个特殊场景下,房东的程序出现了一个bug——它只检查房间号是否匹配,不检查”这是出租还是自用”。于是在某些极端情况下,房东把一间正在出租的房间,同时当成自用房间来操作。账本乱掉之后,病毒式蔓延——最终整栋楼的管理系统崩溃,或者更糟:被恶意房客接管。

Januscape漏洞利用演示:宿主机内核崩溃

Januscape漏洞利用演示截图:在虚拟机内运行PoC后,宿主机内核触发崩溃。来源:GitHub/V4bel/Januscape


反派的真面目:共享基础设施的”原罪”

笔者写到这里想暂停一下,聊聊这件事背后更根本的矛盾。

云计算产业建立在一个”省”字上。资源复用、按需分配、多人共享——这些听起来是聪明的商业创新。但共享与隔离,在底层是互斥的。

物理上,你和隔壁租户确实共用同一块CPU;逻辑上,云服务商用软件强行在你们之间画一条线。这条线一旦有漏洞——哪怕只是一个16年前写错的判断条件——整个隔离就崩塌了。

这就是Januscape这类漏洞的深层意义:它暴露出云计算”共享基础设施”这个模式自带的结构性风险。你不是在用自己独占的服务器,你只是在使用一台超级计算机里一个被软件”圈出来”的角落。圈这个角落的代码是谁写的?2007年、2010年的内核程序员。他们当时可能只想着”让虚拟化跑通”,并没有预见到15年后这段代码会成为云上几亿用户的安全边界。

而这个16年前的疏忽,直到2026年才被一个韩国研究员发现——且据公开信息,它是已知第一个同时适用于Intel和AMD两大芯片架构的KVM虚拟机逃逸漏洞。


PoC已经公开,完整利用工具还在后面

目前公开的代码是一个”概念验证”(PoC)。把它加载到一台支持嵌套虚拟化的Linux虚拟机里运行,几秒钟到几分钟之内,宿主机的内核就会崩溃重启——这还只是”破坏性”的版本,相当于把整栋楼的电闸拉了。

但研究者明确表示:一个能在宿主机上执行任意代码的”完整逃逸”版本也已经存在,只是暂不公开。按照漏洞披露惯例,这通常意味着要等足够多的云服务商完成补丁升级之后才会放出。

受影响的范围不小。根据披露信息,任何运行x86架构KVM、支持嵌套虚拟化功能的多租户宿主机都面临风险——这基本覆盖了AWS、Google Cloud等主流公有云的大部分实例类型。好消息是,修复补丁已经在2026年6月19日合入Linux主线内核,各大发行版也在随后几周内推送了更新。


修复之后,还有什么值得讨论?

修复本身很简单。就是在那段「判断房间类型的代码」里多检查一项:这个房间是「出租」还是「自用」。补丁只有短短几行。

但笔者觉得,这个故事真正的价值不在补丁本身。

第一,它提醒我们,**关键基础设施的安全边界,可能建立在16年前一个程序员的思维疏忽之上。**今天的代码审计工具、自动化测试、形式化验证,在当时都不存在。那段代码就这么安静地躺在几百万行Linux内核里,等着某个攻防研究的天才把它挖出来。

第二,它暴露了嵌套虚拟化这个”套娃”功能本身的安全成本。嵌套虚拟化在公有云里是一项付费增值功能——租户可以在自己的虚拟机里再跑虚拟机。这个能力确实方便,但它触发了一条更古老、更复杂的代码执行路径(就是那个有bug的”影子内存管理”)。功能越丰富,暴露的攻击面就越大。

第三,也是最根本的:只要云计算的本质还是”多人共用一台物理机”,就永远存在逃逸漏洞的潜在风险。补了一个Januscape,下一个可能在另一个模块、另一个函数里沉睡着。这不是危言耸听——在Januscape之前,ARM架构的KVM也有一个类似漏洞叫ITScape(CVE-2026-46316),同样在2026年被同一位研究者发现。


普通人需要担心吗?

笔者的判断是:不需要恐慌,但值得关注。

如果你是云服务的普通用户——比如用iCloud存照片、用某个SaaS软件办公——你离这个漏洞的距离还很远。云服务商的运维团队通常会在漏洞公开之前就已经部署了补丁。Januscape的补丁早在6月19日就进入了Linux主线,而公开披露是7月6日——这中间有超过两周的时间窗口供云厂商升级。

但如果你是企业的技术负责人,或者自己运维着服务器,现在应该检查一下:你的宿主机内核是否已经包含了补丁81ccda30b4e8?你是否真的需要在云主机上开启嵌套虚拟化功能?如果不需要,关掉它,可以大幅缩小攻击面。

从更宏观的视角看,Januscape是云计算历史上的一个标志性事件。它是第一个同时威胁Intel和AMD两个平台的KVM逃逸漏洞,发现者用这个漏洞在Google的kvmCTF赏金计划中成功实现了0-day攻击,实战证明了云隔离的脆弱性。

笔者无意制造恐慌——事实上,在漏洞公开后的24小时内,AWS和Google Cloud就已经确认受影响的实例已完成或正在完成补丁部署。真正有意思的是:16年,它就这么存在着。下一个16年漏洞现在还在哪里沉睡着?


参考链接

  1. Januscape 漏洞完整技术文档 (GitHub)
  2. oss-security 邮件列表披露公告
  3. The Hacker News 报道
  4. Hacker News 讨论
  5. Lobsters 讨论
  6. Linux 内核修复补丁 (commit 81ccda30b4e8)
  7. 漏洞引入commit (2010年8月1日)
  8. Google kvmCTF 漏洞赏金计划
  9. VEXXHOST: OpenStack KVM 安全响应

封面图:Linux吉祥物Tux被困在虚拟机中——来自Januscape项目仓库。