Direct naar de inhoud
Kritieke cyberalerts voor jouw sector & systemen — direct in je inbox. Aanmelden →
CVE's Videos Dagbriefing

← Terug naar CVE-database

CVE-2026-53176

CRITICAL · 9.8 CVSS Gepubliceerd: CWE-191

Beschrijving NL

In de Linux kernel is de volgende kwetsbaarheid verholpen:

IB/ISERT: Weiger login PDU's korter DAN ISER_HEADERS_LEN

In drivers/infiniband/ulp/isert/ib_isert.c, isert_login_recv_done()
berekent de lengte van de payload van het inlogverzoek alswc- >byte_len minus
ISER_HEADERS_LEN zonder ondergrens, en login_req_len is een ondertekende int. Een externe iSER-initiator kan een login plaatsen Werkaanvraag verzenden met
minder dan ISER_HEADERS_LEN (76) bytes, dus de aftrekking onderstroomt
en login_req_len wordt negatief. isert_rx_login_req() leest dan die negatieve lengte terug in een ondertekende
int, neemt grootte = min(rx_buflen, MAX_KEY_VALUE_PAIRS), en omdat de
min() is ondertekend, behoudt het de negatieve waarde; de waarde wordt dan doorgegeven als
de memcpy() lengte en teken-uitgebreid tot een multi-gigabyte grootte_t. De
kopie in de 8192-byte login->req_buf loopt ver buiten de perken en
storingen, waardoor het doelknooppunt crasht. De inlogfase gaat vooraf aan iSCSI
authenticatie, dus er zijn geen inloggegevens nodig om dit pad te bereiken. Weiger elke inlog-PDU die korter is dan ISER_HEADERS_LEN vóór de
aftrekken, het bestaande vroege rendement op een mislukt werk spiegelen
voltooiing, dus login_req_len kan nooit negatief worden. De bovengrens was
al veilig: een geposte inlogbuffer kan niet meer leveren dan
ISER_RX_PAYLOAD_SIZE, dus het verschil blijft op of onder
MAX_KEY_VALUE_PAIRS en de bestaande min() klemt het vast; alleen de ontbrekende
ondergrens moet worden toegevoegd.

Origineel (Engels) tonen

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.

Vendors

Linux

Affected products

Linux Kernel

References