Cloudflare 揭露 Containers 跨租戶漏洞:舊容器的磁碟殘料能被新容器讀到,24 個放置點有 18 個讀出別人的資料,通報當天開始修
趨勢新聞2026 年 9 月 27 日
Cloudflare 9 月 24 日在官方部落格揭露 Containers 平台的一個跨租戶資料外洩漏洞:同一台主機上,前一個容器刪掉後留在磁碟區塊裡的資料,會被後來分到同一塊空間的容器讀出來。漏洞由 Accomplish 的研究員 Oren Yomtov 在 9 月 4 日 15:26(UTC)透過 HackerOne 通報,Cloudflare 同日 23:15 開始全球推修補,9 月 7 日 06:13 完成。Cloudflare 說,在留存的磁碟 I/O 遙測裡沒有找到惡意利用的證據,能歸因到這個手法的活動都來自研究員與自家工程師的授權驗證。
原因在 Linux 裝置對應的薄配置(dm-thin)。Cloudflare 的儲存池開了 skip_block_zeroing,也就是把實體區塊配給新容器時不先清零;池子用 64 KiB 的區塊,新容器只寫 4 KiB 時,只有那 4 KiB 被改掉,其餘 60 KiB 還留著前一個主人的內容。有 Workers Paid 帳號的客戶就能開容器、用原始裝置讀取把它讀出來。研究員在六個生產放置點上測了 5,614 個目錄區塊,辨識出 2,700 個屬於別人的目錄 inode;換到更大的樣本,24 個放置點有 18 個讀到殘料,22 個底層節點有 20 個,橫跨四大洲,讀到的東西包括目錄結構、資料庫分頁,以及結構完整的 SQLite 資料庫。攻擊者不能指定要讀誰,也改不了使用中的資料。建在 Containers 上的 Sandboxes 一樣受影響。
時間線:從通報到清完舊快照 15 天
依部落格自列的時間線:9 月 4 日 15:26 收到通報,18:45 開立資安事件並確認是生產環境的設定造成,21:27 合併執行期修正與重現測試,22:03 合併新舊儲存池的設定變更,23:15 開始滾動部署;9 月 7 日 06:13 部署完成,開始清理舊池資料,並淘汰所有修補前建立的容器磁碟與快取映像快照;9 月 14 日 10:50 研究員回報概念驗證已失效,12:52 Cloudflare 發放獎金;9 月 19 日 15:03 整個機隊修補前的快取快照清除完畢。修法是把 skip_block_zeroing 從 dm-thin 池的設定拿掉,回到配置前先清零的預設行為。Cloudflare 說客戶不需要做任何動作;獎金金額文中沒有寫。