CVE-2026-64142

Linux kernel (GCP) vulnerabilities

criticalEPSS 0.5 %

Beschreibung

Im Linux-Kernel wurde folgende Schwachstelle behoben: ksmbd: close durable scavenger races against m_fp_list lookups `ksmbd_durable_scavenger()` hat zwei Rennen gegen jeden Walker, der `f_ci->m_fp_list` durchläuft, einschließlich `ksmbd_lookup_fd_inode()` (verwendet von `ksmbd_vfs_rename`) und den Share-Modus-Überprüfungen in `fs/smb/server/smb_common.c`. (1) fp->node list-head Wiederverwendung. Durable-preserved Handles können nach dem Session-Aufbau noch auf `f_ci->m_fp_list` verlinkt bleiben, sodass Share-Modus-Überprüfungen sie weiterhin sehen, während das Handle wiederherstellbar ist. Der Scavenger sammelt abgelaufene Handles, indem er `fp->node` zu einer lokalen `scavenger_list` hinzufügt, nachdem er es aus der globalen durable idr entfernt hat. Da `fp->node` dieselbe list_head wie von `m_fp_list` verwendet wird, überschreibt `list_add(&fp->node, &scavenger_list)` die m_fp_list-Links und beschädigt beide Listen. CONFIG_DEBUG_LIST kann dies auf dem Share-Modus-Weg berichten. (2) Refcount-Rennen gegen m_fp_list Walker. 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, gibt dann global_ft.lock frei, bevor er fp von m_fp_list trennt und freigibt. Während dieser Lücke ist fp noch auf m_fp_list mit f_state == FP_INITED verlinkt. `ksmbd_lookup_fd_inode()` unter m_lock-Leseaufrufen ruft `ksmbd_fp_get()` (atomic_inc_not_zero auf den Refcount, der immer noch 1 ist) auf und nimmt einen lebenden Verweis; der Scavenger trennt dann fp los und gibt es frei, während der Halter einen Verweis besitzt, was zu UAF beim anschließenden `ksmbd_fd_put()` des Halters und bei allen Feldlesevorgängen führt, die von einem gleichzeitigen Share-Modus Walker durchgeführt werden, der m_fp_list ohne `ksmbd_fp_get()` (smb_check_perm_dleases-ähnliche Pfade) durchläuft. Beide beheben: * Stoppen Sie die Wiederverwendung von fp->node als scavenger-private list node. Entfernen Sie ein abgelaufenes Handle aus global_ft unter global_ft.lock, nehmen Sie einen expliziten transienten Verweis, geben Sie den Lock frei, trennen Sie fp->node von m_fp_list unter f_ci->m_lock, und geben Sie dann sowohl die durable als auch die transienten Verweise mit `atomic_sub_and_test(2, &fp->refcount)` frei. Wenn der Scavenger der letzte Putter ist, läuft das Schließen dort; andernfalls besitzt ein in der Luft befindlicher Halter, der bereits durch den m_fp_list-Abfragepfad gerast ist, das endgültige Schließen über seinen `ksmbd_fd_put()` Pfad. Die Einzelabfertigung kann die durable idr erneut scannen, wenn mehrere Handles in derselben Runde ablaufen, aber die durable Scavenging ist ein Hintergrund-Ablaufpfad und der endgültige vollständige Scan berechnet min_timeout vor dem nächsten Warten neu. * Löschen Sie `fp->persistent_id` innerhalb von `__ksmbd_remove_durable_fd()` unmittelbar nach `idr_remove()`, sodass ein verzögertes endgültiges Schließen durch einen Halter, der fp ergriffen hat, keine erneute Ausgabe von `idr_remove()` auf eine persistente ID verursacht, die `idr_alloc_cyclic()` in `ksmbd_open_durable_fd()` möglicherweise bereits einem brandneuen durable Handle zugewiesen hat. * Umgehen Sie die pro-conn open_files_count Verringerung in `__put_fd_final()`, wenn fp von jeder Session-Tabelle getrennt ist (fp->conn durch session_fd_check() bei der dauerhaften Bewahrung gelöscht – gepaart mit dem volatile_id-Löschung bei Unpublish, sodass das Überprüfen von fp->conn allein ausreicht). Der Walker, der das endgültige Schließen besitzt, läuft von einem nicht zusammenhängenden work->conn, dessen stats.open_files_count diesen durable fp nie verfolgt hat; ohne diese Absicherung würde der Halter den unzusammenhängenden Zähler unterlaufen. Die beiden Rennen werden in einer einzigen Korrektur zusammengefasst, da die Korrektur (1) allein die beschädigte Liste bereinigt, aber ein deterministisches UAF-Fenster für m_fp_list Walker lässt, das der transient-reference und persistent_id Disziplin in (2) schließt; auf einen Zwischenzustand zu bissen würde zu einem UAF führen, das vor der Korrektur nur weniger reproduzierbar war. Validierung: * CONFIG_DEBUG_LIST Abdeckung für den list_head Wiederverwendungs-Pfad. * KASAN-aktiviertes direktes SMB2 durable-handle Coverage, das `ksmbd_durable_scavenger()` und nicht-NULL-Rückgaben von `ksmbd_lookup_fd_inode()` während der Ablauf von durable Handles unter gleichzeitigen Umbenennungsabfragen ausübte, mit keiner KASAN-, UAF-, Listenbeschädigungs-, ODEBUG- oder WARNING-Bericht.

