CVE-2024-26996

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: usb: gadget: f_ncm: usb ep transport xətasından sonra yenidən bağlama zamanı ncm obyektində UAF xətasının düzəldilməsi ncm funksiyası işlədiyi zaman və linki söndürmək üçün usb0 interfeysi dayandırıldıqda, eth_stop() çağırılır. Bu mərhələdə təsadüfən usb_ep_enable() daxilində usb transport xətası baş verərsə, 'in_ep' və/və ya 'out_ep' aktivləşdirilməyə bilər. Bundan sonra, ncm unbind prosesini deaktiv etmək üçün ncm_disable() çağırılır, lakin 'in_ep' aktivləşdirilmədiyi üçün gether_disconnect() heç vaxt çağırılmır. Nəticə etibarilə, ncm unbind zamanı ncm obyekti azad edilir, lakin 'ncm->port' ilə əlaqəli olan 'dev->port_usb' NULL olmur. Netdev-i bərpa etmək üçün ncm yenidən bağlandıqda (bind), ncm obyekti yenidən ayrılır (reallocate), lakin usb0 interfeysi artıq əvvəlki azad edilmiş ncm obyekti ilə əlaqələndirilmiş olur. Buna görə də, usb0 interfeysi aktivləşdikdə və eth_start_xmit() çağırıldıqda, azad edilmiş ncm obyektinə müraciət edilir və bu, use-after-free yaddaş xətasına səbəb ola bilər. [configfs vasitəsilə unlink funksiyası] usb0: eth_stop dev->port_usb=ffffff9b179c3200 --> usb_ep_enable() daxilində xəta baş verir. NCM: ncm_disable: ncm=ffffff9b179c3200 --> ncm->port.in_ep->enabled false olduğu üçün gether_disconnect() çağırılmır. NCM: ncm_unbind: ncm unbind ncm=ffffff9b179c3200 NCM: ncm_free: ncm free ncm=ffffff9b179c3200 <-- azad edilmiş ncm [configfs vasitəsilə link funksiyası] 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 <-- əvvəlki azad edilmiş ncm usb0: eth_start dev->port_usb=ffffff9b179c3200 <-- eth_start_xmit() --> dev->wrap() Unable to handle kernel paging request at virtual address dead00000000014f Bu yamama (patch), 'dev->port_usb'-ni ayırmaq üçün gether_disconnect()-i çağırmaq məqsədilə ncm_disable() zamanı 'ncm->netdev'-in NULL olmadığını yoxlayaraq problemi həll edir. Gether bağlantısı qurulmuş ola bildiyi halda onun aktiv edilməmə ehtimalı olduğundan, gether_connect/disconnect-i çağırmaq üçün 'ncm->port.in_ep->enabled'-i yoxlamaqdansa, 'ncm->netdev'-i yoxlamaq daha məntiqlidir.

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc1 may 2024
İlk görülmə1 may 2024

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel5.15.157, 6.1.88, 6.6.29, 6.8.8 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
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

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.

Intelligence 360 paketində

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.