CVE-2026-23322
N/A
Summary
In the Linux kernel, the following vulnerability has been resolved:
ipmi: Fix use-after-free and list corruption on sender error
The analysis from Breno:
When the SMI sender returns an error, smi_work() delivers an error response but then jumps back to restart without cleaning up properly:
- intf->curr_msg is not cleared, so no new message is pulled
- newmsg still points to the message, causing sender() to be called again with the same message
- If sender() fails again, deliver_err_response() is called with the same recv_msg that was already queued for delivery
This causes list_add corruption ("list_add double add") because the recv_msg is added to the user_msgs list twice. Subsequently, the corrupted list leads to use-after-free when the memory is freed and reused, and eventually a NULL pointer dereference when accessing recv_msg->done.
The buggy sequence:
sender() fails -> deliver_err_response(recv_msg) // recv_msg queued for delivery -> goto restart // curr_msg not cleared! sender() fails again (same message!) -> deliver_err_response(recv_msg) // tries to queue same recv_msg -> LIST CORRUPTION
Fix this by freeing the message and setting it to NULL on a send error. Also, always free the newmsg on a send error, otherwise it will leak.
Affected Software
| Vendor | Product | Version Range | Status |
|---|---|---|---|
| Linux | Linux | 9cf93a8fa9513c6d3cc65bdd50e05c1355cef322 < c08ec55617cb9674a060a3392ea08391ab2a4f74 | affected |
| Linux | Linux | 9cf93a8fa9513c6d3cc65bdd50e05c1355cef322 < 65ff5d1e4410df05edfbeb7bf2d62f7681ce1d53 | affected |
| Linux | Linux | 9cf93a8fa9513c6d3cc65bdd50e05c1355cef322 < 594c11d0e1d445f580898a2b8c850f2e3f099368 | affected |
| Linux | Linux | 6.18 | affected |
| Linux | Linux | 0 < 6.18 | unaffected |
| Linux | Linux | 6.18.17 <= 6.18.* | unaffected |
| Linux | Linux | 6.19.7 <= 6.19.* | unaffected |
| Linux | Linux | 7.0 <= * | unaffected |
Weaknesses
References
- https://git.kernel.org/stable/c/c08ec55617cb9674a060a3392ea08391ab2a4f74
- https://git.kernel.org/stable/c/65ff5d1e4410df05edfbeb7bf2d62f7681ce1d53
- https://git.kernel.org/stable/c/594c11d0e1d445f580898a2b8c850f2e3f099368
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.