Metriken

Severity
critical
kein öffentlicher PoC bekannt
9.8
Quelle: nvd-v3
42.9 %
Hoch — CVE rangiert über dem Median aller heute bewerteten CVEs (Rang ≥ 36 %).
0.5 %
Niedrig — Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.
Veröffentlicht
2026-09-07 09:05 UTC

Re-Analyse & Statuswechsel

Chronologie der NVD-Audit-Events für diese CVE — Reanalyses, CVSS-Updates, CPE-Diffs.

  1. Initial Analysis2026-08-17 19:40 UTC· nvd@nist.gov
    • CWE: CWE-416
    • CPE Configuration: OR *cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:* *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.13 up to (excluding) 6.18.34 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.19 up to (excluding) 7.0.11 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.11 up to (excluding) 6.12.92
    • Reference Type: kernel.org: https://git.kernel.org/stable/c/1f8f3246d55f89350a1a67bdf3744b7241048e4e Types: Patch
    • Reference Type: kernel.org: https://git.kernel.org/stable/c/3a436932eb397e909d0607d76a8325abd9d85a35 Types: Patch

Betroffene Betriebssysteme

  • linux

    redhat / enterprise_linux10.0

  • linux

    redhat / enterprise_linux7.0

  • linux

    redhat / enterprise_linux8.0

  • linux

    redhat / enterprise_linux9.0

  • linux

    ubuntu / linux-aws-6.8jammy

  • linux

    ubuntu / linux-azureresolute

  • linux

    ubuntu / linux-azuretrusty

  • linux

    ubuntu / linux-azurexenial

  • linux

    ubuntu / linux-azure-4.15bionic

  • linux

    ubuntu / linux-azure-5.4bionic

  • linux

    ubuntu / linux-azure-fdenoble

  • linux

    ubuntu / linux-azure-fderesolute

  • linux

    ubuntu / linux-azure-fde-6.8jammy

  • linux

    ubuntu / linux-azure-fipsbionic

  • linux

    ubuntu / linux-azure-fipsfocal

  • linux

    ubuntu / linux-azure-fipsnoble

  • linux

    ubuntu / linux-fipsjammy

  • linux

    ubuntu / linux-gcp-7.0noble

  • linux

    ubuntu / linux-gkejammy

  • linux

    ubuntu / linux-nvidia-tegranoble

  • linux

    ubuntu / linux-raspinoble

  • linux

    ubuntu / linux-raspi-realtimenoble

  • linux

    linux / linux_kernel2.6.12

  • linux

    linux / linux_kernel2.6.15

Quellen & Referenzen

Verknüpfte CVEs

1392 weitere CVEs anzeigen
IDCVE-2026-64142
Linux kernel (GCP) vulnerabilities — CVE-2026-64142 | NEOSEC Intel