CVE-2025-38394
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: HID: appletb-kbd: input_handler_list yaddaş korrupsiyasının düzəldilməsi appletb_kbd_probe funksiyasında giriş operatoru (input handler) başladılır və sonra input_register_handler() vasitəsilə giriş nüvəsinə (input core) qeydiyyatdan keçirilir. Bu baş verdikdə, giriş nüvəsi həmin giriş operatorunu (konkret olaraq onun düyününü) qlobal input_handler_list siyahısına əlavə edir. input_handler_list giriş nüvəsinin funksionallığı üçün mərkəzi rol oynayır və giriş nüvəsinin müxtəlif hissələrində nəzərdən keçirilir. Buna bir nümunə, yeni giriş cihazının qoşulması və giriş nüvəsində qeydiyyata alınmasıdır. Probe prosesindəki input_handler cihaz tərəfindən idarə olunan yaddaş kimi ayrılır. Əgər input_register_handler()-dən sonra probe xətası baş verərsə, input_handler yaddaşı boşaldılır, lakin o, hələ də input_handler_list siyahısında qalır. Bu, faktiki olaraq input_handler_list siyahısının azad edilmiş giriş operatoruna aid məlumatlara yönəlmiş asılı göstəricinin (dangling pointer) olduğunu bildirir. Bu, hər hansı digər giriş cihazı qoşulduqda problem yaradır - mənim halımda, input_register_handler()-dən sonra xəta baş verdikdən sonra köhnə PixArt HP USB optik siçanı qoşmağa qərar vermişdim. Bu, həmin giriş cihazının input_register_device vasitəsilə qeydiyyatına səbəb oldu ki, bu da korrupsiyaya uğramış input_handler_list-dəki hər bir operatorun nəzərdən keçirilməsini və input_attach_handler() funksiyasının çağırılmasını tələb edirdi ki, hər bir operatora yeni qeydiyyata alınmış cihaza bağlanmaq şansı verilsin. Bu xətanın əsası, input_handler_list-in yaddaş korrupsiyasına səbəb olan UAF (Use-After-Free) zəifliyidir və bunu düzəltmək üçün giriş operatorunun giriş nüvəsindən qeydiyyatdan çıxarıldığından əmin olmalıyıq; bu, input_unregister_handler() vasitəsilə həyata keçirilir. [ 63.191597] ================================================================== [ 63.192094] BUG: KASAN: slab-use-after-free in input_attach_handler.isra.0+0x1a9/0x1e0 [ 63.192094] Read of size 8 at addr ffff888105ea7c80 by task kworker/0:2/54 [ 63.192094] [ 63.192094] CPU: 0 UID: 0 PID: 54 Comm: kworker/0:2 Not tainted 6.16.0-rc2-00321-g2aa6621d [ 63.192094] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.164 [ 63.192094] Workqueue: usb_hub_wq hub_event [ 63.192094] Call Trace: [ 63.192094] <TASK> [ 63.192094] dump_stack_lvl+0x53/0x70 [ 63.192094] print_report+0xce/0x670 [ 63.192094] kasan_report+0xce/0x100 [ 63.192094] input_attach_handler.isra.0+0x1a9/0x1e0 [ 63.192094] input_register_device+0x76c/0xd00 [ 63.192094] hidinput_connect+0x686d/0xad60 [ 63.192094] hid_connect+0xf20/0x1b10 [ 63.192094] hid_hw_start+0x83/0x100 [ 63.192094] hid_device_probe+0x2d1/0x680 [ 63.192094] really_probe+0x1c3/0x690 [ 63.192094] __driver_probe_device+0x247/0x300 [ 63.192094] driver_probe_device+0x49/0x210 [ 63.192094] __device_attach_driver+0x160/0x320 [ 63.192094] bus_for_each_drv+0x10f/0x190 [ 63.192094] __device_attach+0x18e/0x370 [ 63.192094] bus_probe_device+0x123/0x170 [ 63.192094] device_add+0xd4d/0x1460 [ 63.192094] hid_add_device+0x30b/0x910 [ 63.192094] usbhid_probe+0x920/0xe00 [ 63.192094] usb_probe_interface+0x363/0x9a0 [ 63.192094] really_probe+0x1c3/0x690 [ 63.192094] __driver_probe_device+0x247/0x300 [ 63.192094] driver_probe_device+0x49/0x210 [ 63.192094] __device_attach_driver+0x160/0x320 [ 63.192094] bus_for_each_drv+0x10f/0x190 [ 63.192094] __device_attach+0x18e/0x370 [ 63.192094] bus_probe_device+0x123/0x170 [ 63.192094] device_add+0xd4d/0x1460 [ 63.192094] usb_set_configuration+0xd14/0x1880 [ 63.192094] usb_generic_driver_probe+0x78/0xb0 [ 63.192094] usb_probe_device+0xaa/0x2e0 [ 63.192094] really_probe+0x1c3/0x690 [ 63.192094] __driver_probe_device+0x247/0x300 [ 63.192094] driver_probe_device+0x49/0x210 [ 63.192094] __device_attach_driver+0x160/0x320 [ 63.192094] bus_for_each_drv+0x10f/0x190 [ 63.192094] __device_attach+0x18e/0x370 [ 63.192094] bus_probe_device+0x123/0x170 [ 63.192094] device_add+0xd4d/0x1460 [ 63.192094] usb_new_device+0x7b4/0x1000 [ 63.192094] hub_event+0x234d/0x3 ---truncated---
Necə düzəltmək olar
- linux linux_kernel6.15.6 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 6.15 ≤ v < 6.15.6, 6.16 | 6.15.6 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.