CVE-2026-89530
Critical · 9.8CVSS
9.8
EPSS
0.5%
Published
Sep 11, 2026
CISA due date
—
Cloudanix analysis
A bug in how some Linux file servers send large replies over high-speed network hardware can let a remote attacker crash the machine or take it over.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Remote Code Execution
- Component
- OS kernel
- Class
- Buffer Overflow
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The Linux kernel RPC-over-RDMA server (svcrdma) linearizes oversized inline replies into a fixed-size pull-up buffer (sc_max_req_size) when the reply needs more scatter/gather entries than the RDMA device Send Queue supports. svc_rdma_xb_linearize() then writes past the end of sctxt->sc_xprt_buf, corrupting adjacent slab objects, and posts an SGE whose length exceeds the mapped region so the RNIC also DMA-reads out of bounds. The result is a kernel heap/slab overflow plus an unbounded device read on the NFS/RDMA reply path.
Why it matters to the business
Any Red Hat Enterprise Linux 8, 9, or 10 host acting as an NFS (or other RPC) server over RDMA can be taken down or fully compromised from the network with no credentials and no user action. Consequences include kernel panic and storage-service outage, leak of kernel memory, and potential kernel-level code execution on file servers that use InfiniBand, RoCE, or iWARP. The issue is not in CISA KEV, is not tied to ransomware, and has no public exploit 34 days after publication, but the unauthenticated network, high-integrity kernel impact still justifies treating RDMA-enabled NFS servers as urgent to patch.
How an attack unfolds
An unauthenticated peer that can send RPC-over-RDMA to a kernel NFS server crafts a call that demands a large reply (commonly an NFS READ payload) but supplies neither a Write list nor a Reply chunk. When that reply exceeds the device SGE budget, the server takes the pull-up path and copies the entire reply into a buffer sized only for maximum requests. The copy overruns slab memory and the subsequent RDMA Send reads past the mapped buffer. The attacker can use the resulting kernel memory corruption or RNIC over-read to crash the host or, with further heap-shaping, attempt privilege escalation to kernel context. No named threat actors or in-the-wild campaigns are associated with this flaw.
How to fix it
Apply the Red Hat kernel updates in RHSA-2026:77500: RHEL 10 kernel 6.12.0-211.64.1.el10_2; RHEL 9 kernel 5.14.0-687.56.1.el9_8; RHEL 8 kernel 4.18.0-553.172.1.el8_10; RHEL 8 real-time kernel-rt 4.18.0-553.172.1.rt7.513.el8_10. Reboot into the new kernel. If you cannot patch immediately, disable NFS/RPC-over-RDMA (do not load svcrdma / rpcrdma, and stop advertising nfsrdma) and serve NFS only over TCP/UDP until the fixed kernel is running. Upstream, the helper now returns -E2BIG and fails the call with ERR_CHUNK instead of overflowing.
How to confirm the fix worked
Confirm uname -r matches a listed fixed build (or later) for the installed RHEL major and that the running image is that kernel after reboot. On still-vulnerable hosts, check that svcrdma/rpcrdma are loaded and that nfsd is exporting over RDMA (nfsstat/rpcinfo for nfsrdma, rdma devices present). After patching, a reply that cannot fit sc_max_req_size should be rejected with an RDMA ERR_CHUNK-style failure rather than a kernel oops; do not use crafted overflow payloads to test. Review package changelog for the svcrdma pull-up / -E2BIG fix.
Typical attack path
- Locate a Linux NFS or RPC server that advertises RPC-over-RDMA (portmapper/nfsrdma, InfiniBand/RoCE/iWARP).
- Open an RDMA connection and issue an RPC that requests a large inline reply without a Write list or Reply chunk.
- Force the SGE-exhaustion pull-up path so the kernel linearizes the reply into the undersized sc_xprt_buf.
- Trigger slab overflow and an over-length RDMA Send against adjacent kernel memory.
- Use the crash for denial of service or attempt to convert the heap corruption into kernel code execution and persistence.
How to detect it
There is no public exploit and no associated threat actors, so look for crash and memory-corruption evidence rather than a known implant. On NFS/RDMA servers, search kernel logs (journald, /var/log/messages, kdump/vmcore) around the publication window and any unexplained nfsd outages for oops/panic in svcrdma reply pull-up, slab redzone or out-of-bounds reports, and RDMA Send completions with unexpected lengths. Capture whether rpcrdma/svcrdma were loaded and whether clients issued large READ-like RPCs without Write lists or Reply chunks. Preserve vmcores if slab corruption or an RNIC read beyond a mapped SGE is suspected. Network traces of RPC-over-RDMA showing oversized inline replies with empty Write/Reply chunk lists are supporting context, not proof of exploitation.
- svc_rdma_pull_up_reply_msg
- svc_rdma_xb_linearize
- svc_rdma_pull_up_needed
- svcrdma
- rpcrdma
- slab-out-of-bounds
- Redzone overwritten
- Oops:.*svcrdma
- nfsrdma
- ERR_CHUNK
What your security team should do
- Patch and reboot RDMA-enabled NFS/RPC servers to the RHSA-2026:77500 kernel builds first; treat these as the highest-priority kernel update this cycle.
- Until patched, disable svcrdma/rpcrdma and NFS-over-RDMA so the vulnerable pull-up path cannot be reached from the network.
- Inventory hosts with RDMA NICs and nfs-server/nfs-kernel-server roles so no InfiniBand/RoCE/iWARP file server is missed.
- Restrict RDMA/NFS listener exposure to trusted storage fabrics; do not present nfsrdma on general-purpose or internet-facing networks.
- After reboot, verify the running kernel version and that nfsd RDMA listeners match the intended (patched) configuration.
- Watch kernel logs for svcrdma/slab anomalies on unpatched hosts; there is no KEV or known exploit, but the unauthenticated kernel overflow warrants monitoring until all systems are upgraded.
The record
In the Linux kernel, the following vulnerability has been resolved: svcrdma: Reject inline replies that overflow the pull-up buffer An RPC-over-RDMA client can request a reply, such as an NFS READ payload, without providing a Write list or a Reply chunk to carry it. When such a reply needs more scatter/gather entries than the device's Send Queue supports, svc_rdma_pull_up_needed() selects pull-up and svc_rdma_pull_up_reply_msg() linearizes the whole reply into sctxt->sc_xprt_buf. That buffer is only sc_max_req_size bytes, while the reply on this path is bounded only by the client's request, so svc_rdma_xb_linearize() copies past the end of the buffer and corrupts adjacent slab memory. The oversized length is then stored in sc_sges[0].length and posted, so the device also reads beyond the mapped region. The SGE-exhaustion branch is the only pull-up path that can exceed the buffer: the threshold branch pulls up only replies smaller than RPCRDMA_PULLUP_THRESH, and replies that fit the device's SGE budget are sent directly without linearization. Make svc_rdma_pull_up_needed() report -E2BIG when the reply it would pull up cannot fit sc_max_req_size, and fail the request with ERR_CHUNK as RFC 8166 Section 4.5.3 directs rather than dropping the connection. The helper no longer answers a simple yes/no question: it now reports pull-up, no pull-up, or -E2BIG for a reply too large to linearize. Rename svc_rdma_pull_up_needed() to svc_rdma_check_pull_up() so its name no longer implies a boolean predicate.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|