Cloudanix VulnDB

CVE-2026-43046

Medium · 5.5

CVSS

5.5

EPSS

0.2%

Published

May 1, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A specially corrupted Btrfs storage volume can crash vulnerable Linux systems when it is mounted.

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

CVE-2026-43046 is a Linux kernel Btrfs denial-of-service flaw caused by insufficient validation of on-disk Btrfs root item metadata. A malformed root_item can set drop_progress.objectid to a non-zero value while drop_level is zero, violating a kernel invariant used during snapshot deletion and relocation recovery. When the filesystem is mounted and Btrfs relocation recovery or snapshot-drop recovery processes this invalid metadata, kernel code reaches BUG_ON(level == 0) in merge_reloc_root() or btrfs_drop_snapshot(), causing a kernel oops/panic and system availability loss. The flaw does not directly provide confidentiality or integrity impact, but it can crash affected systems that mount crafted or corrupted Btrfs filesystems.

Why it matters to the business

Successful exploitation can crash Linux systems that mount malicious or corrupted Btrfs volumes, causing service interruption, workload downtime, failed boots, or operational recovery work for systems using Btrfs. The risk is highest for endpoints, servers, virtualization hosts, forensic workstations, removable-media workflows, container/VM image processing, backup systems, or storage services that allow locally authenticated users or automated processes to mount Btrfs filesystems from untrusted sources. This issue is not listed in CISA KEV, is not known to be used in ransomware campaigns, has very low EPSS activity, and has no reported mature exploit in the provided data, so prioritization should be based mainly on local exposure to untrusted Btrfs media/images and the operational importance of affected Linux hosts.

How an attack unfolds

An attacker first needs a path to have a malformed Btrfs filesystem mounted by an affected kernel. This typically requires local access, control over removable media, control over a disk image, access to a loopback mount workflow, or the ability to modify Btrfs metadata on a block device. The attacker crafts or corrupts Btrfs root item metadata so that drop_progress.objectid is non-zero while drop_level is zero. When the vulnerable kernel mounts the filesystem and begins Btrfs pre-read/write mount processing, relocation recovery, or interrupted snapshot deletion recovery, it reads the malformed metadata without rejecting the invalid invariant. The recovery path then calls merge_reloc_root() or btrfs_drop_snapshot(), observes an impossible level value, and triggers a BUG_ON(), resulting in a kernel oops or panic. On patched kernels, Btrfs tree-checker validates the root item when read from disk and rejects the malformed filesystem with an error such as -EUCLEAN before the crash path is reached.

How to fix it

Upgrade affected Linux kernels to a version or distribution backport that includes the Btrfs tree-checker validation for root items where non-zero drop_progress.objectid requires non-zero drop_level. No exact fixed package versions were provided, so use vendor advisories for the deployed distribution and confirm the patch is included in the running kernel. Where immediate patching is not possible, reduce exposure by preventing untrusted users from mounting filesystems, disabling or restricting automatic mounting of removable media and disk images, limiting loop-device mount privileges, using container/VM isolation for filesystem analysis, and avoiding Btrfs mounts from untrusted sources on production systems. If Btrfs is not required, consider disabling Btrfs module loading or removing Btrfs support according to platform policy. Systems that have already encountered the crash should avoid remounting the suspect filesystem until it has been examined with patched tools/kernels or restored from trusted backups.

How to confirm the fix worked

Confirm the running kernel is updated to a vendor build containing the fix, not merely that a package is installed. Validate with uname -a, distribution package metadata, and vendor changelogs for the Btrfs root_item tree-checker fix. On patched systems, attempting to mount a filesystem with this malformed metadata should fail cleanly with Btrfs corruption/tree-checker errors rather than producing a kernel BUG, oops, or panic. Review boot and kernel logs after remediation to ensure there are no new occurrences of BUG_ON traces involving merge_reloc_root(), btrfs_drop_snapshot(), btrfs_recover_relocation(), or Btrfs relocation recovery during mount. For hardened configurations, verify that unprivileged or untrusted users cannot mount Btrfs filesystems or loopback images and that removable-media automounting policies are disabled or restricted where appropriate.

