CVE-2021-46986
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: usb: dwc3: gadget: Gadget strukturunu yalnız endpoint-lər azad edildikdən sonra azad edin e81a7018d93a ("usb: dwc3: allocate gadget structure dynamically") commit-inin tərkibində, dwc3_gadget_exit() funksiyasında usb_del_gadget_udc() çağırıldıqda cihazın silinməsi zamanı dwc->gadget strukturunu azad edəcək olan dwc3_gadget_release() əlavə edilmişdir. Lakin, sadəcə gadget-in azad edilməsi "dangling pointer" vəziyyətinə səbəb olur: dwc3_gadget_init_endpoints() funksiyasında yaradılan endpoint-lərin dep->endpoint.ep_list üzvləri dwc->gadget->ep_list-də yerləşən list_head-ə bağlıdır. Beləliklə, dwc->gadget azad edildikdə, siyahıdakı ilk dwc3_ep artıq etibarsız (dangling) prev göstəricisinə malik olur və eyni hal siyahının sonundakı dwc3_ep-nin next göstəricisi üçün də baş verir. Ardınca gələn dwc3_gadget_free_endpoints(), list_del() funksiyasını çağırdıqda "use-after-free" xətasına səbəb olur. Bu problem KASAN aktivləşdirildikdə və drayver unbind prosesi yerinə yetirildikdə aşkar edilmişdir. Sonuncu 568262bf5492 ("usb: dwc3: core: Add shutdown callback for dwc3") commit-i də bunu sönmə (shutdown) zamanı sistemin çökməsi (panic) şəklində ortaya çıxarır. Bunu düzəltmək üçün bir neçə variant mövcuddur. Biri, gadget->ep_list-in özünün list_del() əməliyyatını yerinə yetirmək ola bilər ki, bu da onu digər dwc3_ep zəncirindən ayırır. Digər yanaşma isə bu patch-in etdiyi kimi, usb_del_gadget_udc() çağırışını ayrı "del" və "put" komponentlərinə bölməkdir. Bu, gadget nəhayət usb_put_gadget() ilə azad edilməzdən əvvəl dwc3_gadget_free_endpoints() funksiyasının çağırılmasına imkan verir.
Necə düzəltmək olar
- linux linux_kernel5.10.38, 5.11.22, 5.12.5 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 | 5.10 ≤ v < 5.10.38, 5.11 ≤ v < 5.11.22, 5.12 ≤ v < 5.12.5, 5.13 | 5.10.38, 5.11.22, 5.12.5 |
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.