CVE-2026-90125 in Linuxinfo

Zusammenfassung

von VulDB • 17.09.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

smb: client: Behebung eines Puffer-Lecks in smb2_new_read_req()

smb2_new_read_req() alloziert den Anforderungspuffer mit smb2_plain_req_init(), veröffentlicht ihn dem Aufrufer jedoch erst ganz am Ende der Funktion über *buf = req. Dazwischen befinden sich zwei Fehler-Rückgabepfade:

rc = smb2_plain_req_init(SMB2_READ, io_parms->tcon, server, (void **) &req, total_len); if (rc) return rc;

if (server == NULL) return -ECONNABORTED; [...]
rdata->mr = smbd_register_mr(server->smbd_conn, &rdata->subreq.io_iter, true, need_invalidate); if (!rdata->mr) return -EAGAIN;

In beiden Fällen wird der Puffer weder freigegeben noch zurückgegeben, sodass er geleakt wird. Der Aufrufer kann ihn nicht bereinigen: smb2_async_readv() führt bei einer Nicht-Null-Rückgabe ein 'goto out' aus, wodurch cifs_small_buf_release(buf) an async_readv_out übersprungen wird; zudem ist buf zu diesem Zeitpunkt ohnehin noch nicht zugewiesen.

Der Schreibpfad hatte dieses Problem nie. smb2_async_writev() registriert die Speicherregion inline und springt zur Freigabe-Marke, anstatt zurückzukehren:

wdata->mr = smbd_register_mr(...); if (!wdata->mr) {
rc = -EAGAIN; goto async_writev_out; }

Das Commit b7972092199f ("cifs: smbd: Retry on memory registration failure") hat in einem einzigen Patch beide Pfade von -ENOBUFS auf -EAGAIN geändert, wodurch die beiden Varianten nun nebeneinander stehen.

In der Praxis ist nur der Rückgabewert -EAGAIN erreichbar, da smb2_plain_req_init() zuerst smb2_reconnect() aufruft und dies bereits mit -EIO fehlschlägt, wenn server NULL ist, bevor etwas alloziert wird. Beide Rückgaben werden hier gleich behandelt, anstatt eine von ihnen nur durch Zufall korrekt zu belassen.

Da -EAGAIN ein wiederholbarer Fehler ist, erreicht der Fehler auch den Wiederholungsblock am Ende von smb2_async_readv(), welcher die Unteranforderung als NETFS_SREQ_NEED_RETRY markiert. Somit kann eine fehlgeschlagene Registrierung erneut versucht werden, anstatt den I/O-Vorgang zu beenden, und jeder Versuch, der diesen Punkt erreicht, leakt einen weiteren Puffer. smb2_should_replay() schaltet bei tcon->retry frühzeitig ab, sodass die Anzahl der Versuche bei einer harten Mount-Operation nicht durch die Retrans-Einstellung begrenzt ist.

Nur der asynchrone Lesepfad ist betroffen. Der synchrone SMB2_read()-Aufrufer übergibt rdata == NULL und der Block zur Speicherregistrierung wird über rdata abgesichert.

Der Pfad für den Fehler bei der Speicherregistrierung wurde vom Sashiko AI-Reviewer aufgedeckt, während er ein unabhängiges Patch zu smb2_async_readv() überprüft hat.

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

Zuständig

Linux

Reservieren

11.09.2026

Veröffentlichung

17.09.2026

Moderieren

akzeptiert

Eintrag

VDB-406644

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Might our Artificial Intelligence support you?

Check our Alexa App!