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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2024-50225— btrfs: fix error propagation of split bios

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存在安全漏洞,该漏洞源于split bios错误传播。

CVSS 7.8 · High EPSS 0.21% · P11

Affected Version Matrix 6

VendorProduct Version RangeStatus
Linux Linux 852eee62d31abd695cd43e1b875d664ed292a8ca< 22833d89b780ba0f9f66e19c477e7decf638edce affected
852eee62d31abd695cd43e1b875d664ed292a8ca< d48e1dea3931de64c26717adc2b89743c7ab6594 affected
6.3 affected
< 6.3 unaffected
6.11.7≤ 6.11.* unaffected
6.12≤ * unaffected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2024-50225

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 error propagation of split bios
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: btrfs: fix error propagation of split bios The purpose of btrfs_bbio_propagate_error() shall be propagating an error of split bio to its original btrfs_bio, and tell the error to the upper layer. However, it's not working well on some cases. * Case 1. Immediate (or quick) end_bio with an error When btrfs sends btrfs_bio to mirrored devices, btrfs calls btrfs_bio_end_io() when all the mirroring bios are completed. If that btrfs_bio was split, it is from btrfs_clone_bioset and its end_io function is btrfs_orig_write_end_io. For this case, btrfs_bbio_propagate_error() accesses the orig_bbio's bio context to increase the error count. That works well in most cases. However, if the end_io is called enough fast, orig_bbio's (remaining part after split) bio context may not be properly set at that time. Since the bio context is set when the orig_bbio (the last btrfs_bio) is sent to devices, that might be too late for earlier split btrfs_bio's completion. That will result in NULL pointer dereference. That bug is easily reproducible by running btrfs/146 on zoned devices [1] and it shows the following trace. [1] You need raid-stripe-tree feature as it create "-d raid0 -m raid1" FS. BUG: kernel NULL pointer dereference, address: 0000000000000020 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 0 P4D 0 Oops: Oops: 0000 [#1] PREEMPT SMP PTI CPU: 1 UID: 0 PID: 13 Comm: kworker/u32:1 Not tainted 6.11.0-rc7-BTRFS-ZNS+ #474 Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 Workqueue: writeback wb_workfn (flush-btrfs-5) RIP: 0010:btrfs_bio_end_io+0xae/0xc0 [btrfs] BTRFS error (device dm-0): bdev /dev/mapper/error-test errs: wr 2, rd 0, flush 0, corrupt 0, gen 0 RSP: 0018:ffffc9000006f248 EFLAGS: 00010246 RAX: 0000000000000000 RBX: ffff888005a7f080 RCX: ffffc9000006f1dc RDX: 0000000000000000 RSI: 000000000000000a RDI: ffff888005a7f080 RBP: ffff888011dfc540 R08: 0000000000000000 R09: 0000000000000001 R10: ffffffff82e508e0 R11: 0000000000000005 R12: ffff88800ddfbe58 R13: ffff888005a7f080 R14: ffff888005a7f158 R15: ffff888005a7f158 FS: 0000000000000000(0000) GS:ffff88803ea80000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000020 CR3: 0000000002e22006 CR4: 0000000000370ef0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: <TASK> ? __die_body.cold+0x19/0x26 ? page_fault_oops+0x13e/0x2b0 ? _printk+0x58/0x73 ? do_user_addr_fault+0x5f/0x750 ? exc_page_fault+0x76/0x240 ? asm_exc_page_fault+0x22/0x30 ? btrfs_bio_end_io+0xae/0xc0 [btrfs] ? btrfs_log_dev_io_error+0x7f/0x90 [btrfs] btrfs_orig_write_end_io+0x51/0x90 [btrfs] dm_submit_bio+0x5c2/0xa50 [dm_mod] ? find_held_lock+0x2b/0x80 ? blk_try_enter_queue+0x90/0x1e0 __submit_bio+0xe0/0x130 ? ktime_get+0x10a/0x160 ? lockdep_hardirqs_on+0x74/0x100 submit_bio_noacct_nocheck+0x199/0x410 btrfs_submit_bio+0x7d/0x150 [btrfs] btrfs_submit_chunk+0x1a1/0x6d0 [btrfs] ? lockdep_hardirqs_on+0x74/0x100 ? __folio_start_writeback+0x10/0x2c0 btrfs_submit_bbio+0x1c/0x40 [btrfs] submit_one_bio+0x44/0x60 [btrfs] submit_extent_folio+0x13f/0x330 [btrfs] ? btrfs_set_range_writeback+0xa3/0xd0 [btrfs] extent_writepage_io+0x18b/0x360 [btrfs] extent_write_locked_range+0x17c/0x340 [btrfs] ? __pfx_end_bbio_data_write+0x10/0x10 [btrfs] run_delalloc_cow+0x71/0xd0 [btrfs] btrfs_run_delalloc_range+0x176/0x500 [btrfs] ? find_lock_delalloc_range+0x119/0x260 [btrfs] writepage_delalloc+0x2ab/0x480 [btrfs] extent_write_cache_pages+0x236/0x7d0 [btrfs] btrfs_writepages+0x72/0x130 [btrfs] do_writepages+0xd4/0x240 ? find_held_lock+0x2b/0x80 ? wbc_attach_and_unlock_inode+0x12c/0x290 ? wbc_attach_and_unlock_inode+0x12c/0x29 ---truncated---
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存在安全漏洞,该漏洞源于split bios错误传播。
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 852eee62d31abd695cd43e1b875d664ed292a8ca ~ 22833d89b780ba0f9f66e19c477e7decf638edce -
Linux Linux 6.3 -

II. Public POCs for CVE-2024-50225

# 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-50225

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

Patches & Fixes for CVE-2024-50225 (2)

Same Patch Batch · Linux · 2024-11-09 · 49 CVEs total

CVE-2024-50215 8.1 HIGH nvmet-auth: assign dh_key to NULL after kfree_sensitive
CVE-2024-50246 7.8 HIGH fs/ntfs3: Add rough attr alloc_size check
CVE-2024-50237 7.8 HIGH wifi: mac80211: do not pass a stopped vif to the driver in .get_txpower
CVE-2024-50235 7.8 HIGH wifi: cfg80211: clear wdev->cqm_config pointer on free
CVE-2024-50250 7.8 HIGH fsdax: dax_unshare_iter needs to copy entire blocks
CVE-2024-50230 7.8 HIGH nilfs2: fix kernel bug due to missing clearing of checked flag
CVE-2024-50253 7.8 HIGH bpf: Check the validity of nr_words in bpf_iter_bits_new()
CVE-2024-50217 7.8 HIGH btrfs: fix use-after-free of block device file in __btrfs_free_extra_devids()
CVE-2024-50221 7.8 HIGH drm/amd/pm: Vangogh: Fix kernel memory out of bounds write
CVE-2024-50262 7.8 HIGH bpf: Fix out-of-bounds write in trie_get_next_key()
CVE-2024-50261 7.8 HIGH macsec: Fix use-after-free while sending the offloading packet
CVE-2024-50241 7.5 HIGH NFSD: Initialize struct nfsd4_copy earlier
CVE-2024-50256 7.5 HIGH netfilter: nf_reject_ipv6: fix potential crash in nf_send_reset6()
CVE-2024-50247 7.3 HIGH fs/ntfs3: Check if more than chunk-size bytes are written
CVE-2024-50248 7.1 HIGH ntfs3: Add bounds checking to mi_enum_attr()
CVE-2024-50222 7.0 HIGH iov_iter: fix copy_page_from_iter_atomic() if KMAP_LOCAL_FORCE_MAP
CVE-2024-50257 7.0 HIGH netfilter: Fix use-after-free in get_info()
CVE-2024-50239 phy: qcom: qmp-usb-legacy: fix NULL-deref on runtime suspend
CVE-2024-50244 fs/ntfs3: Additional check in ni_clear()
CVE-2024-50255 Bluetooth: hci: fix null-ptr-deref in hci_read_supported_codecs

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

IV. Related Vulnerabilities

V. Comments for CVE-2024-50225

No comments yet


Leave a comment