Cloudflare Containers cross-tenant residual disk data exposure via device-mapper thin-provisioning skip_block_zeroing
Cloudflare Containers cross-tenant residual disk data (TL-2026-2644), also tracked as Cloudflare Containers skip_block_zeroing data exposure, is a high-severity software vulnerability, first published 2026-09-24. It has no confirmed attribution, affects Cloudflare Containers, maps to 10 MITRE ATT&CK techniques (T1005, T1006, T1048), and is covered by 9 detection rules and 12 indicators of compromise.
Key facts for TL-2026-2644
- Threat ID
- TL-2026-2644
- Also known as
- Cloudflare Containers skip_block_zeroing data exposure, Cloudflare Containers cross-tenant disk data flaw, Cloudflare Containers residual disk data recovery
- Severity
- HIGH
- Status
- PATCHED
- Category
- VULNERABILITY
- First published
- 2026-09-24
- Last reviewed
- 2026-09-24
- Attribution confidence
- LOW
- Motivation
- UNKNOWN
- Target sectors
- technology, cloud, software, saas, startups, enterprise-it, it - security
- Target regions
- Global
- Detection rules
- 9
- Indicators of compromise
- 12
Malware and tooling in Cloudflare Containers cross-tenant residual disk data
Malware and tooling: ext4
A cross-tenant data exposure in Cloudflare's Containers platform (and Sandboxes, built on it) let one customer's workload recover residual disk bytes left by another tenant on the same physical host. The flaw lived in the storage layer — Linux device-mapper thin provisioning with skip_block_zeroing — not a conventional container or VM escape. Disclosed via HackerOne on 2026-09-04 by Oren Yomtov of Accomplish; Cloudflare found no evidence of malicious exploitation and remediated the fleet by 2026-09-07. No CVE or CVSS was assigned.
How Cloudflare Containers cross-tenant residual disk data works
On 2026-09-04, security researcher Oren Yomtov of Accomplish responsibly reported a cross-tenant data exposure vulnerability in Cloudflare Containers through Cloudflare's HackerOne bug-bounty program (report #3997565). Cloudflare Containers runs each customer workload inside a dedicated Firecracker microVM whose writable root disk is exposed to the guest as /dev/vdc. That disk is backed by Linux device-mapper thin provisioning (dm-thin), which allocates physical storage from a shared pool in 64 KiB blocks, allocating a block only on first write to an unmapped region. The affected storage pools had the dm-thin pool option skip_block_zeroing configured, which caused the block layer to skip clearing (zeroing) a newly allocated block before exposing it. When a previous container's disk was deleted, its physical blocks were returned to the shared pool without being sanitized, and a later tenant on the same host could be handed a block still holding the prior owner's bytes. This crossed the tenant-isolation boundary at the storage layer rather than via a conventional container or VM escape.
The exploit technique is precise and storage-specific. The attacker, holding a legitimate Workers Paid account, created a container and opened /dev/vdc as a raw block device. The proof of concept read a baseline of the disk, then identified 64 KiB-aligned regions corresponding to free space in the guest's ext4 filesystem and wrote a single aligned 4 KiB block into each region. That write forced dm-thin to allocate a physical 64 KiB block from the shared pool (the pool serves workloads from multiple customer accounts). Because zeroing was disabled, the 4 KiB write overwrote only that portion, leaving the remaining ~60 KiB of the block intact — potentially residual data from a previous tenant's container. A subsequent raw-device read of /dev/vdc then exposed those bytes. Notably, reading an unmapped region before writing returned zeroes (dm-thin returns zeroes without allocating), so the trigger write was the required step to force allocation. An automated scanning workflow (the researchers' scripts) drove the write/read cycle across the disk.
The researchers validated the finding across six production placements using ext4 metadata_csum directory-block checksums to attribute blocks to filesystems and inodes. Of 5,614 testable directory blocks examined, none belonged to the researchers' own proof-of-concept filesystem (a control of 162 deliberately created/deleted blocks was all correctly attributed), and 2,700 distinct foreign directory inodes were identified. Residual material appeared on 18 of 24 placements and 20 of 22 underlying nodes across four continents. Recovered block types included directory structures, database pages, and structurally complete SQLite databases. The researchers submitted only aggregate counts and format checks — no third-party filenames, identifiers, credentials, hostnames, addresses, or content values — and confirmed the recovered data was securely deleted after submission.
Exploitation was opportunistic rather than targeted: the attacker could not choose a victim, workload, host, or specific information, and residual data was not guaranteed to be present. There was no access to actively attached disks, no ability to modify another customer's live data, and no impact on workload availability. Cloudflare reviewed retained historical disk-I/O telemetry and found no evidence of malicious exploitation or customer-data compromise — only activity attributable to the Accomplish researchers and Cloudflare's own authorized validation.
Cloudflare remediated the fleet by removing skip_block_zeroing from the affected dm-thin pool configuration across the fleet, restoring dm-thin's default behavior of clearing newly allocated blocks. Because zeroing new allocations did not sanitize already-mapped blocks (and new containers could inherit mappings from cached OCI image layer snapshots without re-allocating), Cloudflare also retired running container disks, drained hosts during off-peak hours, restarted VMs, and cleared image caches so disks and cached layers were recreated with zeroed allocations. Runtime fix was merged the same day (2026-09-04), the fleet-wide rollout completed 2026-09-07, old pool data clearing began, the researchers confirmed the PoC no longer worked on 2026-09-14, and all pre-mitigation cached snapshots were cleaned up by 2026-09-19. Cloudflare also built detection signatures around the attack's characteristic I/O pattern — a small 4 KiB write triggering allocation of a reused 64 KiB block, followed by reads recovering substantially more data than was written — and applied them to historical disk-I/O telemetry.
No CVE identifier or CVSS score was assigned. Oren Yomtov reported a $200,000 bounty (per his public LinkedIn post, awarded as cloud-service credits). Affected products are Cloudflare Containers (primary) and Cloudflare Sandboxes (built on Containers). No customer-side configuration change was required for remediation; Cloudflare notes organizations may consider precautionary rotation of secrets or customer data per their own risk policies.
MITRE ATT&CK techniques used in TL-2026-2644
Collection
Defense Evasion
Exfiltration
T1048 Exfiltration Over Alternative Protocol
Execution
T1059.006 Python; T1610 Deploy Container
Initial Access
Discovery
T1082 System Information Discovery; T1613 Container and Resource Discovery
Resource Development
Affected products and versions in Cloudflare Containers cross-tenant residual disk data
- Cloudflare — Containers
Vulnerable versions: All (storage-layer dm-thin skip_block_zeroing configuration)
Fixed in: Fleet-wide remediation completed 2026-09-07 - Cloudflare — Sandboxes
Vulnerable versions: All (built on Containers)
Fixed in: Fleet-wide remediation completed 2026-09-07 - Cloudflare — Workers
Vulnerable versions: Workers Paid accounts (attack entry point used to provision containers)
Fixed in: No customer-side change required
Remediation for Cloudflare Containers cross-tenant residual disk data
Patches
- Cloudflare fleet-wide dm-thin pool configuration update removing skip_block_zeroing (runtime fix merged 2026-09-04; rollout completed 2026-09-07)
- All pre-mitigation cached image snapshots cleaned up by 2026-09-19
Immediate actions
- Remove skip_block_zeroing from affected device-mapper thin-provisioning pools to restore default block clearing
- Retire and recreate all running container disks so blocks are reallocated with zeroed content
- Clear host-cached OCI image layer snapshots created before the mitigation to avoid inheriting mapped blocks
- Drain hosts during off-peak hours and restart VMs to force zeroed block reassignment
Workarounds
- Organizations may consider precautionary rotation of secrets or customer data handled on the affected platform per their own risk policy
- Hunt for raw block-device reads and the 4 KiB-write / 64 KiB-read I/O pattern in workload telemetry
Longer-term hardening
- Retain and monitor disk-I/O telemetry for the characteristic pattern of a small write followed by a larger read from a newly allocated block
- Deploy detection signatures for raw block-device access (e.g. reads of /dev/vdc) and direct-volume reads
- Periodically audit thin-provisioning pool zeroing configuration and block-reuse behavior
- Monitor for anomalous raw block-device access or residual-data recovery attempts at the host/storage layer
Weaknesses (CWE) in Cloudflare Containers cross-tenant residual disk data
CWE-212, CWE-226, CWE-922, CWE-653
Timeline of Cloudflare Containers cross-tenant residual disk data
- Fleet-wide remediation rollout began at 23:15 UTC (removal of skip_block_zeroing, disk retirement, cache clearing).
- Runtime fix merged at 21:27 UTC (with reuse test); changes for new and live pools merged at 22:03 UTC.
- Cloudflare opened a security incident at 18:45 UTC and confirmed the production setup was affected.
- Oren Yomtov (Accomplish) reported the cross-tenant data exposure to Cloudflare via HackerOne (report #3997565) at 15:26 UTC.
- Fleet-wide rollout completed at 06:13 UTC; Cloudflare began clearing old pool data.
- Cloudflare awarded the bug bounty at 12:52 UTC; Oren Yomtov publicly reported a $200,000 bounty (as cloud-service credits).
- Researchers independently confirmed at 10:50 UTC that the proof of concept no longer worked after the mitigation.
- All pre-mitigation cached image snapshots cleaned up at 15:03 UTC.
- Cloudflare published the official technical advisory 'How Cloudflare addressed a cross-tenant data exposure vulnerability in Containers'; secondary coverage (Cyber Kendra, ChuckysCarnage) followed.
- Cybersecurity News published coverage of the Cloudflare Containers cross-tenant data exposure.
Sources cited for Cloudflare Containers cross-tenant residual disk data
- How Cloudflare addressed a cross-tenant data exposure vulnerability in Containers
- Cloudflare Containers Vulnerability (Cybersecurity News)
- Cloudflare Containers Flaw Exposed Cross-Tenant Disk Data (Cyber Kendra)
- How Cloudflare addressed a cross-tenant data exposure vulnerability in Containers (ChuckysCarnage repost)
- Oren Yomtov LinkedIn post (bounty disclosure)
- Cloudflare Sandbox security model documentation
More in vulnerability
- Critical ServiceNow AI Platform Vulnerabilities: Unauthenticated SQL Injection and Authorization Bypasses (CVE-2026-13016, CVE-2026-86857-86860)
- Cross-tenant data exposure in Cloudflare Containers/Sandboxes/Browser Run via Linux dm-thin skip_block_zeroing residual block reuse
- SalesBleed: Salesforce Agentforce vulnerabilities enable zero-click CRM data theft and trusted-agent Slack phishing
- CISA KEV Additions (2026-09-24): WSO2 JWT Authentication Bypass (CVE-2026-5430, CVSS 10.0) and Adobe Commerce/Magento Incorrect Authorization (CVE-2026-71362, CVSS 9.1) Actively Exploited
- cPanel/WHM CalDAV/CardDAV and WP Toolkit Flaws Enable Cross-Account Access and Root Privilege Escalation (CVE-2026-68490, CVE-2026-87899, CVE-2026-87900)
Detection coverage for TL-2026-2644
As of 2026-09-24, Threadlinqs Intelligence publishes 9 detection rule(s) for TL-2026-2644 across Splunk SPL, Microsoft KQL and Sigma, covering 12 indicator(s) of compromise. The whole corpus is readable without an account; a free account unlocks full detection query text in Splunk SPL, Microsoft KQL and Sigma; paid tiers add raw indicator values, correlation and the MCP server. Threadlinqs MCP server · View plans.