RDMA/rxe: Fix UAF in ODP init error-handling path
- 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/rxe: Fix UAF in ODP init error-handling path rxe_odp_mr_init_user() stores &umem_odp->umem in mr->umem before calling rxe_odp_init_pages(). If rxe_odp_init_pages() fails, rxe_odp_mr_init_user() releases umem_odp and returns an error. rxe_reg_user_mr() then unwinds the error through rxe_cleanup(), rxe_mr_cleanup(), ib_umem_release(mr->umem). There is an IS_ERR_OR_NULL(umem) check at the start of ib_umem_release(). But since mr->umem is NOT reset to NULL in the error handling path of rxe_odp_mr_init_user(), the check passes and it reads already-freed fields like umem->is_dmabuf, causing UAF. Fix the UAF by clearing mr->umem after releasing the failed ODP umem so the MR cleanup path does not release it again.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From d03fb5c6599e31b90c6b5f65d43d6ccc6b49eb91 · fixed in 5f1933163327c9f1c8f2a341c6cb551aaf231ff9; From d03fb5c6599e31b90c6b5f65d43d6ccc6b49eb91 · fixed in 4cfb448705da3171d44d9cbe7be53ff03284d532; From d03fb5c6599e31b90c6b5f65d43d6ccc6b49eb91 · fixed in 51f2c8d2c99fc1f452f7113c08a35edcc4bf8732
- Linux Linux
6.15
- KernelLinux
From 6.15.0 · fixed in 6.18.52; From 6.19.0 · fixed in 7.2.6