Get a Demo

Let's Patch It!

Book a short call with one our specialists, we'll walk you through how Endor Patches work, and ask you a few questions about your environment (like your primary programming languages and repository management). We'll also send you an email right after you fill out the form, feel free to reply with any questions you have in advance!

CVE

CVE-2026-64102

RDMA/siw: Reject MPA FPDU length underflow before signed receive math
Back to all
CVE

CVE-2026-64102

RDMA/siw: Reject MPA FPDU length underflow before signed receive math

In the Linux kernel, the following vulnerability has been resolved:

RDMA/siw: Reject MPA FPDU length underflow before signed receive math

A malicious connected siw peer can send an iWARP FPDU whose MPA length

field (chdr->mpalen, 16 bit big-endian, peer-controlled) is smaller

than the fixed DDP/RDMAP header for the announced opcode. Soft-iWARP

parses the full header in siwgethdr() based on iwarp_pktinfo[opcode]

.hdrlen, but never compares mpalen against that header length.

siwtcprx_data() then derives

    srx->fpdupartrem = be16tocpu(mpalen) - fpdupart_rcvd

                         + MPAHDRSIZE;

where fpdupartrcvd equals iwarppktinfo[opcode].hdrlen at this

point. For a tagged WRITE (hdrlen 16, MPAHDR_SIZE 2) the smallest

on-wire mpalen of 0 yields fpdupartrem = -14, and any mpalen below

hdrlen - MPAHDR_SIZE underflows to a negative int.

The signed value then flows into siwprocwrite()/siwprocrresp() as

    bytes = min(srx->fpdupartrem, srx->skb_new);

is handed to siwcheckmem() as an int len (whose interval check

addr + len > mem->va + mem->len is satisfied for a valid base when

len is negative), and reaches siwrxdata() -> siwrxkva() /

siwrxumem() -> skbcopybits() as a signed copy length. The header

copy branch in skbcopybits() promotes that to size_t, producing a

multi-gigabyte read.

KASAN under a KUnit harness that drives the real kernel TCP receive

path -- a loopback AF_INET socketpair, the malformed FPDU written via

kernelsendmsg, skdataready firing in softirq, tcpread_sock

dispatching to siwtcprx_data -- reports:

    BUG: KASAN: use-after-free in skbcopybits+0x284/0x480

    Read of size 4294967295 at addr ffff888...

    Call Trace:

     skbcopybits

     siwrxkva

     siwrxdata

     siwcheckmem

     siwprocwrite

     siwtcprx_data

     _tcpread_sock

     siwqpllpdataready

     tcpdataready

     tcpdataqueue

Add the missing invariant at the earliest point where the peer header

is fully assembled. iwarppktinfo[*].hdrlen - MPAHDRSIZE is exactly

the value the siw transmitter uses as the minimum mpa_len for each

opcode (drivers/infiniband/sw/siw/siw_qp.c:33), so this matches the

protocol contract. Out-of-range FPDUs terminate the connection with

TERMERRORLAYERLLP / LLPETYPEMPA / LLPECODEFPDUSTART -- which

is RFC 5044 Section 8 error code 3 ("Marker and ULPDU Length fields

do not agree on the start of an FPDU"), the correct framing-error

class for this inconsistency.

Package Versions Affected

Package Version
patch Availability
No items found.

Automatically patch vulnerabilities without upgrading

Fix Without Upgrading
Detect compatible fix
Apply safe remediation
Fix with a single pull request

CVSS Version

Severity
Base Score
CVSS Version
Score Vector
C
H
U
9.8
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
C
H
U
0
-
3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
C
H
U
-

Related Resources

No items found.

References

https://git.kernel.org/stable/c/0ce1bc9e46ecabe84772bb561e373c0d9876d6f2, https://git.kernel.org/stable/c/1012896f4225e8f801ff3c1648023845b66dfb11, https://git.kernel.org/stable/c/14553be882d9ce91749c9d64041de66e34ad8e70, https://git.kernel.org/stable/c/33a8b5e971e294ec2a7b74211c545e09efd8e9ac, https://git.kernel.org/stable/c/4a331582011d9e8089af8aa2a61ec6b4443bb245, https://git.kernel.org/stable/c/683f7cfbf514193d63c0efa079f3352bde84c2e0, https://git.kernel.org/stable/c/775b4dc9618a99a1fa48b57554041a5dc17e1336, https://git.kernel.org/stable/c/c7c0c0f4379dedec12d24dbb9dded5d2db7fd9f2, https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/64xxx/CVE-2026-64102.json, https://nvd.nist.gov/vuln/detail/CVE-2026-64102, https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Severity

9.8

CVSS Score
0
10

Basic Information

Base CVSS
9.8
EPSS Probability
0.005%
EPSS Percentile
0.41005%
Introduced Version
8b6a361b8c482f22ac99c3273285ff16b23fba91,5.3.0,5.11.0,5.16.0,6.2.0,6.7.0,6.13.0,6.19.0,0
Fix Available
0ce1bc9e46ecabe84772bb561e373c0d9876d6f2,5.10.258,5.15.209,6.1.175,6.6.142,6.12.92,6.18.34,7.0.11,6.1.176-1,6.12.94-1,5.15.0-1112.119~20.04.1,5.15.0-1117.126~20.04.1,5.15.0-1117.126~20.04.2,5.15.0-1112.122~20.04.1,5.15.0-186.196~20.04.1,5.15.0-1106.110~20.04.1,5.15.0-1107.113~20.04.1,5.15.0-184.194~20.04.1,5.15.0-1064.66~20.04.1,5.15.0-1109.115~20.04.1,7.0.0-28.28~24.04.1,7.0.0-1016.16~24.04.1,7.0.0-28.28.1~24.04.3,5.15.0-186.196,5.15.0-1112.119,5.15.0-1117.126,5.15.0-1112.122,5.15.0-1108.114,5.15.0-1095.103,5.15.0-1106.110,5.15.0-1107.113,5.15.0-1104.109,5.15.0-184.194,5.15.0-1107.108,5.15.0-1064.66,5.15.0-1053.53,5.15.0-1109.115,5.15.0-1075.79

Fix Critical Vulnerabilities Instantly

Secure your app without upgrading.
Fix Without Upgrading