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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2024-45003— vfs: Don't evict inode under the inode lru traversing context

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存在安全漏洞,该漏洞源于处理inode回收时,文件系统可能发生死锁。

AI Predicted 3.3 Difficulty: Moderate EPSS 0.17% · P6

Possible ATT&CK Techniques 1 AI

T1499 · Endpoint Denial of Service

Affected Version Matrix 16

VendorProduct Version RangeStatus
Linux Linux e50e5129f384ae282adebfb561189cdb19b81cee< 3525ad25240dfdd8c78f3470911ed10aa727aa72 affected
e50e5129f384ae282adebfb561189cdb19b81cee< 03880af02a78bc9a98b5a581f529cf709c88a9b8 affected
e50e5129f384ae282adebfb561189cdb19b81cee< cda54ec82c0f9d05393242b20b13f69b083f7e88 affected
e50e5129f384ae282adebfb561189cdb19b81cee< 437741eba63bf4e437e2beb5583f8633556a2b98 affected
e50e5129f384ae282adebfb561189cdb19b81cee< b9bda5f6012dd00372f3a06a82ed8971a4c57c32 affected
e50e5129f384ae282adebfb561189cdb19b81cee< 9063ab49c11e9518a3f2352434bb276cc8134c5f affected
e50e5129f384ae282adebfb561189cdb19b81cee< 2a0629834cd82f05d424bbc193374f9a43d1f87d affected
4.13 affected
… +8 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2024-45003

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
vfs: Don't evict inode under the inode lru traversing context
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: vfs: Don't evict inode under the inode lru traversing context The inode reclaiming process(See function prune_icache_sb) collects all reclaimable inodes and mark them with I_FREEING flag at first, at that time, other processes will be stuck if they try getting these inodes (See function find_inode_fast), then the reclaiming process destroy the inodes by function dispose_list(). Some filesystems(eg. ext4 with ea_inode feature, ubifs with xattr) may do inode lookup in the inode evicting callback function, if the inode lookup is operated under the inode lru traversing context, deadlock problems may happen. Case 1: In function ext4_evict_inode(), the ea inode lookup could happen if ea_inode feature is enabled, the lookup process will be stuck under the evicting context like this: 1. File A has inode i_reg and an ea inode i_ea 2. getfattr(A, xattr_buf) // i_ea is added into lru // lru->i_ea 3. Then, following three processes running like this: PA PB echo 2 > /proc/sys/vm/drop_caches shrink_slab prune_dcache_sb // i_reg is added into lru, lru->i_ea->i_reg prune_icache_sb list_lru_walk_one inode_lru_isolate i_ea->i_state |= I_FREEING // set inode state inode_lru_isolate __iget(i_reg) spin_unlock(&i_reg->i_lock) spin_unlock(lru_lock) rm file A i_reg->nlink = 0 iput(i_reg) // i_reg->nlink is 0, do evict ext4_evict_inode ext4_xattr_delete_inode ext4_xattr_inode_dec_ref_all ext4_xattr_inode_iget ext4_iget(i_ea->i_ino) iget_locked find_inode_fast __wait_on_freeing_inode(i_ea) ----→ AA deadlock dispose_list // cannot be executed by prune_icache_sb wake_up_bit(&i_ea->i_state) Case 2: In deleted inode writing function ubifs_jnl_write_inode(), file deleting process holds BASEHD's wbuf->io_mutex while getting the xattr inode, which could race with inode reclaiming process(The reclaiming process could try locking BASEHD's wbuf->io_mutex in inode evicting function), then an ABBA deadlock problem would happen as following: 1. File A has inode ia and a xattr(with inode ixa), regular file B has inode ib and a xattr. 2. getfattr(A, xattr_buf) // ixa is added into lru // lru->ixa 3. Then, following three processes running like this: PA PB PC echo 2 > /proc/sys/vm/drop_caches shrink_slab prune_dcache_sb // ib and ia are added into lru, lru->ixa->ib->ia prune_icache_sb list_lru_walk_one inode_lru_isolate ixa->i_state |= I_FREEING // set inode state inode_lru_isolate __iget(ib) spin_unlock(&ib->i_lock) spin_unlock(lru_lock) rm file B ib->nlink = 0 rm file A iput(ia) ubifs_evict_inode(ia) ubifs_jnl_delete_inode(ia) ubifs_jnl_write_inode(ia) make_reservation(BASEHD) // Lock wbuf->io_mutex ubifs_iget(ixa->i_ino) iget_locked find_inode_fast __wait_on_freeing_inode(ixa) | iput(ib) // ib->nlink is 0, do evict | ubifs_evict_inode | ubifs_jnl_delete_inode(ib) ↓ ubifs_jnl_write_inode ABBA deadlock ←-----make_reservation(BASEHD) dispose_list // cannot be executed by prune_icache_sb wake_up_bit(&ixa->i_state) Fix the possible deadlock by using new inode state flag I_LRU_ISOLATING to pin the inode in memory while inode_lru_isolate( ---truncated---
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存在安全漏洞,该漏洞源于处理inode回收时,文件系统可能发生死锁。
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 e50e5129f384ae282adebfb561189cdb19b81cee ~ 3525ad25240dfdd8c78f3470911ed10aa727aa72 -
Linux Linux 4.13 -

II. Public POCs for CVE-2024-45003

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

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

Patches & Fixes for CVE-2024-45003 (5)

Same Patch Batch · Linux · 2024-09-04 · 58 CVEs total

CVE-2024-44984 10.0 CRITICAL bnxt_en: Fix double DMA unmapping for XDP_REDIRECT
CVE-2024-44998 9.8 CRITICAL atm: idt77252: prevent use after free in dequeue_rx()
CVE-2024-44985 9.8 CRITICAL ipv6: prevent possible UAF in ip6_xmit()
CVE-2024-44970 9.8 CRITICAL net/mlx5e: SHAMPO, Fix invalid WQ linked list unlink
CVE-2024-44994 8.8 HIGH iommu: Restore lost return in iommu_report_device_fault()
CVE-2024-44988 8.8 HIGH net: dsa: mv88e6xxx: Fix out-of-bound access
CVE-2024-44986 8.1 HIGH ipv6: fix possible UAF in ip6_finish_output2()
CVE-2024-44973 8.1 HIGH mm, slub: do not call do_slab_free for kfence object
CVE-2024-44966 7.8 HIGH binfmt_flat: Fix corruption when not offsetting data start
CVE-2024-44949 7.8 HIGH parisc: fix a possible DMA corruption
CVE-2024-44959 7.8 HIGH tracefs: Use generic inode RCU for synchronizing freeing
CVE-2024-44951 7.8 HIGH serial: sc16is7xx: fix TX fifo corruption
CVE-2024-44954 7.8 HIGH ALSA: line6: Fix racy access to midibuf
CVE-2024-44967 7.8 HIGH drm/mgag200: Bind I2C lifetime to DRM device
CVE-2024-44974 7.8 HIGH mptcp: pm: avoid possible UaF when selecting endp
CVE-2024-44978 7.8 HIGH drm/xe: Free job before xe_exec_queue_put
CVE-2024-44987 7.8 HIGH ipv6: prevent UAF in ip6_send_skb()
CVE-2024-44995 7.8 HIGH net: hns3: fix a deadlock problem when config TC during resetting
CVE-2024-44997 7.8 HIGH net: ethernet: mtk_wed: fix use-after-free panic in mtk_wed_setup_tc_block_cb()
CVE-2024-45000 7.8 HIGH fs/netfs/fscache_cookie: add missing "n_accesses" check

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

IV. Related Vulnerabilities

V. Comments for CVE-2024-45003

No comments yet


Leave a comment