Typical attack path

  1. Obtain local access or influence over a workflow that mounts Btrfs filesystems, disk images, removable media, or block devices.
  2. Create or modify a Btrfs filesystem so a root_item has non-zero drop_progress.objectid and zero drop_level.
  3. Cause the vulnerable Linux system to mount the crafted or corrupted Btrfs filesystem.
  4. Trigger Btrfs relocation recovery or snapshot-drop recovery during mount or pre-read/write mount handling.
  5. The kernel processes the invalid metadata, reaches BUG_ON(level == 0), and oopses or panics.
  6. The affected host experiences denial of service until rebooted, recovered, or prevented from mounting the malformed filesystem.

How to detect it

To determine whether this was already exploited or encountered, review kernel logs, persistent journal entries, crash dumps, and system boot logs for Btrfs-related kernel BUG, oops, or panic traces during mount, relocation recovery, or snapshot-drop recovery. Useful sources include journalctl -k, /var/log/kern.log, /var/log/messages, /var/log/syslog, dmesg output, kdump/vmcore records, crash reporting systems, EDR telemetry for mount activity, auditd records for mount/losetup commands, removable-media logs, and virtualization or image-processing service logs. Look for call traces referencing merge_reloc_root(), merge_reloc_roots(), btrfs_recover_relocation(), btrfs_start_pre_rw_mount(), open_ctree(), btrfs_fill_super(), btrfs_get_tree(), path_mount(), or btrfs_drop_snapshot(). Also correlate crashes with recent mount attempts of Btrfs filesystems, loop devices, disk images, USB/removable media, backup volumes, or VM/container images. On patched systems, look for Btrfs tree-checker or corruption messages rejecting root item metadata rather than kernel BUG traces; such events may indicate attempted exploitation or exposure to malformed/corrupt media. Because exploitation requires a crafted or corrupted filesystem, preserve the suspect block device or image for forensic analysis if a matching crash occurs.

  • kernel BUG at fs/btrfs/relocation.c:1545
  • BUG_ON(level == 0)
  • merge_reloc_root+
  • merge_reloc_roots+
  • btrfs_recover_relocation+
  • btrfs_start_pre_rw_mount+
  • open_ctree+
  • btrfs_fill_super
  • btrfs_get_tree
  • btrfs_drop_snapshot
  • path_mount+
  • __x64_sys_mount+
  • BTRFS: error
  • BTRFS: corrupt
  • tree-checker
  • drop_progress
  • drop_level
  • EUCLEAN
  • invalid opcode: 0000
  • Oops: invalid opcode
  • mount -t btrfs
  • losetup

What your security team should do

  • Identify Linux systems using Btrfs or capable of mounting Btrfs filesystems, prioritizing servers, virtualization hosts, backup infrastructure, workstations handling disk images, and systems with removable-media or automount workflows.
  • Apply vendor kernel updates that include the Btrfs root_item validation fix; prioritize internet-adjacent operational systems only if they also process untrusted local media/images, since this is a local denial-of-service issue.
  • Restrict mount privileges and untrusted filesystem handling; ensure users and automation cannot mount arbitrary Btrfs volumes on sensitive hosts.
  • Disable automounting of removable media and disk images on production and administrative systems unless explicitly required.
  • If Btrfs is unused, consider blacklisting or disabling the Btrfs kernel module according to operational requirements.
  • Monitor kernel logs for Btrfs relocation recovery crashes, kernel BUG/oops messages, and repeated mount failures indicating malformed Btrfs metadata.
  • Investigate any crash involving merge_reloc_root(), btrfs_drop_snapshot(), or btrfs_recover_relocation as potential malformed filesystem exposure, especially if it follows insertion of removable media or mounting of disk images.
  • Maintain backups and recovery procedures for systems using Btrfs so malformed metadata or repeated mount crashes do not prolong downtime.

