CVE-2026-31578
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: media: as102: as102_usb_probe() funksiyasında cihaz qeydiyyatdan keçdikdən sonra yaddaşın azad edilməməsi üçün düzəliş as102_usb drayverində aşağıdakı yarış vəziyyəti (race condition) baş verir: ``` CPU0 CPU1 as102_usb_probe() kzalloc(); // as102_dev_t ayrılır .... usb_register_dev(); fd = sys_open("/path/to/dev"); // as102 fd açılır .... usb_deregister_dev(); .... kfree(); // as102_dev_t azad edilir .... sys_close(fd); as102_release() // UAF!! as102_usb_release() kfree(); // DFB!! ``` usb_register_dev() ilə qeydiyyata alınmış USB simvol cihazı daha sonra qeydiyyatdan çıxarıldıqda (usb_deregister_dev() və ya disconnect vasitəsilə), cihaz düyünü silinir və yeni open() çağırışları uğursuz olur. Lakin artıq açıq olan fayl deskriptorları dərhal itmir: onlar sonuncu istinad ləğv edilənə və drayverin .release() funksiyası çağırılana qədər etibarlı qalırlar. as102-də, as102_usb_probe() funksiyası usb_register_dev() çağırır və sonra xəta yolu zamanı usb_deregister_dev() edərək as102_dev_t strukturunu dərhal azad edir. Əgər istifadəçi sahəsi (userspace) qeydiyyatdan çıxarılmadan əvvəl uğurlu open() çağırışı etdisə, həmin açıq FD daha sonra as102_release() --> as102_usb_release() funksiyalarına çatacaq və as102_dev_t strukturuna yenidən müraciət edəcək və ya onu azad edəcək ki, bu da use-after-free və double-free zəifliyinin yaranmasına səbəb olan yarış vəziyyətinə gətirib çıxarır. Düzəliş ondan ibarətdir ki, usb_register_dev() uğurla tamamlandıqdan sonra heç vaxt birbaşa kfree(as102_dev_t) çağırılmasın. Qeydiyyatdan çıxardıqdan sonra yaddaşın azad edilməsi .release() funksiyasına ötürülür. Başqa sözlə, sonuncu açıq FD bağlanarkən sonuncunu kfree() etmək tapşırığı release() funksiyasına həvalə edilir.
Necə düzəltmək olar
- linux linux_kernel6.6.136, 6.12.83, 6.18.24, 6.19.14, 7.0.1 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 | v < 6.6.136, 6.7 ≤ v < 6.12.83, 6.13 ≤ v < 6.18.24, 6.19 ≤ v < 6.19.14, 7.0 ≤ v < 7.0.1 | 6.6.136, 6.12.83, 6.18.24, 6.19.14, 7.0.1 |
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.