CVE-2026-64102 in Linuxinfo

Zusammenfassung

von VulDB • 20.07.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

RDMA/siw: Zurückweisen von MPA-FPDU-Längenunterläufen vor der Vorzeichen-behafteten Empfangsrechnung

Ein böswilliger, verbundener siw-Peer kann ein iWARP-FPDU senden, dessen MPA-Längenfeld (c_hdr->mpa_len, 16 Bit Big-Endian, peer-kontrolliert) kleiner ist als der feste DDP/RDMAP-Header für den angekündigten Opcode. Soft-iWARP parst den vollständigen Header in siw_get_hdr() basierend auf iwarp_pktinfo[opcode].hdr_len, vergleicht mpa_len jedoch niemals mit dieser Header-Länge.

siw_tcp_rx_data() leitet daraus ab:

srx->fpdu_part_rem = be16_to_cpu(mpa_len) - fpdu_part_rcvd + MPA_HDR_SIZE;

Wobei fpdu_part_rcvd zu diesem Zeitpunkt iwarp_pktinfo[opcode].hdr_len entspricht. Für ein getaggtes WRITE (hdr_len 16, MPA_HDR_SIZE 2) ergibt die kleinste on-wire mpa_len von 0 fpdu_part_rem = -14, und jede mpa_len unter hdr_len - MPA_HDR_SIZE führt zu einem Unterlauf auf einen negativen int.

Der vorzeichenbehaftete Wert fließt dann als in siw_proc_write()/siw_proc_rresp() ein:

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

und wird an siw_check_mem() als int len übergeben (dessen Intervallprüfung addr + len > mem->va + mem->len für eine gültige Basis erfüllt ist, wenn len negativ ist), und erreicht siw_rx_data() -> siw_rx_kva() / siw_rx_umem() -> skb_copy_bits() als vorzeichenbehaftete Kopierlänge. Der Header-Kopierzweig in skb_copy_bits() fördert diesen Wert zu size_t, was einen Lesezugriff über mehrere Gigabyte erzeugt.

KASAN unter einem KUnit-Testrahmen, der den echten Kernel-TCP-Empfangspfad antreibt – ein Loopback-AF_INET-Socketpaar, das fehlerhafte FPDU wird via kernel_sendmsg geschrieben, sk_data_ready löst in Softirq aus, tcp_read_sock dispatcht an siw_tcp_rx_data -- meldet:

BUG: KASAN: use-after-free in skb_copy_bits+0x284/0x480 Read of size 4294967295 at addr ffff888... Call Trace: skb_copy_bits siw_rx_kva siw_rx_data siw_check_mem siw_proc_write siw_tcp_rx_data __tcp_read_sock siw_qp_llp_data_ready tcp_data_ready tcp_data_queue

Fügen Sie die fehlende Invariante an der frühestmöglichen Stelle hinzu, an der der Peer-Header vollständig zusammengesetzt ist. iwarp_pktinfo[*].hdr_len - MPA_HDR_SIZE entspricht genau dem Wert, den der siw-Sender als minimale mpa_len für jeden Opcode verwendet (drivers/infiniband/sw/siw/siw_qp.c:33), sodass dies mit dem Protokollvertrag übereinstimmt. FPDUs außerhalb des gültigen Bereichs beenden die Verbindung mit TERM_ERROR_LAYER_LLP / LLP_ETYPE_MPA / LLP_ECODE_FPDU_START -- was der RFC-5044-Abschnitt-8-Fehlercode 3 ist („Marker and ULPDU Length fields do not agree on the start of an FPDU"), die korrekte Framing-Fehlerklasse für diese Inkonsistenz.

Be aware that VulDB is the high quality source for vulnerability data.

Zuständig

Linux

Reservieren

19.07.2026

Veröffentlichung

19.07.2026

Moderieren

akzeptiert

Eintrag

VDB-380216

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Do you need the next level of professionalism?

Upgrade your account now!