CVE-2026-43361
Medium · 5.5CVSS
5.5
EPSS
0.2%
Published
May 8, 2026
CISA due date
—
Cloudanix analysis
A local user may be able to make a Linux system’s Btrfs storage stop accepting writes, causing applications or users that depend on it to fail.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Medium
What it actually does
This is a local denial-of-service vulnerability in the Linux kernel Btrfs filesystem. A user with permission to operate on a Btrfs subvolume they own can repeatedly create read-only snapshots of a previously received subvolume until Btrfs overflows the metadata item used for received subvolume UUID tracking. The overflow causes Btrfs snapshot creation to fail with error -75 and aborts the active filesystem transaction. When Btrfs aborts a transaction, it typically remounts or forces the affected filesystem into read-only mode to preserve consistency, causing writes to fail until administrative recovery or remount/reboot actions are taken. The vulnerability does not directly provide code execution, privilege escalation, or data disclosure, but it can cause high availability impact on systems using Btrfs where unprivileged or low-privileged users can create/send/receive/snapshot subvolumes.
Why it matters to the business
A local user can intentionally make a Btrfs-backed filesystem stop accepting writes, disrupting workloads, containers, user home directories, backup repositories, or systems that rely on Btrfs snapshots. The main risk is operational outage, failed writes, service instability, and possible recovery work for administrators. Exploitation requires local access and suitable Btrfs subvolume permissions, and the current EPSS score is very low with no known KEV listing or known ransomware use, so broad internet-scale exploitation is unlikely; however, multi-user Linux systems, build hosts, backup servers, developer workstations, and container hosts using Btrfs should treat it as a meaningful local availability risk.
How an attack unfolds
An attacker first obtains local access to a Linux system that uses Btrfs and identifies a mounted Btrfs filesystem where they can create or control subvolumes. They create or use a subvolume, mark it read-only so it can be sent, and perform a Btrfs send/receive operation to create a received subvolume containing received UUID metadata. They then repeatedly create read-only snapshots of that received subvolume. Each snapshot operation adds UUID-related metadata until the Btrfs leaf item for received subvolume UUID tracking exceeds the maximum storable item size. Once the limit is hit, Btrfs reports a value-too-large condition, logs warnings such as an insert UUID item failure, aborts the transaction, and transitions the affected filesystem into read-only mode. At that point, normal write operations against that filesystem fail with read-only filesystem errors, disrupting services or users dependent on that storage.
How to fix it
Apply a Linux kernel update from the operating system or kernel vendor that includes the Btrfs fix for transaction aborts when snapshotting received subvolumes. No exact fixed kernel versions were provided in the input, so remediation should be based on vendor advisories and distribution package changelogs for the running kernel stream. After installing the fixed kernel, reboot into the updated kernel because kernel filesystem fixes are not effective until the patched kernel is running. As interim mitigation, restrict local users' ability to create Btrfs subvolumes, snapshots, and send/receive workflows on shared filesystems; avoid granting write access to Btrfs mounts used by multiple untrusted users; monitor and limit automated snapshot creation; and isolate Btrfs-backed infrastructure where untrusted users can execute commands. If a filesystem has already been forced read-only, preserve logs, stop dependent services as needed, investigate for repeated snapshot activity, and follow vendor-recommended Btrfs recovery steps before remounting read-write.
How to confirm the fix worked
Confirm exposure by checking whether systems use Btrfs and whether local users can create snapshots or perform Btrfs send/receive operations. Validate remediation by verifying the running kernel version after reboot and confirming it corresponds to a vendor release containing the Btrfs fix. Functional validation can include reviewing vendor test cases or safely testing in a non-production Btrfs environment that repeated snapshots of a received subvolume no longer abort the transaction or force the filesystem read-only. Do not run destructive reproducer scripts on production systems. Check current mounts with filesystem tooling, verify Btrfs filesystems are not unexpectedly read-only, and review kernel logs for historical Btrfs transaction abort messages associated with snapshot creation.
Typical attack path
- Gain local shell access or execute code as a low-privileged user on a Linux system using Btrfs.
- Find a Btrfs mount where the user owns or can operate on subvolumes.
- Create a subvolume and set it read-only so it can be used with Btrfs send.
- Use btrfs send and btrfs receive to create a received subvolume with received_uuid metadata.
- Repeatedly create read-only snapshots of the received subvolume.
- Trigger Btrfs metadata item overflow for received subvolume UUID tracking.
- Cause Btrfs to abort the active transaction and force the filesystem into read-only mode.
- Leverage the resulting write failures to disrupt applications, users, containers, or system operations.
How to detect it
Look for evidence of Btrfs transaction aborts and read-only transitions in kernel logs, system journals, syslog, audit logs, and command history. Key log sources include dmesg output, /var/log/kern.log, /var/log/messages, /var/log/syslog, systemd journal entries for the kernel, auditd execve records, shell history, and EDR process telemetry. Search for Btrfs warnings around failed UUID item insertion, transaction aborts with error -75, create_pending_snapshot stack traces, and user-facing btrfs command errors such as 'Value too large for defined data type' followed by 'Read-only file system'. Correlate these events with repeated executions of 'btrfs subvolume snapshot', 'btrfs send', 'btrfs receive', and 'btrfs property set ... ro true'. For suspected exploitation, identify the user account running btrfs commands, the affected mount point, the number and timing of snapshot creations, and whether the filesystem became read-only immediately afterward. Because the vulnerability is local and command-driven, there are no reliable remote network indicators; detection should focus on host logs, process execution, filesystem state changes, and abnormal snapshot volume.
- BTRFS warning (device
- insert uuid item failed -75
- type 252!
- BTRFS: Transaction aborted (error -75)
- WARNING: fs/btrfs/transaction.c
- create_pending_snapshot
- create_pending_snapshots
- btrfs_commit_transaction
- ERROR: Could not create subvolume: Value too large for defined data type
- ERROR: Could not create subvolume: Read-only file system
- btrfs subvolume snapshot -r
- btrfs send
- btrfs receive
- btrfs property set
- ro true
- Read-only file system
- Value too large for defined data type
What your security team should do
- Inventory Linux systems using Btrfs, prioritizing multi-user servers, backup/snapshot infrastructure, developer hosts, container hosts, and systems where untrusted users have shell access.
- Patch affected Linux kernels through the relevant OS/vendor update channel and reboot into the corrected kernel.
- Temporarily restrict Btrfs subvolume, snapshot, send, and receive operations to trusted administrators where patching is delayed.
- Monitor kernel logs and SIEM telemetry for Btrfs transaction aborts, insert UUID item failures, and sudden read-only remount behavior.
- Investigate users or automation that created unusually high volumes of Btrfs snapshots, especially snapshots of received subvolumes.
- Add operational alerting for filesystems unexpectedly entering read-only mode, as this may be the first visible service-impact symptom.
- For shared systems, review filesystem permissions and ownership models so low-privileged users cannot disrupt shared Btrfs filesystems.
- Document recovery procedures for Btrfs read-only transaction abort events, including service shutdown, evidence preservation, patching, and controlled remount/reboot steps.
The record
In the Linux kernel, the following vulnerability has been resolved: btrfs: fix transaction abort when snapshotting received subvolumes Currently a user can trigger a transaction abort by snapshotting a previously received snapshot a bunch of times until we reach a BTRFS_UUID_KEY_RECEIVED_SUBVOL item overflow (the maximum item size we can store in a leaf). This is very likely not common in practice, but if it happens, it turns the filesystem into RO mode. The snapshot, send and set_received_subvol and subvol_setflags (used by receive) don't require CAP_SYS_ADMIN, just inode_owner_or_capable(). A malicious user could use this to turn a filesystem into RO mode and disrupt a system. Reproducer script: $ cat test.sh #!/bin/bash DEV=/dev/sdi MNT=/mnt/sdi # Use smallest node size to make the test faster. mkfs.btrfs -f --nodesize 4K $DEV mount $DEV $MNT # Create a subvolume and set it to RO so that it can be used for send. btrfs subvolume create $MNT/sv touch $MNT/sv/foo btrfs property set $MNT/sv ro true # Send and receive the subvolume into snaps/sv. mkdir $MNT/snaps btrfs send $MNT/sv | btrfs receive $MNT/snaps # Now snapshot the received subvolume, which has a received_uuid, a # lot of times to trigger the leaf overflow. total=500 for ((i = 1; i <= $total; i++)); do echo -ne "\rCreating snapshot $i/$total" btrfs subvolume snapshot -r $MNT/snaps/sv $MNT/snaps/sv_$i > /dev/null done echo umount $MNT When running the test: $ ./test.sh (...) Create subvolume '/mnt/sdi/sv' At subvol /mnt/sdi/sv At subvol sv Creating snapshot 496/500ERROR: Could not create subvolume: Value too large for defined data type Creating snapshot 497/500ERROR: Could not create subvolume: Read-only file system Creating snapshot 498/500ERROR: Could not create subvolume: Read-only file system Creating snapshot 499/500ERROR: Could not create subvolume: Read-only file system Creating snapshot 500/500ERROR: Could not create subvolume: Read-only file system And in dmesg/syslog: $ dmesg (...) [251067.627338] BTRFS warning (device sdi): insert uuid item failed -75 (0x4628b21c4ac8d898, 0x2598bee2b1515c91) type 252! [251067.629212] ------------[ cut here ]------------ [251067.630033] BTRFS: Transaction aborted (error -75) [251067.630871] WARNING: fs/btrfs/transaction.c:1907 at create_pending_snapshot.cold+0x52/0x465 [btrfs], CPU#10: btrfs/615235 [251067.632851] Modules linked in: btrfs dm_zero (...) [251067.644071] CPU: 10 UID: 0 PID: 615235 Comm: btrfs Tainted: G W 6.19.0-rc8-btrfs-next-225+ #1 PREEMPT(full) [251067.646165] Tainted: [W]=WARN [251067.646733] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-0-gea1b7a073390-prebuilt.qemu.org 04/01/2014 [251067.648735] RIP: 0010:create_pending_snapshot.cold+0x55/0x465 [btrfs] [251067.649984] Code: f0 48 0f (...) [251067.653313] RSP: 0018:ffffce644908fae8 EFLAGS: 00010292 [251067.653987] RAX: 00000000ffffff01 RBX: ffff8e5639e63a80 RCX: 00000000ffffffd3 [251067.655042] RDX: ffff8e53faa76b00 RSI: 00000000ffffffb5 RDI: ffffffffc0919750 [251067.656077] RBP: ffffce644908fbd8 R08: 0000000000000000 R09: ffffce644908f820 [251067.657068] R10: ffff8e5adc1fffa8 R11: 0000000000000003 R12: ffff8e53c0431bd0 [251067.658050] R13: ffff8e5414593600 R14: ffff8e55efafd000 R15: 00000000ffffffb5 [251067.659019] FS: 00007f2a4944b3c0(0000) GS:ffff8e5b27dae000(0000) knlGS:0000000000000000 [251067.660115] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [251067.660943] CR2: 00007ffc5aa57898 CR3: 00000005813a2003 CR4: 0000000000370ef0 [251067.661972] Call Trace: [251067.662292] <TASK> [251067.662653] create_pending_snapshots+0x97/0xc0 [btrfs] [251067.663413] btrfs_commit_transaction+0x26e/0xc00 [btrfs] [251067.664257] ? btrfs_qgroup_convert_reserved_meta+0x35/0x390 [btrfs] [251067.665238] ? _raw_spin_unlock+0x15/0x30 [251067.665837] ? record_root_ ---truncated---
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|