系统:运行中
← 返回所有攻击
DEFENSE CRITICAL NEW

GhostLock 内核容器逃逸,动摇了智能体沙箱的根本假设

2026 年 7 月 8 日披露的一个存在了 15 年的 Linux futex 释放后使用漏洞,可让无特权本地用户获取 root 并逃逸容器——而这正是大多数智能体代码执行沙箱所依赖的隔离层。

2026-07-14 // 7 min affects: linux-kernel, container-runtimes, agent-code-sandboxes, ci-runners, multi-tenant-agent-platforms

这是什么?

2026 年 7 月 8 日Nebula Security 披露了 GhostLock,这是 Linux 内核实时互斥锁(rtmutex)优先级继承代码中的一个释放后使用漏洞。无特权的本地用户可利用它获取 root——而对于运行 AI 智能体的人来说至关重要的是,它可以从容器内部逃逸到宿主机。该漏洞于 2011 年(Linux 2.6.39)引入,潜伏约十五年,直到一款自动化分析工具将其发现。它现已在主线中修复(提交 3bfdc63936dd,Linux 7.1),各发行版也在同一周开始发布补丁;AlmaLinux 于 7 月 9 日发布了公告

我们并非把它当作一则内核安全趣闻来报道。我们报道它,是因为容器隔离是几乎所有智能体代码执行沙箱的承重假设——那个盒子里,编码智能体运行生成的脚本,工具型智能体评估不可信代码,CI runner 执行由 AI 编写的作业。GhostLock 是一条可靠且无需特权的越狱途径,而可用的利用代码已经公开。

工作原理

该缺陷位于 kernel/locking/rtmutex.c,处于 futex 优先级继承(PI)路径上。清理辅助函数 remove_waiter() 假设它清理的 waiter 始终属于当前运行的任务。然而在 FUTEX_CMP_REQUEUE_PI 重排队路径中,当内核检测到死锁环并以 -EDEADLK 回滚时,有时必须代表另一个正在休眠的线程进行回退。在该回滚过程中,它清除了错误任务的 pi_blocked_on,留下一个指向已释放内核栈内存的悬空指针——即一个栈上的释放后使用。

要触发它,攻击者需将三个 futex 与一组协同线程编排成优先级反转死锁,然后用伪造的 waiter 结构重新占据被释放的栈帧。此后,公开的分析报告将一次受限写入串联为对内核的任意读写、劫持控制流,最终落为 root。Nebula 表示该利用可靠性达 97%,在其测试机上约五秒完成,并称 Google 通过 kernelCTF 计划向该团队授予 92,337 美元。唯一的前提条件是能够以本地进程身份执行普通的线程调用——无需特殊能力,无需异常配置。由于该路径仅依赖于几乎所有发行版内核都启用的 CONFIG_FUTEX_PI,暴露面很广。我们略去具体的利用原语;上述机制完全来自公开披露。

为何重要

对智能体平台而言,“攻击者需要一个本地立足点”并不是听上去那样的保障。代码执行沙箱的全部意义,恰恰是有意地把本地立足点授予不可信代码,并依赖容器边界将其困在其中。一个被提示注入的编码智能体、一个恶意技能,或一份由攻击者提供、在容器内触及代码执行的测试夹具,都已经恰好处于 GhostLock 所需的位置。由此,容器到宿主机的逃逸便把”智能体在沙箱内运行了不该运行的东西”变成了”智能体的沙箱已不复存在”。在共享和多租户基础设施上——托管的智能体运行时、CI、notebook 后端——这意味着从一个租户的作业跨越到宿主机,并可能波及其上的所有其他租户。

两点背景补充可在不夸大的前提下强化这一论点。其一,GhostLock 是 Nebula 称之为 IonStack 的攻击链的内核部分:与一个浏览器沙箱逃逸漏洞配合,仅在 Android 上轻点一个恶意链接便可一路推进到 root——提醒我们,“仅本地”的漏洞一旦嫁接到更早的环节便会变为远程可利用。其二,该漏洞是由一款 AI 驱动的分析工具梳理老旧内核机制时发现的,属于 2026 年一连串类似的 futex/锁优先级提升发现之一。诚实的局限在于:它被评为 7.8 分(高危,而非严重),正是因为需要本地执行;截至目前尚无野外利用;且已有修复内核。真正加快时间线的是利用代码的公开可得。

防御

对智能体运维者而言,教训是:容器边界是一个可能失效的控制项,因此绝不应成为不可信执行与宿主机之间的唯一屏障:

  • 在每一台运行智能体工作负载的宿主机上优先给内核打补丁。 安装发行版当前的内核,而不仅是首个已修复的构建——初始修复引入了一个单独的崩溃缺陷(见 Status),因此早期构建可能不完整。优先处理多租户智能体运行时、CI runner 以及代码/notebook 后端。
  • 不要把容器本身当作安全边界。 在智能体代码执行之下再加一层——基于虚拟化的沙箱(microVM / gVisor 风格),或为每个不可信作业配备专用的一次性虚拟机——使内核逃逸不会立即触及共享宿主机。
  • 尽量收窄被攻陷沙箱可触及的范围。 不要给智能体执行环境任何环境态云凭证、宿主机挂载或横向网络路径;假设沙箱可能被攻破,并据此限制影响半径。
  • 加固构建配置。 RANDOMIZE_KSTACK_OFFSETSTATIC_USERMODE_HELPER 会增加这一具体利用的难度。它们是缓解措施,而非修复,且不能替代打补丁。
  • 监控权限提升,而不仅是提示异常。 智能体宿主机上的运行时检测应关注内核级提权与意外的 root 转换,而不只是面向模型的信号——此处的有害步骤发生在远低于 LLM 的层面。

Status

项目详情
名称GhostLock
参考CVE-2026-43499(NVD)— CVSS 7.8(高危)
类型栈释放后使用,内核 rtmutex / futex 优先级继承(FUTEX_CMP_REQUEUE_PI
影响无特权本地 root 以及容器到宿主机逃逸
引入Linux 2.6.39(2011);潜伏约 15 年
修复主线提交 3bfdc63936dd,Linux 7.1;发行版回移补丁自 2026 年 7 月 7 日当周起
发现Nebula Security,借助 AI 驱动分析工具”VEGA”;已报告至 security@kernel.org
利用公开 PoC;可靠性约 97%,约 5 秒;Google kernelCTF 奖金 92,337 美元
注意建议再打一个后续补丁,以修复初始补丁引入的一个单独崩溃回归(CVE-2026-53166)
野外利用截至披露日(2026 年 7 月 8 日)尚无已知利用

Sources