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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2024-42103— btrfs: fix adding block group to a reclaim list and the unused list during reclaim

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模块中在将块组添加到重试列表和未使用列表时,可能存在并发列表添加问题,导致列表头部损坏。

CVSS 7.8 · High EPSS 0.25% · P15

Possible ATT&CK Techniques 1 AI

T1499 · Endpoint Denial of Service

Affected Version Matrix 9

VendorProduct Version RangeStatus
Linux Linux 2311fd03027d2c1b2ac4a3a41153a16352659b65< 522b39bd7163e8dc49f8cf10b9b782218ac48746 affected
15cb476ceb7da730857b8e94f06161273adb7a3a< aa1d8cc0cc500e06b316cd6732d4e6c1388fe33c affected
bf1e8c21f2bef7dfcdadc93b0bb2e8723639d5f7< f8e960be923f74a273c62478c9cab9523936752b affected
ab58fe210c40e582a9fd3d122ae21071adb5470a< 326fa14549d7969ef80d3f5beea5470cd1c8e67f affected
4eb4e85c4f818491efc67e9373aa16b123c3f522< 48f091fd50b2eb33ae5eaea9ed3c4f81603acf38 affected
5.15.162< 5.15.163 affected
6.1.96< 6.1.98 affected
6.6.36< 6.6.39 affected
… +1 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2024-42103

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 adding block group to a reclaim list and the unused list during reclaim
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: btrfs: fix adding block group to a reclaim list and the unused list during reclaim There is a potential parallel list adding for retrying in btrfs_reclaim_bgs_work and adding to the unused list. Since the block group is removed from the reclaim list and it is on a relocation work, it can be added into the unused list in parallel. When that happens, adding it to the reclaim list will corrupt the list head and trigger list corruption like below. Fix it by taking fs_info->unused_bgs_lock. [177.504][T2585409] BTRFS error (device nullb1): error relocating ch= unk 2415919104 [177.514][T2585409] list_del corruption. next->prev should be ff1100= 0344b119c0, but was ff11000377e87c70. (next=3Dff110002390cd9c0) [177.529][T2585409] ------------[ cut here ]------------ [177.537][T2585409] kernel BUG at lib/list_debug.c:65! [177.545][T2585409] Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI [177.555][T2585409] CPU: 9 PID: 2585409 Comm: kworker/u128:2 Tainted: G W 6.10.0-rc5-kts #1 [177.568][T2585409] Hardware name: Supermicro SYS-520P-WTR/X12SPW-TF, BIOS 1.2 02/14/2022 [177.579][T2585409] Workqueue: events_unbound btrfs_reclaim_bgs_work[btrfs] [177.589][T2585409] RIP: 0010:__list_del_entry_valid_or_report.cold+0x70/0x72 [177.624][T2585409] RSP: 0018:ff11000377e87a70 EFLAGS: 00010286 [177.633][T2585409] RAX: 000000000000006d RBX: ff11000344b119c0 RCX:0000000000000000 [177.644][T2585409] RDX: 000000000000006d RSI: 0000000000000008 RDI:ffe21c006efd0f40 [177.655][T2585409] RBP: ff110002e0509f78 R08: 0000000000000001 R09:ffe21c006efd0f08 [177.665][T2585409] R10: ff11000377e87847 R11: 0000000000000000 R12:ff110002390cd9c0 [177.676][T2585409] R13: ff11000344b119c0 R14: ff110002e0508000 R15:dffffc0000000000 [177.687][T2585409] FS: 0000000000000000(0000) GS:ff11000fec880000(0000) knlGS:0000000000000000 [177.700][T2585409] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [177.709][T2585409] CR2: 00007f06bc7b1978 CR3: 0000001021e86005 CR4:0000000000771ef0 [177.720][T2585409] DR0: 0000000000000000 DR1: 0000000000000000 DR2:0000000000000000 [177.731][T2585409] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:0000000000000400 [177.742][T2585409] PKRU: 55555554 [177.748][T2585409] Call Trace: [177.753][T2585409] <TASK> [177.759][T2585409] ? __die_body.cold+0x19/0x27 [177.766][T2585409] ? die+0x2e/0x50 [177.772][T2585409] ? do_trap+0x1ea/0x2d0 [177.779][T2585409] ? __list_del_entry_valid_or_report.cold+0x70/0x72 [177.788][T2585409] ? do_error_trap+0xa3/0x160 [177.795][T2585409] ? __list_del_entry_valid_or_report.cold+0x70/0x72 [177.805][T2585409] ? handle_invalid_op+0x2c/0x40 [177.812][T2585409] ? __list_del_entry_valid_or_report.cold+0x70/0x72 [177.820][T2585409] ? exc_invalid_op+0x2d/0x40 [177.827][T2585409] ? asm_exc_invalid_op+0x1a/0x20 [177.834][T2585409] ? __list_del_entry_valid_or_report.cold+0x70/0x72 [177.843][T2585409] btrfs_delete_unused_bgs+0x3d9/0x14c0 [btrfs] There is a similar retry_list code in btrfs_delete_unused_bgs(), but it is safe, AFAICS. Since the block group was in the unused list, the used bytes should be 0 when it was added to the unused list. Then, it checks block_group->{used,reserved,pinned} are still 0 under the block_group->lock. So, they should be still eligible for the unused list, not the reclaim list. The reason it is safe there it's because because we're holding space_info->groups_sem in write mode. That means no other task can allocate from the block group, so while we are at deleted_unused_bgs() it's not possible for other tasks to allocate and deallocate extents from the block group, so it can't be added to the unused list or the reclaim list by anyone else. The bug can be reproduced by btrfs/166 after a few rounds. In practice this can be hit when relocation cannot find more chunk space and ends with ENOSPC.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
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 2311fd03027d2c1b2ac4a3a41153a16352659b65 ~ 522b39bd7163e8dc49f8cf10b9b782218ac48746 -
Linux Linux 5.15.162 ~ 5.15.163 -

