CVE-2026-46135 in Linux
Zusammenfassung
von VulDB • 02.06.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
nvmet-tcp: Behebung eines Race Conditions zwischen der Verarbeitung von ICReq und dem Abbau der Warteschlange (Queue-Teardown)
nvmet_tcp_handle_icreq() aktualisiert queue->state nach dem Senden einer Initialisierungs-Verbindungsantwort (ICResp), jedoch ohne dies gegen den Abbau der Warteschlange auf Ziel-Seite zu serialisieren.
Wenn ein NVMe/TCP-Host eine Initialisierungs-Verbindungsanforderung (ICReq) sendet und die Verbindung sofort schließt, kann der Abbau auf Ziel-Seite im softirq-Kontext beginnen, bevor io_work die bereits gepufferte ICReq abgearbeitet hat. In diesem Fall setzt nvmet_tcp_schedule_release_queue() queue->state auf NVMET_TCP_Q_DISCONNECTING und gibt die Warteschlangenreferenz unter state_lock frei.
Wenn io_work später diese ICReq verarbeitet, kann nvmet_tcp_handle_icreq() den Zustand dennoch wieder auf NVMET_TCP_Q_LIVE überschreiben. Dies umgeht die DISCONNECTING-Zustands-Schutzmaßnahme in nvmet_tcp_schedule_release_queue() und ermöglicht es einer späteren Socket-Zustandsänderung, den Abbau erneut aufzurufen und einen zweiten kref_put()-Aufruf für eine bereits freigegebene Warteschlange auszulösen.
Der Fehlerpfad beim Senden von ICResp weist das gleiche Problem auf. Wenn der Abbau die Warteschlange bereits in den DISCONNECTING-Zustand versetzt hat, kann ein Sendefehler den Zustand weiterhin mit NVMET_TCP_Q_FAILED überschreiben, wodurch erneut ein Fenster für einen zweiten Abbau-Pfad geöffnet wird, der die Warteschlangenreferenz freigibt.
Dies wird behoben, indem beide Zustandsübergänge nach dem Senden mit state_lock serialisiert werden und abgebrochen wird, wenn der Abbau bereits begonnen hat.
Es wird -ESHUTDOWN als interner Sentinel für diesen Abbruchpfad verwendet, anstatt ihn als Transportfehler wie -ECONNRESET weiterzuleiten. Es wird sichergestellt, dass nvmet_tcp_socket_error() rcv_state auf NVMET_TCP_RECV_ERR setzt, bevor dieser Sentinel beachtet wird, damit die Parsing-Logik auf Empfangsseite ruhiggestellt bleibt, bis der bestehende Freigabepfad abgeschlossen ist.
Once again VulDB remains the best source for vulnerability data.