研究人员实现 OpenAI Codex 沙箱逃逸并在宿主机执行命令
研究人员实现 OpenAI Codex 沙箱逃逸并在宿主机执行命令 BleepingComputer
BleepingComputer
Publisher
Sep 21, 2026 at 9:29 AM UTC · 4 分钟阅读

Key Signal
26.818.21641 Fixed Desktop build
Last Updated
2 个月前
安全研究人员发现了两种逃离 OpenAI Codex 沙箱的方法,其中一种能够在无需批准提示且屏幕不显示任何内容的情况下,从 Codex 最严格的锁定模式在开发者的机器上运行命令。
根据 Accomplish AI 的 Oren Yomtov 的说法,这两个漏洞均已于 8 月 12 日报告给 OpenAI,并在八天内得到修复。
在这两个漏洞中,研究人员称为 Heapjack 的漏洞更为严重,它能将常规操作转变为远程代码执行:在 Codex 中打开他人的 repository,向其提问有关代码的问题,该 repository 的作者就能在你的计算机上获得脱离沙箱的命令执行权限。
Codex 是 OpenAI 的编程智能体,以命令行工具和桌面应用的形式提供。与其他竞争对手的智能体一样,它在沙箱内运行模型的动作,使不受信任的代码无法触及更广泛的系统。而这两次逃逸都是通过从内部瓦解这一边界实现的。
Heapjack
正如 Yomtov 在报告中所述,Heapjack 技术针对的是一个名为 node_repl 的组件,Codex Desktop 在安装时会将其写入全局的 '~/.codex/config.toml' 文件中。
该功能没有加入选项,也没有关闭设置,且由于该条目存在于共享配置中,普通的 Codex CLI 用户在从未被询问的情况下也会继承相同的工具。
node_repl 运行一个单一的 Node.js 进程,其中包含两个独立的 JavaScript 执行上下文。一个是受信任的,包含 OpenAI 自己的代码;另一个是不受信任的,运行智能体的代码。受信任的上下文通过提供每次运行全新生成的随机 token 来证明其身份。
问题在于,两个上下文都存在于同一个 Node 进程中并共享同一个内存堆(heap),因此该 token 只是一个存在于内存中的字符串,不受信任的一方可以读取它。

不受信任的代码通过 'v8.getHeapSnapshot()' 获取堆快照,并尝试每一个形状像 UUID 的字符串。错误的尝试会返回“未授权”,而带有错误参数的正确 token 则会返回真实的验证错误,这向攻击者表明 token 是正确的。
获取 token 后,不受信任的代码会将其自身的请求写入受信任上下文用于与原生的、非沙箱化父进程通信的同一个 pipe 中。
父进程检查 token,识别到它是有效的,便执行任务。该概念验证(PoC)使用了系统的 'open' 命令,在 Codex 的进程树之外完全启动了一个应用程序。同样的访问权限还可以触及任何 Unix socket(Docker 守护进程 socket 是显而易见的目标),以及用于编辑全局配置文件的工具。
所有这些操作都运行在只读模式下,这是最严格的沙箱模式,智能体本不该写入任何内容。
Overpatch
第二个漏洞 Overpatch 存在于开源的 Codex CLI 中。在工作区写入模式下,智能体只能在项目文件夹内写入,指向主目录的 shell 命令会被拒绝。
Article Intelligence
Sponsored
AdNewsLayer Premium
Unlock deeper intelligence.
Ad-free reading, exclusive research, and real-time onchain insights.
Go Premium
