CVE-2024-26996

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: usb: gadget: f_ncm: usb ep taşıma hatası sonrası yeniden bağlama sırasında ncm nesnesindeki UAF düzeltildi ncm fonksiyonu çalışırken usb0 arayüzü bağlantıyı kesmek için durdurulduğunda eth_stop() çağrılır. Bu noktada, eğer usb_ep_enable() içinde tesadüfen bir usb taşıma hatası meydana gelirse, 'in_ep' ve/veya 'out_ep' etkinleştirilmemiş olabilir. Ardından, ncm ayırmasını (unbind) devre dışı bırakmak için ncm_disable() çağrılır ancak 'in_ep' etkinleştirilmediği için gether_disconnect() hiçbir zaman çağrılmaz. Sonuç olarak, ncm nesnesi ncm ayırmasında serbest bırakılır ancak 'ncm->port' ile ilişkili olan 'dev->port_usb' NULL değildir. Netdev'i kurtarmak için ncm tekrar bağlandığında (bind), ncm nesnesi yeniden tahsis edilir ancak usb0 arayüzü hâlâ daha önce serbest bırakılmış olan ncm nesnesiyle ilişkilidir. Bu nedenle, usb0 arayüzü aktif olduğunda ve eth_start_xmit() çağrıldığında, serbest bırakılan ncm nesnesine referans verilir ve bu durum serbest bırakıldıktan sonra kullanım (use-after-free) bellek hatasına neden olabilir. [configfs üzerinden unlink fonksiyonu] usb0: eth_stop dev->port_usb=ffffff9b179c3200 --> usb_ep_enable() içinde hata oluşur. NCM: ncm_disable: ncm=ffffff9b179c3200 --> ncm->port.in_ep->enabled false olduğu için gether_disconnect() çağrılmaz. NCM: ncm_unbind: ncm unbind ncm=ffffff9b179c3200 NCM: ncm_free: ncm free ncm=ffffff9b179c3200 <-- serbest bırakılan ncm [configfs üzerinden link fonksiyonu] NCM: ncm_alloc: ncm alloc ncm=ffffff9ac4f8a000 NCM: ncm_bind: ncm bind ncm=ffffff9ac4f8a000 NCM: ncm_set_alt: ncm=ffffff9ac4f8a000 alt=0 usb0: eth_open dev->port_usb=ffffff9b179c3200 <-- önceden serbest bırakılan ncm usb0: eth_start dev->port_usb=ffffff9b179c3200 <-- eth_start_xmit() --> dev->wrap() Unable to handle kernel paging request at virtual address dead00000000014f Bu yama, 'dev->port_usb' ilişkisini kesmek için gether_disconnect()'i çağırmak amacıyla ncm_disable() aşamasında 'ncm->netdev' değerinin NULL olup olmadığını kontrol ederek sorunu gidermektedir. Gether bağlantısı kurulmuş olsa bile 'ncm->port.in_ep->enabled' etkinleştirilmemiş olabileceği için, gether_connect/disconnect çağırmak adına 'ncm->netdev' kontrolünün yapılması daha makuldür.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın1 May 2024
İlk görülme1 May 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.15.157, 6.1.88, 6.6.29, 6.8.8 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernelv < 5.15.157, 5.16 ≤ v < 6.1.88, 6.2 ≤ v < 6.6.29, 6.7 ≤ v < 6.8.8, 6.95.15.157, 6.1.88, 6.6.29, 6.8.8

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-2024-26996 · Linux Kernel · Dark Radar