The record

In the Linux kernel, the following vulnerability has been resolved: btrfs: reject root items with drop_progress and zero drop_level [BUG] When recovering relocation at mount time, merge_reloc_root() and btrfs_drop_snapshot() both use BUG_ON(level == 0) to guard against an impossible state: a non-zero drop_progress combined with a zero drop_level in a root_item, which can be triggered: ------------[ cut here ]------------ kernel BUG at fs/btrfs/relocation.c:1545! Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI CPU: 1 UID: 0 PID: 283 ... Tainted: 6.18.0+ #16 PREEMPT(voluntary) Tainted: [O]=OOT_MODULE, [E]=UNSIGNED_MODULE Hardware name: QEMU Ubuntu 24.04 PC v2, BIOS 1.16.3-debian-1.16.3-2 RIP: 0010:merge_reloc_root+0x1266/0x1650 fs/btrfs/relocation.c:1545 Code: ffff0000 00004589 d7e9acfa ffffe8a1 79bafebe 02000000 Call Trace: merge_reloc_roots+0x295/0x890 fs/btrfs/relocation.c:1861 btrfs_recover_relocation+0xd6e/0x11d0 fs/btrfs/relocation.c:4195 btrfs_start_pre_rw_mount+0xa4d/0x1810 fs/btrfs/disk-io.c:3130 open_ctree+0x5824/0x5fe0 fs/btrfs/disk-io.c:3640 btrfs_fill_super fs/btrfs/super.c:987 [inline] btrfs_get_tree_super fs/btrfs/super.c:1951 [inline] btrfs_get_tree_subvol fs/btrfs/super.c:2094 [inline] btrfs_get_tree+0x111c/0x2190 fs/btrfs/super.c:2128 vfs_get_tree+0x9a/0x370 fs/super.c:1758 fc_mount fs/namespace.c:1199 [inline] do_new_mount_fc fs/namespace.c:3642 [inline] do_new_mount fs/namespace.c:3718 [inline] path_mount+0x5b8/0x1ea0 fs/namespace.c:4028 do_mount fs/namespace.c:4041 [inline] __do_sys_mount fs/namespace.c:4229 [inline] __se_sys_mount fs/namespace.c:4206 [inline] __x64_sys_mount+0x282/0x320 fs/namespace.c:4206 ... RIP: 0033:0x7f969c9a8fde Code: 0f1f4000 48c7c2b0 fffffff7 d8648902 b8ffffff ffc3660f ---[ end trace 0000000000000000 ]--- The bug is reproducible on 7.0.0-rc2-next-20260310 with our dynamic metadata fuzzing tool that corrupts btrfs metadata at runtime. [CAUSE] A non-zero drop_progress.objectid means an interrupted btrfs_drop_snapshot() left a resume point on disk, and in that case drop_level must be greater than 0 because the checkpoint is only saved at internal node levels. Although this invariant is enforced when the kernel writes the root item, it is not validated when the root item is read back from disk. That allows on-disk corruption to provide an invalid state with drop_progress.objectid != 0 and drop_level == 0. When relocation recovery later processes such a root item, merge_reloc_root() reads drop_level and hits BUG_ON(level == 0). The same invalid metadata can also trigger the corresponding BUG_ON() in btrfs_drop_snapshot(). [FIX] Fix this by validating the root_item invariant in tree-checker when reading root items from disk: if drop_progress.objectid is non-zero, drop_level must also be non-zero. Reject such malformed metadata with -EUCLEAN before it reaches merge_reloc_root() or btrfs_drop_snapshot() and triggers the BUG_ON. After the fix, the same corruption is correctly rejected by tree-checker and the BUG_ON is no longer triggered.

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities