ipmi: Fix use-after-free of cmd_rcvr in _ipmi_destroy_user()
- 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.18.50, 7.2.4
- 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
Summary
In the Linux kernel, the following vulnerability has been resolved: ipmi: Fix use-after-free of cmd_rcvr in _ipmi_destroy_user() Commit 9e91f8a6c868 ("ipmi:msghandler: Remove srcu for the ipmi_interfaces list") dropped the synchronize_rcu() between unlinking the command receivers from intf->cmd_rcvrs and freeing them, updating only the comment that explains why the barrier is needed. The cmd_rcvrs list is still traversed under plain RCU: find_cmd_rcvr() walks it inside rcu_read_lock(), and handle_ipmb_get_msg_cmd() borrows rcvr->user from that lookup within the same read-side section. Without the grace period, _ipmi_destroy_user() can kfree() a cmd_rcvr while a reader still holds a pointer to it, causing a use-after-free. The rework only made srcu unnecessary for the interfaces list; the cmd_rcvrs list still relies on plain RCU. Restore the synchronize_rcu() before freeing the receivers.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 9e91f8a6c8688e27f4ccce7db457da87d6458836 · fixed in 3088e41292fecf132f85f79af5ee4d620b9ff1b4; From 9e91f8a6c8688e27f4ccce7db457da87d6458836 · fixed in 5dc0b2a9af95a97861c1bffaf1687a3173e395c5; From 9e91f8a6c8688e27f4ccce7db457da87d6458836 · fixed in 05ec76cfbce653e07cec19b9b8b20e33449d5d87
- Linux Linux
6.16
- KernelLinux
From 6.16.0 · fixed in 6.18.50; From 6.19.0 · fixed in 7.2.4