RDMA/core: Fix potential use after free in uverbs_free_dmah()
- 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.52, 7.2.6
- 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: RDMA/core: Fix potential use after free in uverbs_free_dmah() When accessing a dmah via the netlink path the only synchronization mechanism for the said dmah is rdma_restrack_get(). Currently, rdma_restrack_del() is invoked at the end of uverbs_free_dmah(), which is too late, since by that point vendor-specific resources associated with the dmah might already be freed. This can leave a short window where the dmah remains accessible through restrack, leading to a potential use-after-free. Fix this by moving the rdma_restrack_begin_del() call to the start of uverbs_free_dmah(), ensuring that the dmah is removed from restrack before its internal resources are released. This guarantees that no new users hold references to a dmah that is in the process of destruction. In addition, this change preserves the intended inverted order between create and destroy routines: resources are added to restrack at the end of successful creation, and hence shall be removed from the restrack first thing during the destruction flow, which keeps the lifecycle management consistent and predictable.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From d83edab562a496a42720902a1d2effccd05c37c5 · fixed in 8b22722f45a29a7c0900b1d4d0bc5da5492ece10; From d83edab562a496a42720902a1d2effccd05c37c5 · fixed in bfc119a40c04bbe3daad826f2160ccbfae6c64ce; From d83edab562a496a42720902a1d2effccd05c37c5 · fixed in 2696626a0be5877f445fb647c25ef43930c777e6
- Linux Linux
6.17
- KernelLinux
From 6.17.0 · fixed in 6.18.52; From 6.19.0 · fixed in 7.2.6