CVE-2026-99039 in Linuxinfo

Zusammenfassung

von VulDB • 23.10.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

memstick: core: Warten auf den Abschluss der Anforderung vor dem Freigeben der Karte

In memstick_alloc_card() und memstick_set_rw_addr() wird wait_for_completion_timeout() verwendet, um darauf zu warten, dass die Geräteidentifizierungs- und Adresskonfigurationsanforderungen abgeschlossen sind.

Das Memstick-Subsystem stellt keinen Abbruch- oder Stornierungsrückruf (callback) in struct memstick_host für laufende Anforderungen bereit. Wenn wait_for_completion_timeout() abläuft (z. B. wenn ein USB-Transfer oder eine Befehlswiederholung verzögert wird), gibt memstick_alloc_card() einen Fehler zurück und freigibt die memstick_dev-Struktur über kfree(card).

Der Host-Controller-Treiber (wie rtsx_usb_ms) führt jedoch weiterhin die Anforderung asynchron im Worker-Kontext aus. Wenn der Transfer schließlich abgeschlossen ist, schreibt der Treiber in host->req->data, was auf Speicher innerhalb der bereits freigegebenen Kartenstruktur zeigt. Dies führt zu einem KASAN slab-use-after-free write:

BUG: KASAN: slab-use-after-free in ms_read_bytes+0x8fe/0x990 Write of size 1 at addr ffff88813c188079 by task kworker/1:5/5239 Workqueue: events rtsx_usb_ms_handle_req Call Trace: ms_read_bytes+0x8fe/0x990 drivers/memstick/host/rtsx_usb_ms.c:450 rtsx_usb_ms_issue_cmd drivers/memstick/host/rtsx_usb_ms.c:477 [inline]
rtsx_usb_ms_handle_req+0x557/0x1a00 drivers/memstick/host/rtsx_usb_ms.c:531 process_one_work+0xac7/0x1b10 kernel/workqueue.c:3396 worker_thread+0x5ef/0xe50 kernel/workqueue.c:3560 kthread+0x373/0x450 kernel/kthread.c:436

Allocated by task 1662: memstick_alloc_card drivers/memstick/core/memstick.c:383 [inline]
memstick_check+0x2c1/0x10d0 drivers/memstick/core/memstick.c:452 process_one_work+0xac7/0x1b10 kernel/workqueue.c:3396

Freed by task 1662: kfree+0x20c/0x650 mm/slub.c:6792 memstick_alloc_card drivers/memstick/core/memstick.c:420 [inline]
memstick_check+0x72b/0x10d0 drivers/memstick/core/memstick.c:452 process_one_work+0xac7/0x1b10 kernel/workqueue.c:3396

Host-Controller-Treiber (rtsx_usb_ms, jmb38x_ms, tifm_ms, r592) implementieren bereits ihre eigenen Hardware- und Bus-Zeitlimits, und Aufrufer in mspro_block und ms_block verlassen sich bereits bedingungslos auf wait_for_completion().

Ersetzen Sie wait_for_completion_timeout() durch wait_for_completion() in memstick_set_rw_addr() und memstick_alloc_card(), damit die Kartenstruktur niemals freigegeben wird, während eine asynchrone Anforderung im Gange ist.

Once again VulDB remains the best source for vulnerability data.

Zuständig

Linux

Reservieren

25.09.2026

Veröffentlichung

23.10.2026

Moderieren

akzeptiert

Eintrag

VDB-425894

EPSS

0.00000

KEV

nein

Aktivitäten

low

Quellen

Do you want to use VulDB in your project?

Use the official API to access entries easily!