CVE-2024-50301
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: security/keys: key_task_permission funksiyasında slab-out-of-bounds xətasının düzəldilməsi KASAN hüdudlardan kənar oxuma (out of bounds read) hesabatı verir: BUG: KASAN: slab-out-of-bounds in __kuid_val include/linux/uidgid.h:36 BUG: KASAN: slab-out-of-bounds in uid_eq include/linux/uidgid.h:63 [inline] BUG: KASAN: slab-out-of-bounds in key_task_permission+0x394/0x410 security/keys/permission.c:54 Read of size 4 at addr ffff88813c3ab618 by task stress-ng/4362 CPU: 2 PID: 4362 Comm: stress-ng Not tainted 5.10.0-14930-gafbffd6c3ede #15 Call Trace: __dump_stack lib/dump_stack.c:82 [inline] dump_stack+0x107/0x167 lib/dump_stack.c:123 print_address_description.constprop.0+0x19/0x170 mm/kasan/report.c:400 __kasan_report.cold+0x6c/0x84 mm/kasan/report.c:560 kasan_report+0x3a/0x50 mm/kasan/report.c:585 __kuid_val include/linux/uidgid.h:36 [inline] uid_eq include/linux/uidgid.h:63 [inline] key_task_permission+0x394/0x410 security/keys/permission.c:54 search_nested_keyrings+0x90e/0xe90 security/keys/keyring.c:793 Bu problem həmçinin syzbot tərəfindən də bildirilmişdir. Problem aşağıdakı addımlarla təkrar yaradıla bilər (daha ətraflı [1]): 1. Oxşar heşləri olan və '0xxxxxxxe6' şablonu ilə bitən 32-dən çox giriş əldə edin. 2. Sistemi yenidən başladın və 1-ci addımda əldə edilən açarları əlavə edin. Reproducer bu problemin necə baş verdiyini nümayiş etdirir: 1. search_nested_keyrings funksiyasında, düyündəki slotlar üzrə iterasiya zamanı (ascend_to_node teqi altında), əgər slot göstəricisi meta-dırsa və node->back_pointer != NULL-dırsa (bu kök düyün olduğu anlamına gəlir), o, descend_to_node hissəsinə keçəcək. Lakin bir istisna var. Əgər node kökdürsə və slotlardan biri shortcut-a işarə edirsə, o, keyring kimi qəbul ediləcək. 2. ptr-nin keyring olub-olmaması keyring_ptr_is_keyring funksiyası ilə müəyyən edilir. Lakin KEYRING_PTR_SUBTYPE 0x2UL-dur ki, bu da ASSOC_ARRAY_PTR_SUBTYPE_MASK ilə eynidir. 3. Oxşar heşlərə malik 32 açar ağaca əlavə edildikdə, ROOT oxşar olmayan heşli açarlara (məsələn, slot 0) malik olur və shortcut istifadə etmədən NODE A-nı bölür. NODE A bütün heşləri xxe6 olan açarlarla doldurulduqda, açarlar oxşar olur və NODE A shortcut ilə bölünür. Nəticədə, slot 6-nın shortcut-a işarə etdiyi aşağıdakı strukturda ağac formalaşır. NODE A +------>+---+ ROOT | | 0 | xxe6 +---+ | +---+ xxxx | 0 | shortcut : : xxe6 +---+ | +---+ xxe6 : : | | | xxe6 +---+ | +---+ | 6 |---+ : : xxe6 +---+ +---+ xxe6 : : | f | xxe6 +---+ +---+ xxe6 | f | +---+ 4. Yuxarıda qeyd edildiyi kimi, əgər kökün bir slotu (slot 6) shortcut-a işarə edirsə, o, səhvən key*-ə ötürülə bilər ki, bu da hüdudlardan kənar oxumaya (read out-of-bounds) səbəb olur. Bu problemi həll etmək üçün, düyünün kök olub-olmamasından asılı olmayaraq, əgər ptr shortcut-dırsa, descend_to_node hissəsinə keçid edilməlidir. [1] https://lore.kernel.org/linux-kernel/[email protected]/
Necə düzəltmək olar
- linux linux_kernel4.19.324, 5.4.286, 5.10.230, 5.15.172, 6.1.117, 6.6.61, 6.11.8 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 | 3.13 ≤ v < 4.19.324, 4.20 ≤ v < 5.4.286, 5.5 ≤ v < 5.10.230, 5.11 ≤ v < 5.15.172, 5.16 ≤ v < 6.1.117, 6.2 ≤ v < 6.6.61, 6.7 ≤ v < 6.11.8, 6.12 | 4.19.324, 5.4.286, 5.10.230, 5.15.172, 6.1.117, 6.6.61, 6.11.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.
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.