CVE-2023-52474

Yüksək

Təsvir

Linux kernelində aşağıdakı zəiflik aradan qaldırılmışdır: IB/hfi1: PAGE_SIZE ilə bitməyən çoxsaylı iovec-li istifadəçi SDMA sorğuları ilə bağlı xətalar düzəldildi hfi1 istifadəçi SDMA sorğularının emalında iki xəta var ki, çoxsaylı yük iovec-ləri olan və quyruq iovec-dən başqa bir iovec-in həmin iovec-in göstərdiyi bufer üçün səhifə sərhədinə qədər uzanmadığı istifadəçi SDMA sorğuları üçün məlumatların korlanmasına səbəb ola bilər. Xüsusi xətalar bunlardır: 1. user_sdma_txadd() struct user_sdma_iovec->iov.iov_len istifadə etmir. Əvəzində user_sdma_txadd() iovec-dən paketə PAGE_SIZE bayta qədər əlavə edir, hətta bu baytların bəziləri iovec->iov.iov_len-dən kənara çıxırsa və beləliklə paketdə olması nəzərdə tutulmursa belə. 2. user_sdma_txadd() və user_sdma_send_pkts() cari iovec PAGE_SIZE olmadıqda və paketi tamamlamaq üçün kifayət qədər məlumat ehtiva etmədikdə user_sdma_request->iovs-də növbəti iovec-ə keçə bilmir. Ötürülən paket iovec səhifələrindən yanlış məlumat ehtiva edəcək. Bu, hfi1 Verbs və ya PSM2-dən gələn SDMA paketləri ilə problem olmamışdır, çünki onlar yalnız SDMA sorğusunun quyruq iovec-i kimi PAGE_SIZE-dən əvvəl bitən iovec-lər yaradırlar. Bu xətaların düzəldilməsi SDMA pin keşi (struct mmu_rb_handler) ilə bağlı digər xətaları üzə çıxarır ki, bunlar buferləri PAGE_SIZE-də bitməyən çoxsaylı yük iovec-ləri olan istifadəçi SDMA sorğularının dəstəklənməsinə mane olur. Beləliklə, bu commit həmin məsələləri də düzəldir. PAGE_SIZE ilə bitməyən çoxsaylı iovec yüklü istifadəçi SDMA sorğularının rastlaşa biləcəyi mmu_rb_handler xətaları bunlardır: 1. mmu_rb_handler-də üst-üstə düşən yaddaş diapazonları təkrar pininqə səbəb olacaq. 2. Mövcud mmu_rb_handler qeydini (struct mmu_rb_node) genişləndirərkən mmu_rb kodu (1) mövcud qeydi kilid altında silir, (2) həmin kilidi buraxır, yeni səhifələri pin edir, (3) sonra genişləndirilmiş mmu_rb_node-u daxil etmək üçün kilidi yenidən əldə edir. Əgər başqası gəlib (2) və (3) arasında üst-üstə düşən qeyd daxil edərsə, (3)-dəki daxiletmə uğursuz olacaq. Bu halda uğursuzluq yolu kodu ya orijinal mmu_rb_node-dakı, ya da (2) və (3) arasında daxil edilmiş yeni mmu_rb_node-dakı _bütün_ səhifələri unpin edir. 3. hfi1_mmu_rb_remove_unless_exact()-də mmu_rb_node->refcount mmu_rb_handler->lock-dan kənarda artırılır. Nəticədə, mmu_rb_node->refcount artırılmazdan əvvəl mmu_rb_handler->lock-u əldə edib mmu_rb_node->refcount-u yoxlayan başqa bir thread tərəfindən mmu_rb_node çıxarıla bilər. 4. Yuxarıdakı #2 ilə əlaqədar olaraq, SDMA sorğusunun təqdim edilməsinin uğursuzluq yolu mmu_rb_node obyektini azad etməzdən əvvəl mmu_rb_node->refcount-u yoxlamır. Əgər iovec-ləri artıq azad edilmiş mmu_rb_node(lar)a göstəricilərə malik olan digər SDMA sorğuları davam edirsə, həmin SDMA sorğuları tamamlandıqda artıq azad edilmiş mmu_rb_node-lara olan həmin göstəricilərə müraciət ediləcək.

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc26 fev 2024
İlk görülmə26 fev 2024

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel5.10.180, 5.15.111, 6.1.28, 6.2.15, 6.3.2 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel4.3.0 ≤ v < 5.10.180, 5.11.0 ≤ v < 5.15.111, 5.16.0 ≤ v < 6.1.28, 6.2.0 ≤ v < 6.2.15, 6.3.0 ≤ v < 6.3.25.10.180, 5.15.111, 6.1.28, 6.2.15, 6.3.2

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.

CVE-2023-52474 · Linux Kernel · Dark Radar