云厂商的“虚拟机隔离”承诺并不天然覆盖存储层。据 InfoQ 报道,Cloudflare 近期披露并修复了其 Containers 平台(同时支撑 Sandboxes 产品)的一个跨租户数据泄露漏洞:Workers 付费账户的客户,有机会读取到同一主机上其他客户容器遗留的磁盘块。
技术根因值得细读:每个 Cloudflare 容器都运行在 Firecracker 微虚拟机内,根磁盘由 Linux 设备映射器的精简配置机制分配,受影响资源池使用 64 KiB 精简块并启用了 skip_block_zeroing 选项,即新分配的块不做清零。当容器写入一个 4 KiB 块时,底层会分配一个 64 KiB 物理块,剩余最多 60 KiB 可能保留上一个容器写入的数据,对磁盘做原始读取即可读出。安全研究员在测试中识别出数千个来自其他用户的目录块,甚至恢复了结构完整的 SQLite 数据库。
Cloudflare 的响应相当迅速:9 月 4 日收到报告当天即合并修复代码,随后移除问题选项、停用存量容器磁盘、清空主机数据与镜像缓存,9 月 19 日完成全部清理;对历史遥测数据的回溯分析未发现恶意利用迹象。正如业界评论指出,Firecracker 虚拟机边界本身经受住了考验,泄露发生在边界之下的块分配层。
这起案例给企业云原生团队的启示很具体:评估多租户平台时不能只问“是否虚拟机隔离”,还要确认临时磁盘在分配时是否清零;自建容器平台的团队,更应把“分配时清零或释放时擦除”写入隔离基线,并形成可重复的验证测试。
来源:InfoQ