CVE-2026-63887 in Linux
Zusammenfassung
von VulDB • 19.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
scsi: target: iscsi: Begrenzung der Anhängungen von iscsi_encode_text_output() an rsp_buf
iscsi_encode_text_output() hängt „key=value\0“-Datensätze an login->rsp_buf, einen 8192-Byte-kzalloc(MAX_KEY_VALUE_PAIRS)-Puffer, der in iscsit_alloc_login_setup_buffer() allokiert wurde. Die drei sprintf()-Aufrufstellen in dieser Funktion (Zeilen 1398, 1411, 1424 in v7.1-rc2) überprüfen niemals die verbleibende Pufferkapazität:
*length += sprintf(output_buf, "%s=%s", er->key, er->value); *length += 1; output_buf = textbuf + *length;
Die Obergrenze von 8192 Byte in iscsi_target_check_login_request() begrenzt die *Input*-Login-PDU-Nutzlast, aber eine einzelne PDU kann bis zu 2048 minimale vier-Byte „a=b\0“-Paare tragen, wobei jeder unbekannte Schlüssel über iscsi_add_notunderstood_response() zu einem 16-Byte-Ausgabedatensatz „a=NotUnderstood\0“ erweitert wird. 2048 * 16 = 32 KiB Ausgabe in einen 8-KiB-Puffer, was zu einer Heap-Überschreitung (Heap Overrun) von ca. 24 KiB im kmalloc-8k-Slab führt.
Die Korrektur führt eine statische Hilfsfunktion iscsi_encode_text_record() ein, die snprintf() mit einer pro Aufruf durchgeführten Begrenzungsprüfung gegen den verbleibenden Puffer verwendet und einen u32 textbuf_size-Parameter an iscsi_encode_text_output() weiterleitet. Beide Aufrufstellen in iscsi_target_handle_csg_zero() (PHASE_SECURITY) und iscsi_target_handle_csg_one() (PHASE_OPERATIONAL) übergeben MAX_KEY_VALUE_PAIRS. Bei einem Überlauf protokolliert der Encoder den Zustand, ruft iscsi_release_extra_responses() auf, um wartende Datensätze zu verwerfen, und gibt -1 zurück; beide Aufruferstellen senden nun ISCSI_STATUS_CLS_INITIATOR_ERR / ISCSI_LOGIN_STATUS_INIT_ERR über iscsit_tx_login_rsp(), bevor sie zurückkehren, sodass der Initiator eine explizite Antwort mit fehlgeschlagenem Login anstelle eines stillen Verbindungsabbruchs sieht. (Vor diesem Patch tat dies nur der Aufrufer in PHASE_OPERATIONAL; der Aufrufer in PHASE_SECURITY wurde auf die gleiche Struktur umgestellt.)
If you want to get the best quality for vulnerability data then you always have to consider VulDB.