CVE-2026-74513 in Linuxinfo

Zusammenfassung

von VulDB • 15.08.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

dibs: Behebung eines Use-After-Free-Fehlers von dmb_node bei Loopback-Anhang/-Trennung/Registrierungsaufhebung

dibs_lo_attach_dmb(), dibs_lo_detach_dmb() und dibs_lo_unregister_dmb() suchen den dmb_node unter der Sperre dmb_ht_lock nach, geben die Sperre frei und greifen erst danach auf den Referenzzähler des Knotens zu. Nichts hält den Knoten während dieses Zeitfensters am Leben: __dibs_lo_unregister_dmb() entfernt den Knoten aus der Hash-Tabelle unter der Schreibsperre und gibt ihn sofort wieder frei.

Ein gleichzeitiger letzter „put“-Aufruf kann daher den Knoten zwischen dem Nachschlagen und der Referenzzähleroperation freigeben:

CPU0 (Anhang) CPU1 (Eigentümer hebt Registrierung auf)

read_lock_bh(&dmb_ht_lock) find dmb_node (refcnt == 1) read_unlock_bh(&dmb_ht_lock) refcount_dec_and_test() 1 -> 0 write_lock_bh(&dmb_ht_lock) hash_del(&dmb_node->list) write_unlock_bh(&dmb_ht_lock) kfree(dmb_node) refcount_inc_not_zero(&dmb_node->refcnt) <-- Use-After-Free

Das gleiche Zeitfenster existiert für die refcount_dec_and_test()-Aufrufe in den Pfaden zur Trennung und Registrierungsaufhebung.

Schließen Sie das Race strukturell, indem Sie die Hash-Tabellenmitgliedschaft und die Referenzzählerübergänge atomar zueinander machen:

- Führen Sie den letzten refcount_dec_and_test() und hash_del() in einem einzigen kritischen Abschnitt der Schreibseite von dmb_ht_lock aus, sowohl im Pfad zur Registrierungsaufhebung als auch zum Trennen. Das Freigeben des Knotens erfolgt weiterhin nach dem Loslassen der Sperre, was sicher ist, da ein Knoten, dessen Referenzzähler null erreicht hat, die Hash-Tabelle verlassen hat und nicht mehr gefunden werden kann.

- Dies stellt die Invariante her, dass jeder in der Hash-Tabelle gefundene Knoten mindestens eine Referenz hält und dass die letzte Referenz nur unter der Schreibsperre freigegeben werden kann. dibs_lo_attach_dmb() kann daher seine Referenz mit einem einfachen refcount_inc() aufnehmen, während es noch die Lesesperre hält; refcount_inc_not_zero() ist nicht mehr erforderlich.

__dibs_lo_unregister_dmb() greift nicht länger auf die Hash-Tabelle zu und wurde entsprechend in dibs_lo_free_dmb() umbenannt.

Hinweis: Der Commit cc21191b584c („dibs: Move data path to dibs layer“) hat den Code an seinen aktuellen Standort verschoben; das Race wurde früher durch den Commit c3a910f2380f („net/smc: implement DMB-merged operations of loopback-ism“) eingeführt.

Getestet mit SMC-D über ISM und dibs Loopback.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Zuständig

Linux

Reservieren

15.08.2026

Veröffentlichung

15.08.2026

Moderieren

akzeptiert

Eintrag

VDB-390779

CPE

bereit

EPSS

0.00166

KEV

nein

Aktivitäten

very low

Quellen

Interested in the pricing of exploits?

See the underground prices here!