skip_block_zeroing let a 4 KiB write return 60 KiB of another tenant's disk
Cloudflare has fixed a flaw in Containers that let a Workers Paid account read the 60 KiB it had not written inside each 64 KiB disk block it touched. The fleet-wide fix needed no customer configuration changes.
The Engineer · Build desk

What happened
- Oren Yomtov of Accomplish reported the flaw to Cloudflare's bug bounty programme on September 4, 2026, affecting both Cloudflare Containers and Cloudflare Sandboxes, which is built on Containers.
- The affected dm-thin storage pools used a 64 KiB block size with skip_block_zeroing set, so a reallocated block was handed to a new container without being wiped.
- Cloudflare says it fixed the pools across the Containers fleet without any customer-side configuration change, and found no evidence of malicious exploitation in its disk-I/O telemetry.
Why it matters
- What it limits constraint No tenant setting could have closed this gap: hosts are assigned automatically, and the storage pool sits below the virtual machine the customer controls.
- Who's exposed exposure Any Container or Sandbox that had run on an affected pool was readable by whichever Workers Paid account next landed on that host, with neither side able to choose whose leftover blocks appeared.
- What's now possible capability The ext4 directory-checksum trick gives customers a test they can run themselves on any managed sandbox that exposes a raw block device, without needing the provider's cooperation.
- Who has to decide decision Buyers placing untrusted code in a hosted sandbox now have a specific question for the provider: are freed blocks zeroed or discarded before they are reallocated to another account?
Next story · Security · Sep 24
Cloudflare Containers handed new tenants disk blocks still holding other customers' dataConfirmed2 publishers
Reads alone came up empty. For an unmapped region of a thin device, dm-thin returns zeroes and never allocates a physical block [14]. The proof of concept therefore had to write before it could read. It located 64 KiB-aligned regions that the guest's ext4 filesystem treated as free space, and wrote one aligned 4 KiB block into each [19]. That write forced dm-thin to allocate a physical 64 KiB block out of the shared pool, and the 4 KiB replaced only its own portion [15].
A 4 KiB write left 60 KiB of the newly allocated block still holding whatever the previous container had put there, which is 93.75 percent of the block [21]. A raw read of the device afterwards returned bytes the new container had never written [15].
Each container gets its own virtual machine under Firecracker, which presents the writable root disk to the guest as /dev/vdc [9]. Per-container isolation ends at that virtual disk. When the thin volume behind a root disk was deleted, its physical blocks went back to a pool serving workloads that belonged to multiple customer accounts [11]. skip_block_zeroing then does what the name says: dm-thin makes a newly allocated block accessible without zeroing it first [12].
Telling a stranger's bytes from your own is the hard part of proving any of this. Accomplish used ext4 directory block checksums, which under the metadata_csum feature incorporate values associated with the filesystem and inode, to separate blocks from their own test filesystem from blocks originating in other filesystems [16]. Their submission to Cloudflare carried counts, block offsets, sizes, checksum results and truncated hash prefixes, and no third-party filenames, credentials, hostnames or recovered content values; the researchers confirmed they securely deleted the data they had recovered [17].
The exposure could not be aimed. Cloudflare says the technique could not target a particular customer, workload, host or data, and that residual data was not guaranteed to be present [5]. Customers do not pick the host their container runs on; assignment is automatic across eligible servers [4]. Within the historical disk-I/O telemetry available to it, Cloudflare identified no evidence of malicious exploitation, and attributed the activity it did find to the researchers and to its own engineers running authorized validation [7].
The fix went out across the Containers fleet and required no customer-side configuration changes [6]. Cloudflare's post does not say what the change was or why the option had been set. For untrusted code in a managed sandbox, I would put two questions to a provider before trusting the boundary: are freed blocks zeroed or discarded before reallocation, and is the pool behind my container shared with other accounts. Cloudflare's own account answers the second one for the affected configuration, and the answer was yes [11].
What to watch
- Whether other managed container and sandbox vendors publish the block-zeroing and discard settings of the pools behind their tenant disks.
- How far back Cloudflare's disk-I/O telemetry retention reaches, since its no-exploitation finding is limited to the history available to it.
- Whether Accomplish publishes its own write-up with the offsets, counts and checksum results it gave Cloudflare.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence72
- Adoption
- Not scored
- Hype gap+10
- Incentives55
- Confidence68
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
On September 4, 2026, Oren Yomtov, a security researcher from Accomplish, reported a vulnerability affecting Cloudflare Containers and Cloudflare Sandboxes (which is built on Containers) through Cloudflare's bug bounty program.
- [2]
Cloudflare says it has fully remediated the vulnerability and has no evidence that customer data has been compromised.
- [3]
The researchers demonstrated that a customer with a Workers Paid account could recover residual disk blocks previously used by Containers on the same host.
- [4]
Cloudflare Containers run workloads on multi-tenant infrastructure and automatically assign them to eligible servers; customers cannot select the underlying host.
- [5]
Cloudflare says the technique could not target a particular customer, workload, host, or data, and residual data was not guaranteed to be present.
- [6]
Cloudflare applied a fix across the Containers fleet, with no customer-side configuration changes required.
- [7]
Within the historical disk-I/O telemetry available to it, Cloudflare identified no evidence of malicious exploitation; activity it could attribute to the reported technique came from the researchers and Cloudflare engineers conducting authorized validation.
- [8]
Cloudflare Containers use Linux device mapper thin provisioning (dm-thin) to provide each container with a writable root disk.
- [9]
Each container lives inside a dedicated virtual machine powered by the Firecracker virtual machine monitor, and Firecracker presents the disk to the virtual machine as /dev/vdc.
- [10]
Thin provisioning allocates physical storage only when a virtual disk writes to a previously unmapped region, and the affected storage pools used a 64 KiB thin-block size.
- [11]
When the thin volume backing a container's root disk was deleted, its physical blocks were returned to a pool that served workloads belonging to multiple customer accounts.
- [12]
The affected pool configuration included the option skip_block_zeroing; with it configured, dm-thin skips zeroing newly allocated blocks before making them accessible.
- [13]
With block zeroing disabled, a full-block write replaced a reassigned block's previous contents, but a smaller write changed only the written portion, and the remainder could retain data from the block's previous owner.
- [14]
Reading an unmapped region of a new thin disk did not reveal residual data: for an unmapped region of the thin device, dm-thin returned zeroes without allocating a physical block.
- [15]
When such a write reached an unmapped thin block, dm-thin allocated a physical 64 KiB block from the shared pool; the 4 KiB write replaced only that portion, the remaining 60 KiB could retain data from a previous container, and a subsequent raw-device read could observe bytes the new container had never written.
- [16]
The researchers used ext4 directory block checksums to distinguish blocks belonging to their own test filesystem, created for the proof of concept, from blocks originating from other filesystems; when ext4 uses the metadata_csum feature, directory block checksums incorporate values associated with the filesystem and inode.
- [17]
The submission included counts, block offsets, sizes, checksum results, and truncated hash prefixes, and the materials provided to Cloudflare contained no third-party filenames, identifiers, credentials, hostnames, addresses, or recovered content values; the researchers confirmed that they securely deleted the recovered data.
- [18]
Cloudflare's post was prepared in collaboration with Oren Yomtov and the Accomplish security research team, whose detailed report and controlled testing helped Cloudflare validate the issue and respond.
- [19]
The proof of concept identified 64 KiB-aligned regions corresponding to free space in the guest's ext4 filesystem and wrote one aligned 4 KiB block into each region.
- [20]
The proof of concept created a container using a Workers Paid account, opened the writable root disk at /dev/vdc, recorded a baseline read, wrote one 4 KiB block into each selected 64 KiB region corresponding to ext4 free space, read the blocks again, and examined only the portions not overwritten by the new container.
- [21]
The 4 KiB write covered one sixteenth of the allocated 64 KiB block, leaving 93.75 percent of the block available to a read of data the new container never wrote.
Sources
2 independent publishers whose own reporting we read for this story.
- blog.cloudflare.comHow Cloudflare addressed a cross-tenant data exposure vulnerability in Containers | Cloudflare Blog
2 articles · September 24, 2026
- infoq.comCloudflare Fixes Cross-Tenant Data Exposure in Containers
1 article · October 5, 2026
Topics and entities
Topics
- Vulnerability Disclosure
- Multi-Tenant Isolation
- Storage data remanence
Entities
- Cloudflare Sandboxes
- InfoQ
- Oren Yomtov
- Firecracker
- Cloudflare
- ext4
- Cloudflare Containers