CVE-2021-46986

Orta

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: usb: dwc3: gadget: Gadget yapısını yalnızca uç noktalar serbest bırakıldıktan sonra serbest bırakın e81a7018d93a ("usb: dwc3: allocate gadget structure dynamically") commit'inin bir parçası olarak, dwc3_gadget_exit() içinde usb_del_gadget_udc() çağrıldığında cihaz kaldırılırken dwc->gadget yapısını serbest bırakacak olan dwc3_gadget_release() eklenmiştir. Ancak, gadget yapısının doğrudan serbest bırakılması sarkan işaretçi (dangling pointer) durumuna yol açmaktadır: dwc3_gadget_init_endpoints() ile oluşturulan uç noktaların dep->endpoint.ep_list üyeleri, dwc->gadget->ep_list üzerinde sabitlenen list_head'e zincirlenmiştir. Bu nedenle dwc->gadget serbest bırakıldığında, listedeki ilk dwc3_ep artık sarkan bir prev işaretçisine sahip olur ve benzer şekilde listenin sonundaki dwc3_ep için de next işaretçisi aynı duruma düşer. Ardından gelen dwc3_gadget_free_endpoints(), list_del() fonksiyonunu çağırdığında bir serbest bırakıldıktan sonra kullanım (use-after-free) hatasına neden olur. Bu durum, KASAN etkinleştirilip sürücü ayırımı (unbind) gerçekleştirildiğinde tespit edilmiştir. Yakın tarihli 568262bf5492 ("usb: dwc3: core: Add shutdown callback for dwc3") commit'i de bunu kapatma sırasında bir panik durumu olarak ortaya çıkarmaktadır. Bunu düzeltmek için birkaç olasılık bulunmaktadır. Bunlardan biri, gadget->ep_list'in kendisinin list_del() işlemini gerçekleştirerek onu geri kalan dwc3_ep zincirinden çıkarmak olabilir. Diğer bir yaklaşım ise bu yamanın yaptığı gibi, usb_del_gadget_udc() çağrısını ayrı "del" ve "put" bileşenlerine bölmektir. Bu sayede dwc3_gadget_free_endpoints(), gadget nihayet usb_put_gadget() ile serbest bırakılmadan önce çağrılabilecektir.

ÖnemOrta
CVSS5.5
İstismar olasılığı—
ÜrünLinux Kernel
Yayın28 Şub 2024
İlk görülme28 Şub 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.10.38, 5.11.22, 5.12.5 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel5.10 ≤ v < 5.10.38, 5.11 ≤ v < 5.11.22, 5.12 ≤ v < 5.12.5, 5.135.10.38, 5.11.22, 5.12.5

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.

CVE-2021-46986 · Linux Kernel · Dark Radar