Cloudflare 于周四确认,其 Containers 产品存在一个漏洞,曾允许付费客户读取其他客户的容器在同一台服务器磁盘上遗留的数据。Cloudflare 和发现该漏洞的研究人员表示,这些数据来自早期容器使用过并已释放的磁盘空间,而非任何活跃工作负载,攻击者也无法指定读取谁的数据。目前漏洞已在整个服务范围内修复,客户无需采取任何行动。

Cloudflare Containers 在多账户共享的服务器上以容器方式运行客户的程序,由 Cloudflare 而非客户来决定分配到哪台服务器。构建于 Containers 之上、作为运行不可信代码(包括 AI agent 生成的代码)安全环境销售的 Cloudflare Sandboxes 也受到了影响。
该漏洞由安全公司 Accomplish 的 Oren Yomtov 于 9 月 4 日通过 Cloudflare 漏洞赏金计划上报。
问题出在共享磁盘的初始化方式上。每个容器的磁盘基于 Linux 的精简配置(thin provisioning)特性构建,以 64 KB 为块单位分配存储。容器删除后,其占用的块会回到跨客户账户共享的块池中。
而这个块池被配置为跳过块擦除就直接交给下一个容器使用——擦除本来是默认行为。于是,当新容器只向复用块写入了少量数据时,块的剩余部分仍保留着上一个容器的数据。
为了验证可读性,研究人员向未使用空间写入一个 4 KB 的小块,然后在裸磁盘层面把整个块读回来:没写过的 60 KB 里仍然保存着前一个容器的字节。
在多轮生产环境测试中,研究人员报告 24 次尝试中有 18 次发现了遗留数据(每次都在 Cloudflare 选择的服务器上),四大洲 22 台底层机器中有 20 台存在该问题。
Cloudflare 表示,恢复出的块中包含目录结构、数据库页和结构完整的 SQLite 数据库;研究人员的自有报告则列出了目录列表、SQLite 数据库、Chromium 浏览器配置文件、.env 文件和凭据文件,并确认这些是其他客户的文件。
研究人员报告称,他们的分析脚本只输出计数和格式校验结果,不输出文件内容,提交给 Cloudflare 的材料中不含任何第三方名称、标识符、凭据或恢复出的内容。Cloudflare 也证实,恢复的数据被保密保存,并在提交后被安全删除。研究人员没有演示该漏洞可以篡改其他客户的活跃数据或使工作负载下线。
Cloudflare 分两步修复了该漏洞。第一步是为新分配的块恢复擦除,堵住了已报告的利用方式;研究人员于 9 月 14 日确认其概念验证不再有效。
但这一改动并没有清理已映射进运行中容器磁盘、或进入各服务器镜像层缓存(新容器可能继承并读取)的块。因此 Cloudflare 还退役了所有运行中的容器磁盘并清空了相关缓存,在业务低峰期排空并重启了服务器。清理工作于 9 月 19 日完成,五天后对外披露。
Cloudflare 表示,它还排查了是否有人利用过该方法:用研究人员的概念验证和自研攻击副本构建检测特征,对留存的磁盘活动记录进行回溯,结果只发现了研究人员和自己工程师的授权测试,没有证据表明该方法被其他任何人使用过。
不过这一结论仅覆盖 Cloudflare 留存的记录,官方没有说明记录的时间跨度、也没有说明不安全的设置从何时开始生效,因此从其披露来看,暴露持续的时长并不明确。
研究人员另指出,同样的磁盘配置还影响了 Cloudflare 的 Browser Run 产品,并将其称为自 7 月以来公布的第六次代码沙箱逃逸——此前他们先后在 Anthropic 的 Claude Cowork 与 Claude Code、Cursor 的命令行工具、Docker 以及 OpenAI 的 Codex 中发现过逃逸漏洞。Cloudflare 的公告只提到 Containers 和 Sandboxes 受影响,未提及 Browser Run。
本文翻译自 The Hacker News,原文地址:https://thehackernews.com/2026/09/cloudflare-fixes-flaw-that-let-one.html

评论 0 条