CVE-2026-64142 in Linuxinfo

Zusammenfassung

von VulDB • 20.07.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

ksmbd: Behebung von Race Conditions des Durable-Scavengers gegenüber m_fp_list-Suchvorgängen

ksmbd_durable_scavenger() weist zwei verwandte Race Conditions gegen jeden Iterator auf, der f_ci->m_fp_list durchläuft, einschließlich ksmbd_lookup_fd_inode() (verwendet von ksmbd_vfs_rename) und den Share-Mode-Prüfungen in fs/smb/server/smb_common.c.

(1) Wiederverwendung des Listenkopfeintrags fp->node. Durable-preserved Handles können nach dem Session-Tearown noch an f_ci->m_fp_list verknüpft bleiben, sodass die Share-Mode-Prüfungen diese weiterhin sehen, solange das Handle wiederherstellbar ist. Der Scavenger sammelte abgelaufene Handles ein, indem er fp->node zu einer lokalen scavenger_list hinzufügte, nachdem sie aus dem globalen durable idr entfernt wurden. Da fp->node derselbe list_head ist, der auch von m_fp_list verwendet wird, überschreibt list_add(&fp->node, &scavenger_list) die Verknüpfungen in m_fp_list und beschädigt beide Listen. CONFIG_DEBUG_LIST kann dies auf dem Pfad des Share-Mode-Durchlaufs melden.

(2) Race Condition bezüglich der Referenzzählung gegenüber m_fp_list-Iteratoren. Der Scavenger qualifiziert ein abgelaufenes Durable-Handle mit atomic_read(&fp->refcount) > 1 und fp->conn unter global_ft.lock, entfernt fp aus global_ft und lässt dann global_ft.lock fallen, bevor er fp von m_fp_list entknüpft und freigibt. Während dieser Lücke ist fp weiterhin an m_fp_list verknüpft mit f_state == FP_INITED. ksmbd_lookup_fd_inode() unter m_lock ruft ksmbd_fp_get() auf (atomic_inc_not_zero für die Referenzzählung, die noch 1 beträgt) und erhält eine aktive Referenz; der Scavenger entknüpft und gibt fp dann frei, während der Inhaber eine Referenz besitzt. Dies führt zu einem Use-After-Free (UAF) beim nachfolgenden ksmbd_fd_put() des Halters sowie bei allen Feldzugriffen, die von einem parallelen Share-Mode-Iterator durchgeführt werden, der m_fp_list durchläuft, ohne ksmbd_fp_get() aufzurufen (Pfade ähnlich wie smb_check_perm_dleases).

Beide Probleme werden behoben:

* Vermeidung der Wiederverwendung von fp->node als scavenger-interner Listeneintrag. Entfernen Sie ein abgelaufenes Handle aus global_ft unter global_ft.lock, nehmen Sie eine explizite transiente Referenz auf, lassen Sie die Sperre fallen, entknüpfen Sie fp->node von m_fp_list unter f_ci->m_lock und reduzieren Sie dann sowohl das Durable-Lebensdauer als auch die transienten Referenzen mit atomic_sub_and_test(2, &fp->refcount). Wenn der Scavenger der letzte ist, der das Handle freigibt, wird der Close-Vorgang dort ausgeführt; andernfalls besitzt ein in-flight-Inhaber, der bereits durch den m_fp_list-Suchvorgang gelaufen ist, den finalen Close über seinen ksmbd_fd_put()-P

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Zuständig

Linux

Reservieren

19.07.2026

Veröffentlichung

19.07.2026

Moderieren

akzeptiert

Eintrag

VDB-380383

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Do you need the next level of professionalism?

Upgrade your account now!