HIGH Introduced in 6.16
rxe ODP Write Bypass
CVE-2026-98361
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.8HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: RDMA/rxe: Restore HMM_PFN_WRITE check in ODP write paths Commit 0b261d7c1cd3 ("RDMA/rxe: Break endless pagefault loop for RO pages") dropped the access permission test from rxe_check_pagefault() and left only HMM_PFN_VALID. A page faulted in read-only, for example a page-cache folio behind a PROT_READ file mapping, then satisfies the check and ODP write operations (RDMA WRITE, RDMA READ response, SEND payload, atomics) modify it through kmap without ever breaking CoW. An unprivileged user can register an ODP MR over such a mapping and have incoming RDMA traffic overwrite the page cache of a file it only holds O_RDONLY, including /etc/passwd or setuid binaries. This is the same primitive class as Dirty COW and CVE-2022-2590. mlx5 has the missing invariant: its ODP path sets the device write bit only for pfns that carry HMM_PFN_WRITE. Restore it in rxe by requiring HMM_PFN_WRITE in rxe_check_pagefault() for every operation except RXE_PAGEFAULT_RDONLY. A write to a non-writable VMA now fails the one fault attempt with -EPERM from hmm_vma_fault() instead of re-faulting forever. For a writable VMA the fault breaks CoW and the write lands in the private page. Keep pmem flushes on the read-only check. arch_wb_cache_pmem() never modifies memory, and the FLUSH access bits do not make the umem writable, so classifying flushes as writes would make every flush against a flush-only MR fail.
02KernelScan AI Analysis
Risk summary
An unprivileged local user on a system with the software RDMA (rxe) driver and on-demand paging enabled can register a memory region over a read-only file mapping and let incoming RDMA traffic overwrite the shared page cache of files they only have read access to, such as /etc/passwd or setuid binaries. This yields the same arbitrary file-content overwrite primitive as Dirty COW, leading to full privilege escalation. Systems without RDMA/rxe or without ODP support are not affected.
Vulnerability analysis
The software RDMA driver's on-demand-paging page fault check only verified that a page was present, dropping the test for whether the page was mapped writable. As a result, when an RDMA write operation targeted a memory region registered over a read-only file mapping, the kernel wrote directly into the shared page-cache page instead of triggering a copy-on-write, so the changes became visible in the underlying file on disk. The fix restores the write-permission requirement: any RDMA operation that writes to the region now demands a writable mapping, so a read-only mapping fails the fault cleanly, while a writable mapping breaks copy-on-write and the write lands in the private page. An unprivileged local user can trigger this by registering an on-demand-paging memory region over a file they opened read-only and receiving RDMA traffic, provided the rxe driver and ODP support are enabled on the system.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.18 | 6.16 | 6.18.54 | c6f56982ec5c |
| 7.2 | 6.16 | 7.2.8 | 2d6c6f94d3e1 |
| mainline | 6.16 | 7.3-rc4 | 769001ce838d |