Cloudanix VulnDB

CVE-2023-53618

Medium · 5.5

CVSS

5.5

EPSS

0.2%

Published

Oct 7, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A flaw in handling certain file-system records can make the computer crash when it sees unexpected data on disk.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Denial Of Service
Component
OS kernel
Class
Improper Input Validation
Remediation
Patch
Effort
Medium
Patch risk
Low

What it actually does

The vulnerability permits invalid reloc tree root keys (such as for quota trees) in btrfs metadata to reach prepare_to_merge(), triggering an ASSERT that the reloc tree is not properly referenced by its subvolume tree and causing a kernel crash.

Why it matters to the business

Unexpected system crashes and loss of availability on Linux hosts using the btrfs filesystem when processing corrupted on-disk metadata; urgency is low given no KEV listing or ransomware use but high ecosystem prevalence of the kernel.

How an attack unfolds

An attacker supplies a maliciously crafted btrfs filesystem image containing an invalid reloc tree root key for a non-subvolume tree; when the kernel mounts or balances the filesystem the tree-checker fails to reject it, the ASSERT fires, and the system panics. Related kernel privilege-escalation campaigns have targeted similar btrfs and container-optimized OS paths.

How to fix it

Apply the upstream btrfs tree-checker rejection of invalid reloc tree root keys. For the listed affected package upgrade activerecord (RubyGems) to version 3.2.19.

How to confirm the fix worked

Confirm the kernel contains the patch that adds explicit root-key validation in the tree-checker for TREE_RELOC_OBJECTID; test by attempting to mount an image containing an invalid reloc root key and verifying graceful rejection instead of ASSERT.

Typical attack path

  1. Obtain local access or ability to present a filesystem image to a target Linux system
  2. Craft or corrupt a btrfs volume so that a reloc tree root key references a non-subvolume tree (e.g., quota tree)
  3. Cause the victim kernel to mount, scrub, or balance the volume
  4. Trigger the ASSERT inside prepare_to_merge() resulting in denial of service

How to detect it

Search kernel logs for the exact BTRFS error string mentioning reloc tree mismatch and unexpected root keys; inspect mounted btrfs volumes for anomalous TREE_RELOC_OBJECTID entries pointing at non-subvolume trees.

  • BTRFS error (device .*): reloc tree mismatch, root .* has no reloc root, expect reloc root key
  • TREE_RELOC_OBJECTID.*QUOTA_TREE_OBJECTID

What your security team should do

  • Prioritize patching Linux kernel btrfs modules on all systems that use the filesystem
  • Upgrade activerecord (RubyGems) to 3.2.19 where the package appears in any dependency tree
  • Enable btrfs integrity checks and monitor for BTRFS error messages referencing reloc tree mismatch
  • Restrict untrusted filesystem images from being mounted on production hosts

The record

In the Linux kernel, the following vulnerability has been resolved: btrfs: reject invalid reloc tree root keys with stack dump [BUG] Syzbot reported a crash that an ASSERT() got triggered inside prepare_to_merge(). That ASSERT() makes sure the reloc tree is properly pointed back by its subvolume tree. [CAUSE] After more debugging output, it turns out we had an invalid reloc tree: BTRFS error (device loop1): reloc tree mismatch, root 8 has no reloc root, expect reloc root key (-8, 132, 8) gen 17 Note the above root key is (TREE_RELOC_OBJECTID, ROOT_ITEM, QUOTA_TREE_OBJECTID), meaning it's a reloc tree for quota tree. But reloc trees can only exist for subvolumes, as for non-subvolume trees, we just COW the involved tree block, no need to create a reloc tree since those tree blocks won't be shared with other trees. Only subvolumes tree can share tree blocks with other trees (thus they have BTRFS_ROOT_SHAREABLE flag). Thus this new debug output proves my previous assumption that corrupted on-disk data can trigger that ASSERT(). [FIX] Besides the dedicated fix and the graceful exit, also let tree-checker to check such root keys, to make sure reloc trees can only exist for subvolumes.

Affected packages

Ecosystem Package Introduced Fixed
Linux Kernel 0 5.15.127
Linux Kernel 5.4.0 5.15.127
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise High Availability Extension 15 SP7 kernel-default 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_17 0 1-150600.1.3.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_17 0 1-150600.13.5.1
SUSE:Linux Enterprise Live Patching 15 SP7 kernel-default 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Live Patching 15 SP7 kernel-livepatch-SLE15-SP7_Update_6 0 1-150700.15.3.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.78.1.150600.12.34.2
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-64kb 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-default 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-default-base 0 6.4.0-150700.53.22.1.150700.17.15.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-source 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 kernel-zfcpdump 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 kernel-docs 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 kernel-obs-build 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 kernel-source 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Development Tools 15 SP7 kernel-syms 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Module for Legacy 15 SP7 kernel-default 0 6.4.0-150700.53.22.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.55.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.55.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.55.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP7 kernel-azure 0 6.4.0-150700.20.18.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP7 kernel-source-azure 0 6.4.0-150700.20.18.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP7 kernel-syms-azure 0 6.4.0-150700.20.18.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.78.1
SUSE:Linux Enterprise Workstation Extension 15 SP7 kernel-default 0 6.4.0-150700.53.22.1
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.58.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.58.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.58.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.58.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.55.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.78.1.150600.12.34.2
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.58.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.58.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.55.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.58.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.78.1
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.55.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.58.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.78.1

Related vulnerabilities