Cloudflare 如何修复 Containers 中的跨租户数据泄露漏洞

💡 原文英文,约2000词,阅读约需8分钟。
📝

内容提要

2026年9月,研究员报告Cloudflare Containers存在跨租户数据泄露漏洞:dm-thin存储池禁用块清零,容器删除后残留磁盘数据可能被其他客户读取。Cloudflare已移除该配置、清除旧磁盘与缓存快照,未发现恶意利用,无需客户操作。

🔎

延伸解读

漏洞的技术根源:dm-thin 的 skip_block_zeroing 配置

文章指出,Cloudflare Containers 使用 Linux dm-thin 提供可写根磁盘,受影响存储池启用了 skip_block_zeroing 选项。该选项使 dm-thin 在分配新块时跳过清零,导致之前容器使用的 64 KiB 块被重新分配后,若新容器只写入部分数据,剩余部分可能保留旧数据。攻击者通过向未映射区域写入 4 KiB 块触发分配,再读取整个块即可获取残留数据。这一配置是漏洞的核心,移除后即恢复默认清零行为。

攻击的实际限制:无法定向选择受害者

尽管漏洞可导致跨租户数据泄露,但文章强调攻击者无法选择特定客户、工作负载、主机或数据。残留数据是否出现取决于 Cloudflare 的工作负载放置和 dm-thin 重新分配的块。攻击者也无法访问正在使用的磁盘,且未证明能修改其他客户的活跃数据或影响工作负载可用性。因此,实际风险受限于机会性读取,而非定向攻击。

修复措施:移除配置并清理历史磁盘与快照

Cloudflare 的修复分两步:首先从整个机群的 dm-thin 池配置中移除 skip_block_zeroing,恢复默认清零行为,阻止新分配块泄露残留数据。其次,由于清零不会清理已映射到现有 thin 设备的块,Cloudflare 还退役了所有运行中的容器磁盘,并删除了缓解前创建的缓存 OCI 镜像快照。通过非高峰时段排空主机、重启虚拟机并清除镜像缓存,确保磁盘和缓存层使用清零后的分配重建。

调查结论:无恶意利用证据,客户无需操作

Cloudflare 审查了历史磁盘 I/O 遥测数据,利用概念验证产生的写入与读取特征关系开发检测签名。分析仅发现研究人员和 Cloudflare 工程师的授权验证活动,未发现其他符合该技术的活动。因此,Cloudflare 认为没有证据表明该漏洞被恶意利用,客户数据未受损害。修复已全面完成,客户无需采取任何操作。

❓

Q&A

Cloudflare Containers 跨租户数据泄露漏洞是什么?

该漏洞允许拥有 Workers Paid 账户的客户通过读取容器磁盘的未映射区域,恢复同一主机上其他客户容器残留的磁盘数据,从而可能泄露文件系统元数据、目录结构、数据库页面和应用数据。

这个漏洞是如何被利用的?

攻击者利用 dm-thin 存储池的 skip_block_zeroing 配置,向未映射的 64 KiB 块写入 4 KiB 数据,触发分配一个之前使用过的物理块。由于未清零,该块剩余 60 KiB 可能保留前一个容器的数据,随后通过读取原始设备即可获取残留数据。

Cloudflare 采取了哪些措施来修复这个漏洞?

Cloudflare 首先从 dm-thin 池配置中移除了 skip_block_zeroing,恢复默认的块清零行为。随后,他们退役了所有运行中的容器磁盘,并清除了缓存的镜像快照,在非高峰时段排空主机、重启虚拟机并清理镜像缓存,确保所有磁盘和缓存层使用清零后的分配重新创建。

这个漏洞是否被恶意利用了?

没有。Cloudflare 审查了历史磁盘 I/O 遥测数据,仅发现研究人员和 Cloudflare 工程师进行授权验证的活动,没有证据表明该漏洞被恶意利用。

客户需要采取什么行动来应对这个漏洞?

不需要。Cloudflare 已完成修复,客户无需进行任何配置更改或采取其他行动。

漏洞的发现和修复时间线是怎样的?

2026年9月4日,研究员 Oren Yomtov 通过 HackerOne 报告漏洞;同日 Cloudflare 确认并合并修复,开始部署。9月7日完成部署并开始清理旧池数据。9月14日研究员确认漏洞利用失效,Cloudflare 颁发赏金。9月19日完成所有缓解前缓存快照的清理。

🏷️

标签

➡️

继续阅读