CVE-2024-43880

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: mlxsw: spectrum_acl_erp: Obyektlərin iç-içə yerləşməsi ilə bağlı xəbərdarlığın düzəldilməsi Spectrum-2 və daha yeni ASIC-lərdə ACL-lər alqoritmik TCAM (A-TCAM) və ya adi dövrə TCAM-ində (C-TCAM) yerləşə bilər. Birincisi daha çox ACL (yəni, tc filtrləri) ehtiva edə bilər, lakin hər bir bölgədəki (yəni, tc zəncirindəki) maskaların sayı məhduddur. Yuxarıda qeyd olunan məhdudiyyətin təsirlərini azaltmaq üçün cihaz, maskaları yalnız ardıcıl 8 bitə qədər fərqlənən filtrlərin tək bir maskanı paylaşmasına icazə verir. Məsələn, dst_ip/25, 1 bitlik delta ilə dst_ip/24 istifadə edilərək təmsil oluna bilər. C-TCAM-də istifadə olunan maskaların sayına məhdudiyyət yoxdur (və buna görə də maska aqreqasiyasını dəstəkləmir), lakin məhdud sayda filtr ehtiva edə bilər. Drayver, maska aqreqasiyasını həyata keçirmək üçün "objagg" kitabxanasından istifadə edir və ona filtrin maskasından və filtrin A-TCAM-ə yoxsa C-TCAM-ə daxil edilməli olduğundan ibarət obyektləri ötürür, çünki müxtəlif TCAM-lərdəki filtrlər bir maskanı paylaşa bilməz. Yaradılan obyektlər çoxluğu filtrlərin daxiletmə sırasından asılıdır və mütləq şəkildə optimal deyil. Buna görə də, drayver dövri olaraq bütün mövcud obyektlərə baxaraq daha optimal çoxluğun ("hints") hesablanmasını kitabxanadan xahiş edir. Kitabxana drayverdən iki obyektin aqreqasiya oluna bilib-bilməyəcəyini soruşduqda, drayver yalnız təqdim olunan maskaları müqayisə edir və A-TCAM / C-TCAM göstəricisini nəzərə almır. Bu doğru yanaşmadır, çünki məqsəd mümkün qədər çox filtri A-TCAM-ə köçürməkdir. Drayver həmçinin iki eyni maskanın aqreqasiya olunmasını qadağan edir, çünki bu yalnız A-TCAM-də konfliktin qarşısını almaq üçün birinin qəsdən C-TCAM-ə yerləşdirildiyi halda baş verə bilər. Yuxarıdakılar aşağıdakı ipucları (hints) çoxluğuna səbəb ola bilər: H1: {mask X, A-TCAM} -> H2: {mask Y, A-TCAM} // X = Y + delta H3: {mask Y, C-TCAM} -> H4: {mask Z, A-TCAM} // Y = Z + delta Kitabxanadan ipuclarını aldıqdan sonra drayver, hesablanmış ipuclarına əsaslanaraq və keçid zamanı cihaza hər iki bölgədə axtarış aparmağı tapşıraraq filtrləri bir bölgədən digərinə köçürməyə başlayacaq. Maskası X olan bir filtrin yeni bölgədə A-TCAM-ə köçürüldüyü fərz edilərsə, ipucu axtarışı H1-i qaytaracaq. H2, H1-in valideyni olduğu üçün kitabxana onunla əlaqəli obyekti tapmağa çalışacaq və zərurət olduqda onu yaradacaq ki, bu halda başqa bir (rekursiv) ipucu axtarışı həyata keçiriləcək. {mask Y, A-TCAM} üçün bu ipucu axtarışı ya H2-ni, ya da H3-ü qaytaracaq, çünki drayver kitabxanaya A-TCAM / C-TCAM göstəricisini nəzərə almayan obyekt müqayisə funksiyasını ötürür. Bu, sonda kitabxana tərəfindən dəstəklənməyən iç-içə yerləşmiş obyektlərə gətirib çıxara bilər [1]. Problem, obyekt müqayisə funksiyasının həm drayverdən, həm də kitabxanadan silinməsi ilə həll edilmişdir, çünki bu funksiyanın yeganə istifadəçisi drayver idi. Beləliklə, axtarış yalnız dəqiq uyğunluqları qaytaracaq. Problemi vaxtında təkrar edə biləcək etibarlı bir reproduserim yoxdur, lakin düzəlişdən əvvəl problem bir neçə dəqiqə ərzində özünü göstərirdi, düzəlişdən sonra isə bir saatdan artıq müddət ərzində təkrarlanmadı. Qeyd edin ki, ipuclarının hazırkı faydalılığı məhduddur, çünki onlar C-TCAM göstəricisini ehtiva edir və faktiki olaraq baş verməyən aqreqasiyanı təmsil edirlər. Bu məsələ net-next versiyasında həll olunacaq. [1] WARNING: CPU: 0 PID: 153 at lib/objagg.c:170 objagg_obj_parent_assign+0xb5/0xd0 Modules linked in: CPU: 0 PID: 153 Comm: kworker/0:18 Not tainted 6.9.0-rc6-custom-g70fbc2c1c38b #42 Hardware name: Mellanox Technologies Ltd. MSN3700C/VMOD0008, BIOS 5.11 10/10/2018 Workqueue: mlxsw_core mlxsw_sp_acl_tcam_vregion_rehash_work RIP: 0010:objagg_obj_parent_assign+0xb5/0xd0 [...] Call Trace: <TASK> __objagg_obj_get+0x2bb/0x580 objagg_obj_get+0xe/0x80 mlxsw_sp_acl_erp_mask_get+0xb5/0xf0 mlxsw_sp_acl_atcam_entry_add+0xe8/0x3c0 mlxsw_sp_acl_tcam_entry_create+0x5e/0xa0 mlxsw_sp_acl_tcam_vchunk_migrate_one+0x16b/0x270 mlxsw_sp_acl_tcam_vregion_rehash_work+0xbe/0x510 process_one_work+0x151/0x370

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc21 avq 2024
İlk görülmə21 avq 2024

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel5.4.282, 5.10.224, 5.15.165, 6.1.103, 6.6.44, 6.10.3 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel5.1 ≤ v < 5.4.282, 5.5 ≤ v < 5.10.224, 5.11 ≤ v < 5.15.165, 5.16 ≤ v < 6.1.103, 6.2 ≤ v < 6.6.44, 6.7 ≤ v < 6.10.35.4.282, 5.10.224, 5.15.165, 6.1.103, 6.6.44, 6.10.3

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