Katalog CVE

CVE-2024-26875

ŚrednieCVSS 6.4
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.25%

Percentyl 15 - wyżej niż 15% wszystkich znanych CVE

Streszczenie

W jądrze Linux w module pvrusb2 (sterownik USB dla urządzeń Hauppauge WinTV PVR USB2) występuje podatność use-after-free w funkcji pvr2_context_set_notify. Problem wynika z wyścigu między wątkami: ustawienie flagi disconnect_flag przed zakończeniem pvr2_context_disconnect() powoduje zwolnienie pamięci, do której odwołuje się inny wątek.

Ocena ryzyka

Podatność może prowadzić do awarii jądra (panic) lub potencjalnego wykonania dowolnego kodu w kontekście jądra, co stanowi poważne zagrożenie dla stabilności i bezpieczeństwa systemu, szczególnie przy podłączonym urządzeniu USB opartym na pvrusb2.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę (commit naprawiający przenosi przypisanie disconnect_flag na koniec funkcji pvr2_context_disconnect). Jeśli aktualizacja nie jest możliwa, rozważ unikanie używania sterownika pvrusb2 do czasu wdrożenia poprawki.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: media: pvrusb2: fix uaf in pvr2_context_set_notify [Syzbot reported] BUG: KASAN: slab-use-after-free in pvr2_context_set_notify+0x2c4/0x310 drivers/media/usb/pvrusb2/pvrusb2-context.c:35 Read of size 4 at addr ffff888113aeb0d8 by task kworker/1:1/26 CPU: 1 PID: 26 Comm: kworker/1:1 Not tainted 6.8.0-rc1-syzkaller-00046-gf1a27f081c1f #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/25/2024 Workqueue: usb_hub_wq hub_event Call Trace: <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xd9/0x1b0 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:377 [inline] print_report+0xc4/0x620 mm/kasan/report.c:488 kasan_report+0xda/0x110 mm/kasan/report.c:601 pvr2_context_set_notify+0x2c4/0x310 drivers/media/usb/pvrusb2/pvrusb2-context.c:35 pvr2_context_notify drivers/media/usb/pvrusb2/pvrusb2-context.c:95 [inline] pvr2_context_disconnect+0x94/0xb0 drivers/media/usb/pvrusb2/pvrusb2-context.c:272 Freed by task 906: kasan_save_stack+0x33/0x50 mm/kasan/common.c:47 kasan_save_track+0x14/0x30 mm/kasan/common.c:68 kasan_save_free_info+0x3f/0x60 mm/kasan/generic.c:640 poison_slab_object mm/kasan/common.c:241 [inline] __kasan_slab_free+0x106/0x1b0 mm/kasan/common.c:257 kasan_slab_free include/linux/kasan.h:184 [inline] slab_free_hook mm/slub.c:2121 [inline] slab_free mm/slub.c:4299 [inline] kfree+0x105/0x340 mm/slub.c:4409 pvr2_context_check drivers/media/usb/pvrusb2/pvrusb2-context.c:137 [inline] pvr2_context_thread_func+0x69d/0x960 drivers/media/usb/pvrusb2/pvrusb2-context.c:158 [Analyze] Task A set disconnect_flag = !0, which resulted in Task B's condition being met and releasing mp, leading to this issue. [Fix] Place the disconnect_flag assignment operation after all code in pvr2_context_disconnect() to avoid this issue.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS