Cloudflare近日披露其Containers平台存在一个跨租户数据泄露漏洞,该平台也为Cloudflare Sandboxes提供支持。Workers付费账户客户可恢复同一主机上其他客户容器遗留的磁盘块。Cloudflare已修复该漏洞,并表示未发现任何恶意利用证据。漏洞并非出在虚拟机边界,而是源于底层存储分配器。Accomplish公司安全研究员Oren Yomtov于9月4日通过Cloudflare漏洞赏金计划报告了该问题。

每个Cloudflare容器运行在Firecracker虚拟机中,具有可写入的根磁盘,并通过Linux设备映射器的精简配置机制进行配置。受影响资源池使用64 KiB精简块大小,且配置了skip_block_zeroing选项,指示dm-thin在对外暴露新分配块前不执行清空操作。向未映射区域写入单个4 KiB块时,dm-thin会从跨客户账户共享的资源池中分配一个64 KiB物理块,写入仅覆盖4 KiB,剩余多达60 KiB可能保留前一容器写入的内容,原始读取磁盘时便可能返回新容器从未写入的字节。

研究人员利用ext4目录块校验和区分自己写入的块。在六个生产环境部署中,所有5614个可测试目录块均来自其他用户,共识别出2700个不同的外部目录索引节点。在横跨四大洲的24个部署点及22个底层节点中,分别有18个和20个发现残留数据。成功恢复的块类型包括目录结构、数据库页以及结构完整的SQLite数据库。

Cloudflare明确说明,攻击者无法选择受害者、工作负载或主机,无法读取正在连接的磁盘,也无法保证残留数据存在。研究人员未演示如何篡改其他客户数据,也未展示对可用性的影响。安全从业者指出,这是存储层租户隔离机制失效而非应用程序Bug,控制平面应明确实施“分配时清零”或“释放时擦除”检查,不能仅依赖网络隔离。该漏洞披露恰逢微软正式发布Azure Container Apps Sandboxes、谷歌发布GKE Pod快照基准测试结果之际。