Linux Kernel iSER: Negative Length Login PDU Causes Out-of-Bounds memcpy
CVE-2026-53176 Published on June 25, 2026
IB/isert: Reject login PDUs shorter than ISER_HEADERS_LEN
In the Linux kernel, the following vulnerability has been resolved:
IB/isert: Reject login PDUs shorter than ISER_HEADERS_LEN
In drivers/infiniband/ulp/isert/ib_isert.c, isert_login_recv_done()
computes the login request payload length as wc->byte_len minus
ISER_HEADERS_LEN with no lower bound, and login_req_len is a signed int.
A remote iSER initiator can post a login Send work request carrying
fewer than ISER_HEADERS_LEN (76) bytes, so the subtraction underflows
and login_req_len becomes negative.
isert_rx_login_req() then reads that negative length back into a signed
int, takes size = min(rx_buflen, MAX_KEY_VALUE_PAIRS), and because the
min() is signed it keeps the negative value; the value is then passed as
the memcpy() length and sign-extended to a multi-gigabyte size_t. The
copy into the 8192-byte login->req_buf runs far out of bounds and
faults, crashing the target node. The login phase precedes iSCSI
authentication, so no credentials are required to reach this path.
Reject any login PDU shorter than ISER_HEADERS_LEN before the
subtraction, mirroring the existing early return on a failed work
completion, so login_req_len can never go negative. The upper bound was
already safe: a posted login buffer cannot deliver more than
ISER_RX_PAYLOAD_SIZE, so the difference stays at or below
MAX_KEY_VALUE_PAIRS and the existing min() clamps it; only the missing
lower bound needs to be added.
Vulnerability Analysis
Weakness Type
What is a Signed comparison Vulnerability?
The program checks a value to ensure that it is less than or equal to a maximum, but it does not also verify that the value is greater than or equal to the minimum.
CVE-2026-53176 has been classified to as a Signed comparison vulnerability or weakness.
Products Associated with CVE-2026-53176
stack.watch emails you whenever new vulnerabilities are published in Linux Kernel or Red Hat Enterprise Linux (RHEL). Just hit a watch button to start following.
Affected Versions
Linux:- Version b8d26b3be8b33682cf163274ed07479a70554633 and below 75ee6e4aa096aa9e7b2dd5c8ff98356e30aceefb is affected.
- Version b8d26b3be8b33682cf163274ed07479a70554633 and below e8a013c0c3ca2f6708341a56612a3f6d6921620a is affected.
- Version b8d26b3be8b33682cf163274ed07479a70554633 and below bd22740d7f14cb1c0289444cfd2c8d2938667c1d is affected.
- Version b8d26b3be8b33682cf163274ed07479a70554633 and below c1234229399f4af12c553b1b0ffd978eeba65548 is affected.
- Version b8d26b3be8b33682cf163274ed07479a70554633 and below c5584e089b5af7b3bf8bd5e8ca0560cbf32b0a47 is affected.
- Version b8d26b3be8b33682cf163274ed07479a70554633 and below df422fd273c96c2ee5beb80fc21adc8c70c29260 is affected.
- Version b8d26b3be8b33682cf163274ed07479a70554633 and below 1ca40b243277c9e88be5e00bd3e083f71aefb93e is affected.
- Version b8d26b3be8b33682cf163274ed07479a70554633 and below 29e7b925ae6df64894e82ab6419994dc25580a8a is affected.
- Version 3.10 is affected.
- Before 3.10 is unaffected.
- Version 5.10.259, <= 5.10.* is unaffected.
- Version 5.15.210, <= 5.15.* is unaffected.
- Version 6.1.176, <= 6.1.* is unaffected.
- Version 6.6.143, <= 6.6.* is unaffected.
- Version 6.12.94, <= 6.12.* is unaffected.
- Version 6.18.36, <= 6.18.* is unaffected.
- Version 7.0.13, <= 7.0.* is unaffected.
- Version 7.1, <= * is unaffected.