MEDIUM 5.5

CVE-2026-52961: Linux Kernel Ceph Filesystem Race Condition Causing Kernel Panic

A bug in the Linux kernel's Ceph filesystem implementation can cause the system to crash when handling extended attributes (metadata tags attached to files). The problem stems from a timing issue where one part of the code calculates the size of attribute data while another part may simultaneously update that data, leading to an inconsistency. When the code later tries to verify the size matches expectations, the mismatch triggers a kernel panic. This affects systems using Ceph as a networked storage backend, particularly under specific file operation patterns.

Source data · NVD / CISA · public domain

CVSS
3.1 · 5.5 MEDIUM · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weaknesses (CWE)
CWE-617
Affected products
4 configuration(s)
Published / Modified
2026-06-24 / 2026-07-14

NVD description (verbatim)

In the Linux kernel, the following vulnerability has been resolved: ceph: fix BUG_ON in __ceph_build_xattrs_blob() due to stale blob size The generic/642 test-case can reproduce the kernel crash: [40243.605254] ------------[ cut here ]------------ [40243.605956] kernel BUG at fs/ceph/xattr.c:918! [40243.607142] Oops: invalid opcode: 0000 [#1] SMP PTI [40243.608067] CPU: 7 UID: 0 PID: 498762 Comm: kworker/7:1 Not tainted 7.0.0-rc7+ #3 PREEMPT(full) [40243.609700] Hardware name: QEMU Ubuntu 25.10 PC v2 (i440FX + PIIX, + 10.1 machine, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [40243.611820] Workqueue: ceph-msgr ceph_con_workfn [40243.612715] RIP: 0010:__ceph_build_xattrs_blob+0x1b8/0x1e0 [40243.613731] Code: 0f 84 82 fe ff ff e9 cf 8e 56 ff 48 8d 65 e8 31 c0 5b 41 5c 41 5d 5d 31 d2 31 c9 31 f6 31 ff 45 31 c0 45 31 c9 c3 cc cc cc cc <0f> 0b 4c 8b 62 08 41 8b 85 24 07 00 00 49 83 c4 04 41 89 44 24 fc [40243.616888] RSP: 0018:ffffcc80c4d4b688 EFLAGS: 00010287 [40243.617773] RAX: 0000000000010026 RBX: 0000000000000001 RCX: 0000000000000000 [40243.618928] RDX: ffff8a773798dee0 RSI: 0000000000000000 RDI: 0000000000000000 [40243.620158] RBP: ffffcc80c4d4b6a0 R08: 0000000000000000 R09: 0000000000000000 [40243.621573] R10: 0000000000000000 R11: 0000000000000000 R12: ffff8a75f3b58000 [40243.622907] R13: ffff8a75f3b58000 R14: 0000000000000080 R15: 000000000000bffd [40243.624054] FS: 0000000000000000(0000) GS:ffff8a787d1b4000(0000) knlGS:0000000000000000 [40243.625331] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [40243.626269] CR2: 000072f390b623c0 CR3: 000000011c02a003 CR4: 0000000000372ef0 [40243.627408] Call Trace: [40243.627839] <TASK> [40243.628188] __prep_cap+0x3fd/0x4a0 [40243.628789] ? do_raw_spin_unlock+0x4e/0xe0 [40243.629474] ceph_check_caps+0x46a/0xc80 [40243.630094] ? __lock_acquire+0x4a2/0x2650 [40243.630773] ? find_held_lock+0x31/0x90 [40243.631347] ? handle_cap_grant+0x79f/0x1060 [40243.632068] ? lock_release+0xd9/0x300 [40243.632696] ? __mutex_unlock_slowpath+0x3e/0x340 [40243.633429] ? lock_release+0xd9/0x300 [40243.634052] handle_cap_grant+0xcf6/0x1060 [40243.634745] ceph_handle_caps+0x122b/0x2110 [40243.635415] mds_dispatch+0x5bd/0x2160 [40243.636034] ? ceph_con_process_message+0x65/0x190 [40243.636828] ? lock_release+0xd9/0x300 [40243.637431] ceph_con_process_message+0x7a/0x190 [40243.638184] ? kfree+0x311/0x4f0 [40243.638749] ? kfree+0x311/0x4f0 [40243.639268] process_message+0x16/0x1a0 [40243.639915] ? sg_free_table+0x39/0x90 [40243.640572] ceph_con_v2_try_read+0xf58/0x2120 [40243.641255] ? lock_acquire+0xc8/0x300 [40243.641863] ceph_con_workfn+0x151/0x820 [40243.642493] process_one_work+0x22f/0x630 [40243.643093] ? process_one_work+0x254/0x630 [40243.643770] worker_thread+0x1e2/0x400 [40243.644332] ? __pfx_worker_thread+0x10/0x10 [40243.645020] kthread+0x109/0x140 [40243.645560] ? __pfx_kthread+0x10/0x10 [40243.646125] ret_from_fork+0x3f8/0x480 [40243.646752] ? __pfx_kthread+0x10/0x10 [40243.647316] ? __pfx_kthread+0x10/0x10 [40243.647919] ret_from_fork_asm+0x1a/0x30 [40243.648556] </TASK> [40243.648902] Modules linked in: overlay hctr2 libpolyval chacha libchacha adiantum libnh libpoly1305 essiv intel_rapl_msr intel_rapl_common intel_uncore_frequency_common skx_edac_common nfit kvm_intel kvm irqbypass joydev ghash_clmulni_intel aesni_intel rapl input_leds mac_hid psmouse vga16fb serio_raw vgastate floppy i2c_piix4 pata_acpi bochs qemu_fw_cfg i2c_smbus sch_fq_codel rbd dm_crypt msr parport_pc ppdev lp parport efi_pstore [40243.654766] ---[ end trace 0000000000000000 ]--- Commit d93231a6bc8a ("ceph: prevent a client from exceeding the MDS maximum xattr size") moved the required_blob_size computation to before the __build_xattrs() call, introducing a race. __build_xattrs() releases and reacquires i_ceph_lock during execution. In that window, handle_cap_grant() may update i_xattrs.blob with a newer MDS-provided blob and bump i_xattrs.version. When __bui ---truncated---

4 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-52961 is a BUG_ON condition in __ceph_build_xattrs_blob() within fs/ceph/xattr.c caused by a race condition between required_blob_size calculation and blob content updates. Commit d93231a6bc8a moved size computation before __build_xattrs(), which releases and reacquires i_ceph_lock. During this window, handle_cap_grant() may update i_xattrs.blob with MDS-provided data and increment i_xattrs.version. When __build_xattrs() reacquires the lock, the stale required_blob_size value no longer matches the current blob state, causing the BUG_ON assertion at line 918 to trigger. The vulnerability is classified as CWE-617 (Reachable Assertion) and reproducible via the generic/642 test case.

Business impact

Production systems running Ceph clients on affected Linux kernel versions face denial-of-service risk through kernel panics during normal file operations. For organizations relying on Ceph for clustered storage, virtualization backends, or container orchestration (Kubernetes with Ceph RBD), this can cause unexpected node reboots and service interruption. The CVSS 5.5 MEDIUM score reflects local-only access requirement and lack of confidentiality/integrity breach, but the availability impact is complete.

Affected systems

The vulnerability affects Linux kernel implementations with Ceph filesystem support. Impact is limited to systems with Ceph client functionality enabled, particularly those performing extended attribute operations under concurrent workloads. Affected systems include: servers using CephFS for shared storage, Kubernetes nodes with RBD block storage, OpenStack instances leveraging Ceph backend, and hybrid cloud environments combining local and Ceph-backed filesystems. The race condition is triggered during specific file operation sequences reproducible in test environments.

Exploitability

Exploitability is moderate. The vulnerability requires local system access and the ability to trigger concurrent file operations with extended attributes on a Ceph-mounted filesystem. No remote exploitation path exists. The race condition is timing-dependent but reproducible via the generic/642 test case, suggesting it can occur under realistic I/O patterns. Privilege escalation is not required; a standard user performing filesystem operations can trigger the crash. The kernel panic qualifies as a denial-of-service condition rather than privilege escalation or data theft.

Remediation

Apply a kernel update that includes the fix for this race condition. The fix involves serializing the required_blob_size calculation with blob updates or repositioning the size computation to occur after __build_xattrs() completes with proper locking. Verify the specific kernel version or patch addresses the i_ceph_lock race between required_blob_size and i_xattrs.version updates. Temporary mitigation includes reducing extended attribute usage or redistributing Ceph workloads to unaffected kernel versions pending patches.

Patch guidance

Update the Linux kernel to a patched version that resolves the i_ceph_lock race condition in xattr handling. Consult your Linux distribution (RHEL, Ubuntu, Debian, etc.) for specific kernel version numbers and availability. Test patches in a non-production Ceph environment first, as kernel updates may affect I/O performance or compatibility with other subsystems. If using Ceph in production, coordinate patching with your storage team to avoid simultaneous node reboots. Verify against the vendor advisory that the patch includes the fix to __ceph_build_xattrs_blob() race condition logic.

Detection guidance

Monitor kernel logs for BUG_ON messages originating from fs/ceph/xattr.c:918 or generic oops traces involving __ceph_build_xattrs_blob. Systems experiencing this bug will show crash logs with 'invalid opcode' and a call stack through ceph_handle_caps→handle_cap_grant→__prep_cap. Use kernel instrumentation (kprobes, eBPF) to log i_xattrs.version changes relative to required_blob_size calculations if deeper diagnosis is needed. Correlate crashes with extended attribute operations or capability grant messages from MDS servers.

Why prioritize this

While the CVSS score is MEDIUM (5.5), this vulnerability should be prioritized for patch deployment because: (1) it causes kernel panics affecting service availability in production Ceph deployments, (2) it is triggered by normal filesystem operations without special privileges, (3) reproducibility via standard test cases suggests real-world triggering is likely under load, and (4) Ceph is increasingly used in cloud-native and distributed storage architectures where node stability is critical. Organizations relying on Ceph should treat this as HIGH priority for testing and deployment.

Risk score, explained

The CVSS 3.1 score of 5.5 (MEDIUM) reflects: Attack Vector Local (requires local system access), Attack Complexity Low (race condition is readily triggered), Privileges Required Low (standard user can cause crash), User Interaction None, Scope Unchanged (impact confined to affected system), Confidentiality None (no data exposure), Integrity None (no data corruption), and Availability High (kernel panic). The score accurately captures the DoS impact but may underweight the practical severity in Ceph-dependent infrastructure where node availability is paramount.

Frequently asked questions

Will this vulnerability affect my system if I'm not using Ceph?

No. This vulnerability is specific to Linux systems with Ceph filesystem client support enabled. If you use only native filesystems (ext4, btrfs, XFS) or other networked storage (NFS, SMB), you are not affected.

Can this be exploited remotely over the network?

No. The vulnerability requires local system access and the ability to perform file operations on a Ceph-mounted filesystem. Remote attackers cannot trigger this directly, though a compromised local user account could exploit it.

Will updating just the Ceph client software fix this?

No. The vulnerability is in the Linux kernel code for Ceph, not the Ceph daemon itself. A kernel update is required. Ceph client tool updates alone will not resolve the race condition.

How can I tell if my kernel version is affected?

Check your running kernel version with 'uname -r' and consult your Linux distribution's security advisory for CVE-2026-52961. The vulnerability affects kernels with the problematic commit d93231a6bc8a until a fix is applied; your distribution's advisory will specify affected version ranges and patched versions available.

This analysis is based on the vulnerability description and public technical details available as of the publication date. CVSS scores, patch version numbers, and KEV status are provided from authoritative sources (NVD, vendor advisories). Organizations should verify patch availability for their specific Linux distribution and kernel version against official vendor advisories before deploying fixes. Testing in non-production environments is strongly recommended before patching production Ceph infrastructure. This information does not constitute legal or compliance advice; security teams should assess applicability based on their specific system configurations and operational requirements. Source: NVD (public-domain), retrieved 2026-07-30. Analysis generated by SEC.co (claude-haiku-4-5).