KernelScan.io

HIGH Introduced in 4.8

rxe WqeSge OOB

CVE-2026-92525

CVSS 7.1 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H

KernelScan AI7.1HIGH

01

In the Linux kernel, the following vulnerability has been resolved: RDMA/rxe: Validate num_sge/cur_sge before indexing wqe->dma.sge[] For a user QP, qp->sq.queue is a ring the application writes directly, so rxe_post_send() takes the is_user branch and only schedules send_task without validating the WQE. rxe_requester() consumes it in place via req_next_wqe() and calls copy_data(), which indexes &wqe->dma.sge[cur_sge] with the attacker-controlled num_sge/cur_sge. Only the kernel path bounds num_sge (validate_send_wr()); the user WQE is never checked, so a local unprivileged user can post a WQE with an out-of-range cur_sge or oversized num_sge and force an out-of-bounds read of the per-WQE sge array in copy_data() (vmalloc OOB read, local DoS). Bound num_sge to qp->sq.max_sge in rxe_requester() before use, the way get_srq_wqe() already guards SRQ entries, and bound cur_sge only when the WQE carries payload (dma.resid): copy_data() returns early on a zero-length copy before touching dma->sge[], so a zero-payload WQE -- the only kind a max_sge == 0 QP can post -- stays valid. Reproduced under KASAN; the vmalloc-out-of-bounds in copy_data() is gone.

02

Engine v0.6.0

Risk summary

A local unprivileged user with access to a Soft RoCE (RXE) RDMA device can trigger an out-of-bounds read in the kernel by posting a send request with invalid scatter-gather parameters. The bug causes a kernel crash (local denial of service) and may indirectly leak limited kernel memory. The rxe module must be loaded and an RDMA device configured by an administrator for the attack surface to exist.

Affecteddrivers/infiniband/sw/rxe/rxe_req.c (RDMA/rxe)

Vulnerability analysis

In the Soft RoCE driver, work queue entries for user-mode queue pairs are written directly by the application into a shared memory ring without validation. When the kernel processes these entries, it uses the application-supplied scatter-gather count and index to access a fixed-size array, but never checks that these values are in range. A local user who can access an RXE RDMA device can post a send request with an out-of-range index or oversized count, forcing the kernel to read beyond the array bounds in vmalloc memory, which typically crashes the kernel. The fix adds bounds validation in the send processing path before the array is indexed, rejecting work entries whose scatter-gather parameters exceed the queue pair's configured limits. The vulnerability is reachable by any local user with access to an RDMA device, which requires the rxe module to be loaded and a device to be configured by an administrator.

03

BranchIntroducedFixed inPatch commit
6.14.86.1.18869d3ccf6543f
6.64.86.6.157750bba6ce9bb
6.124.86.12.110c067aa7b231e
7.24.87.2.65ec111ddc1f7
mainline4.87.3-rc1126c757e4cd4
6.184.86.18.5213cb7160e5b7
cip/6.124.86.12.111-cip32c067aa7b231e