CVE-2026-45990
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: slub: krealloc()-da məlumat itkisi və bufer daşmasının düzəldilməsi 2cd8231796b5 ("mm/slub: allow to set node and align in k[v]realloc") commit-i obyekt kiçildildiyi zaman belə, əgər orijinal obyekt yeni hizalama (alignment) və ya NUMA node tələblərini ödəmirse, yenidən bölgünü (reallocation) məcburi etmək imkanını tətbiq etmişdir. Bu, yenidən bölgünün ehtiyat yolu (fallback path) hissəsində iki xətaya səbəb olmuşdur: 1. NUMA miqrasiyası zamanı məlumat itkisi: 'alloc_new'-ə keçid 'ks' və 'orig_size' dəyişənləri başladılmamışdan əvvəl baş verir. Nəticədə, 'alloc_new' blokundakı memcpy() funksiyası yeni bölgüyə 0 bayt kopyalayır. 2. Kiçiltmə zamanı bufer daşması: Yeni hizalamanı məcburi edərkən obyekti kiçiltdikdə, 'new_size' köhnə ölçüdən daha kiçik olur. Lakin memcpy() köhnə ölçüdən ('orig_size ?: ks') istifadə etdiyi üçün sərhədlərdən kənar yazma (out-of-bounds write) baş verir. Eyni bufer daşması xətası kvrealloc() ehtiyat yolunda da mövcuddur; burada köhnə bucket ölçüsü ksize(p), yeni ölçü ilə məhdudlaşdırılmadan yeni buferə kopyalanır. Problemi nümayiş etdirən sadə reproduser: // məsələn, lkdtm-ə KREALLOC_SHRINK_OVERFLOW kimi əlavə edin while (1) { void *p = kmalloc(128, GFP_KERNEL); p = krealloc_node_align(p, 64, 256, GFP_KERNEL, NUMA_NO_NODE); kfree(p); } problemi göstərir: ================================================================== BUG: KFENCE: out-of-bounds write in memcpy_orig+0x68/0x130 Out-of-bounds write at 0xffff8883ad757038 (120B right of kfence-#47): memcpy_orig+0x68/0x130 krealloc_node_align_noprof+0x1c8/0x340 lkdtm_KREALLOC_SHRINK_OVERFLOW+0x8c/0xc0 [lkdtm] lkdtm_do_action+0x3a/0x60 [lkdtm] ... kfence-#47: 0xffff8883ad756fc0-0xffff8883ad756fff, size=64, cache=kmalloc-64 allocated by task 316 on cpu 7 at 97.680481s (0.021813s ago): krealloc_node_align_noprof+0x19c/0x340 lkdtm_KREALLOC_SHRINK_OVERFLOW+0x8c/0xc0 [lkdtm] lkdtm_do_action+0x3a/0x60 [lkdtm] ... ================================================================== Həll yolu: Köhnə ölçünün hesablanmasını __do_krealloc() funksiyasının yuxarı hissəsinə daşımaq və bütün kopyalama uzunluqlarını yeni bölgü ölçüsü ilə məhdudlaşdırmaqdır.
Necə düzəltmək olar
- linux linux_kernel6.18.27, 7.0.4 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.18 ≤ v < 6.18.27, 6.19 ≤ v < 7.0.4 | 6.18.27, 7.0.4 |
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.