II. Public POCs for CVE-2024-42103

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

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2024-42103

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

Other References for CVE-2024-42103 (4)

Same Patch Batch · Linux · 2024-07-30 · 70 CVEs total

CVE-2024-42108 9.8 CRITICAL net: rswitch: Avoid use-after-free in rswitch_poll()
CVE-2024-42225 8.3 HIGH wifi: mt76: replace skb_put with skb_put_zero
CVE-2024-42120 7.8 HIGH drm/amd/display: Check pipe offset before setting vblank
CVE-2024-42117 7.8 HIGH drm/amd/display: ASSERT when failing to find index by plane/stream id
CVE-2024-42115 7.8 HIGH jffs2: Fix potential illegal address access in jffs2_free_inode
CVE-2024-42112 7.8 HIGH net: txgbe: free isb resources at the right time
CVE-2024-42111 7.8 HIGH btrfs: always do the basic checks for btrfs_qgroup_inherit structure
CVE-2024-42109 7.8 HIGH netfilter: nf_tables: unconditionally flush pending work before notifier
CVE-2024-42105 7.8 HIGH nilfs2: fix inode number range checks
CVE-2024-42104 7.8 HIGH nilfs2: add missing check for inode numbers on directory entries
CVE-2024-42162 7.8 HIGH gve: Account for stopped queues when reading NIC stats
CVE-2024-42099 7.8 HIGH s390/dasd: Fix invalid dereferencing of indirect CCW data pointer
CVE-2024-42133 7.6 HIGH Bluetooth: Ignore too large handle values in BIG
CVE-2024-42132 7.6 HIGH bluetooth/hci: disallow setting handle bigger than HCI_CONN_HANDLE_MAX
CVE-2024-42110 7.5 HIGH net: ntb_netdev: Move ntb_netdev_rx_handler() to call netif_rx() from __netif_rx()
CVE-2024-42152 7.5 HIGH nvmet: fix a possible leak when destroy a ctrl during qp establishment
CVE-2024-42145 7.5 HIGH IB/core: Implement a limit on UMAD receive List
CVE-2024-42123 7.0 HIGH drm/amdgpu: fix double free err_addr pointer warnings
CVE-2024-42224 7.0 HIGH net: dsa: mv88e6xxx: Correct check for empty list
CVE-2024-42161 bpf: Avoid uninitialized value in BPF_CORE_READ_BITFIELD

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

IV. Related Vulnerabilities

V. Comments for CVE-2024-42103

No comments yet


Leave a comment