CVE-2024-35980
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: arm64: tlb: TLBI RANGE operandını düzəlt KVM/arm64, canlı miqrasiya zamanı çirkli səhifələr VMM tərəfindən toplandıqda və səhifə cədvəli qeydləri yazmaqdan qorunduğunda TLB-ləri təmizləmək üçün TLBI RANGE funksiyasına güvənir. Təəssüf ki, 117940aa6e5f commit-i ("KVM: arm64: Define kvm_tlb_flush_vmid_range()") səbəbindən TLBI RANGE təlimatına ötürülən operand düzgün müəyyən edilmir. Bu, TLB-lərin tam təmizlənməməsi və bəzi çirkli səhifələrin buraxılması səbəbindən canlı miqrasiyadan sonra təyinat VM-də crash-a gətirib çıxarır. Məsələn, 0x40000000 (1GB)-dən başlayaraq 8GB yaddaş ayrılmış VM-im var. Qeyd edək ki, hostda əsas səhifə ölçüsü 4KB-dir. Miqrasiyanın ortasında TLB-ləri təmizləmək üçün kvm_tlb_flush_vmid_range() icra olunur. O, MAX_TLBI_RANGE_PAGES-i __kvm_tlb_flush_vmid_range() və __flush_s2_tlb_range_op()-a arqument kimi ötürür. MAX_TLBI_RANGE_PAGES-ə uyğun gələn SCALE#3 və NUM#31 __TLBI_RANGE_NUM() tərəfindən dəstəklənmir. Bu xüsusi halda SCALE#3/2/1/0 üçün __TLBI_RANGE_NUM()-dan -1 qaytarılıb və __flush_tlb_range_op()-dakı dövr tərəfindən rədd edilib, nəticədə @scale dəyişəni underflow edərək -9 olub və operand kimi 0xffff708000040000 təyin edilib. Operand səhvdir, çünki o, etibarsız @scale və @num-a uyğun olaraq __TLBI_VADDR_RANGE() tərəfindən müəyyən edilib. __TLBI_RANGE_NUM()-u SCALE#3 və NUM#31 kombinasiyasını dəstəkləmək üçün genişləndirməklə düzəldin. Dəyişikliklərlə makrodan [-1 30] əvəzinə [-1 31] qaytarıla bilər, yəni yuxarıdakı nümunədə 0x200000 səhifə üçün TLB-lər SCALE#3 və NUM#31 ilə bir dəfəyə təmizlənə bilər. TLBI_RANGE_MASK makrosu artıq heç kim tərəfindən istifadə olunmadığı üçün çıxarılıb. Şərhlər də müvafiq olaraq düzəldilib.
Necə düzəltmək olar
- linux linux_kernel6.6.29, 6.8.7 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 | 6.6 ≤ v < 6.6.29, 6.7 ≤ v < 6.8.7, 6.9 | 6.6.29, 6.8.7 |
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.