blk-cgroup: fix UAF in __blkcg_rstat_flush()
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.4, 6.6.144, 6.12.95, 6.18.38, 7.1.3
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: blk-cgroup: fix UAF in __blkcg_rstat_flush() When multiple blkgs in the same blkcg are released concurrently, a use-after-free can occur. The race happens when one blkg's __blkcg_rstat_flush() removes another blkg's iostat entries via llist_del_all(). The second blkg sees an empty list and proceeds to free itself while the first is still iterating over its entries. Move the flush from __blkg_release() (RCU callback) to blkg_release() (before call_rcu). This ensures the RCU grace period waits for any concurrent flush's rcu_read_lock() section to complete before freeing.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 20cb1c2fb7568a6054c55defe044311397e01ddb · fixed in 96e545410c4f74c89d496c1d5d9ef8d08f14368b; From 20cb1c2fb7568a6054c55defe044311397e01ddb · fixed in bbebd9425cad3573d1527441753899b926525a0f; From 20cb1c2fb7568a6054c55defe044311397e01ddb · fixed in 5e5b7f2ef854936e95dceb6a2fdfefcb7152d2c6; From 20cb1c2fb7568a6054c55defe044311397e01ddb · fixed in afebe44facc48a61761e885bbb7f0380d4a603ec; From 20cb1c2fb7568a6054c55defe044311397e01ddb · fixed in 0ab5ee5a1badb58cbb2242617cb01a4972b1f2a2; From 6.3.9 · fixed in 6.4
- Linux Linux
6.4
- KernelLinux
From 6.4.0 · fixed in 6.6.144; From 6.7.0 · fixed in 6.12.95; From 6.13.0 · fixed in 6.18.38; From 6.19.0 · fixed in 7.1.3