Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2023-52896— btrfs: fix race between quota rescan and disable leading to NULL pointer deref

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于 btrfs 文件系统在配额重扫和禁用时存在竞态条件。

AI Predicted 7.8 Difficulty: Moderate EPSS 0.24% · P14

Affected Version Matrix 17

VendorProduct Version RangeStatus
Linux Linux 26b3901d20bf9da2c6a00cb1fb48932166f80a45< 89ac597e3e807b91e2ebd6a7c36fec7b97290233 affected
32747e01436aac8ef93fe85b5b523b4f3b52f040< 3bd43374857103ba3cac751d6d4afa8d83b5d92a affected
89d4cca583fc9594ee7d1a0bc986886d6fb587e6< 64287cd456a22373053998c1fccf14b651e9cbbd affected
e804861bd4e69cc5fe1053eedcb024982dde8e48< 1004fc90f0d79a4b7d9e3d432729914f472f9ad1 affected
e804861bd4e69cc5fe1053eedcb024982dde8e48< b7adbf9ada3513d2092362c8eac5cddc5b651f5c affected
31198e58c09e21d4f65c49d2361f76b87aca4c3f affected
5.4.178< 5.4.230 affected
5.10.99< 5.10.165 affected
… +9 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2023-52896

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
btrfs: fix race between quota rescan and disable leading to NULL pointer deref
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: btrfs: fix race between quota rescan and disable leading to NULL pointer deref If we have one task trying to start the quota rescan worker while another one is trying to disable quotas, we can end up hitting a race that results in the quota rescan worker doing a NULL pointer dereference. The steps for this are the following: 1) Quotas are enabled; 2) Task A calls the quota rescan ioctl and enters btrfs_qgroup_rescan(). It calls qgroup_rescan_init() which returns 0 (success) and then joins a transaction and commits it; 3) Task B calls the quota disable ioctl and enters btrfs_quota_disable(). It clears the bit BTRFS_FS_QUOTA_ENABLED from fs_info->flags and calls btrfs_qgroup_wait_for_completion(), which returns immediately since the rescan worker is not yet running. Then it starts a transaction and locks fs_info->qgroup_ioctl_lock; 4) Task A queues the rescan worker, by calling btrfs_queue_work(); 5) The rescan worker starts, and calls rescan_should_stop() at the start of its while loop, which results in 0 iterations of the loop, since the flag BTRFS_FS_QUOTA_ENABLED was cleared from fs_info->flags by task B at step 3); 6) Task B sets fs_info->quota_root to NULL; 7) The rescan worker tries to start a transaction and uses fs_info->quota_root as the root argument for btrfs_start_transaction(). This results in a NULL pointer dereference down the call chain of btrfs_start_transaction(). The stack trace is something like the one reported in Link tag below: general protection fault, probably for non-canonical address 0xdffffc0000000041: 0000 [#1] PREEMPT SMP KASAN KASAN: null-ptr-deref in range [0x0000000000000208-0x000000000000020f] CPU: 1 PID: 34 Comm: kworker/u4:2 Not tainted 6.1.0-syzkaller-13872-gb6bb9676f216 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022 Workqueue: btrfs-qgroup-rescan btrfs_work_helper RIP: 0010:start_transaction+0x48/0x10f0 fs/btrfs/transaction.c:564 Code: 48 89 fb 48 (...) RSP: 0018:ffffc90000ab7ab0 EFLAGS: 00010206 RAX: 0000000000000041 RBX: 0000000000000208 RCX: ffff88801779ba80 RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000000 RBP: dffffc0000000000 R08: 0000000000000001 R09: fffff52000156f5d R10: fffff52000156f5d R11: 1ffff92000156f5c R12: 0000000000000000 R13: 0000000000000001 R14: 0000000000000001 R15: 0000000000000003 FS: 0000000000000000(0000) GS:ffff8880b9900000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f2bea75b718 CR3: 000000001d0cc000 CR4: 00000000003506e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: <TASK> btrfs_qgroup_rescan_worker+0x3bb/0x6a0 fs/btrfs/qgroup.c:3402 btrfs_work_helper+0x312/0x850 fs/btrfs/async-thread.c:280 process_one_work+0x877/0xdb0 kernel/workqueue.c:2289 worker_thread+0xb14/0x1330 kernel/workqueue.c:2436 kthread+0x266/0x300 kernel/kthread.c:376 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:308 </TASK> Modules linked in: So fix this by having the rescan worker function not attempt to start a transaction if it didn't do any rescan work.
Source: CVE Program / CVE List V5
CVSS Information
N/A
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于 btrfs 文件系统在配额重扫和禁用时存在竞态条件。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

Vendor Product Affected Versions CPE Subscribe
Linux Linux 26b3901d20bf9da2c6a00cb1fb48932166f80a45 ~ 89ac597e3e807b91e2ebd6a7c36fec7b97290233 -
Linux Linux 5.17 -

II. Public POCs for CVE-2023-52896

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2023-52896

请登录查看更多情报信息。

Other References for CVE-2023-52896 (5)

Same Patch Batch · Linux · 2024-08-21 · 68 CVEs total

CVE-2023-52910 8.8 HIGH iommu/iova: Fix alloc iova overflows issue
CVE-2024-43881 8.8 HIGH wifi: ath12k: change DMA direction while mapping reinjected packets
CVE-2022-48871 8.8 HIGH tty: serial: qcom-geni-serial: fix slab-out-of-bounds on RX FIFO buffer
CVE-2024-43878 8.1 HIGH xfrm: Fix input error path memory access
CVE-2022-48883 7.8 HIGH net/mlx5e: IPoIB, Block PKEY interfaces with less rx queues than parent
CVE-2024-43882 7.8 HIGH exec: Fix ToCToU between perm check and set-uid/gid usage
CVE-2023-52913 7.8 HIGH drm/i915: Fix potential context UAFs
CVE-2022-48892 7.8 HIGH sched/core: Fix use-after-free bug in dup_user_cpus_ptr()
CVE-2024-43877 7.8 HIGH media: pci: ivtv: Add check for DMA map result
CVE-2024-43880 7.8 HIGH mlxsw: spectrum_acl_erp: Fix object nesting warning
CVE-2022-48899 7.8 HIGH drm/virtio: Fix GEM handle creation UAF
CVE-2022-48872 7.8 HIGH misc: fastrpc: Fix use-after-free race condition for maps
CVE-2022-48873 7.8 HIGH misc: fastrpc: Don't remove map on creater_process and device_release
CVE-2022-48874 7.8 HIGH misc: fastrpc: Fix use-after-free and race in fastrpc_map_find
CVE-2023-52903 7.8 HIGH io_uring: lock overflowing for IOPOLL
CVE-2022-48887 7.8 HIGH drm/vmwgfx: Remove rcu locks from user resources
CVE-2022-48878 7.8 HIGH Bluetooth: hci_qca: Fix driver shutdown on closed serdev
CVE-2023-52907 7.8 HIGH nfc: pn533: Wait for out_urb's completion in pn533_usb_send_frame()
CVE-2023-52909 7.5 HIGH nfsd: fix handling of cached open files in nfsd4_open codepath
CVE-2024-43872 7.5 HIGH RDMA/hns: Fix soft lockup under heavy CEQE load

Showing top 20 of 68 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2023-52896

No comments yet


Leave a comment