CVE-2024-57883
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: mm: hugetlb: müstəqil PMD səhifə cədvəli paylaşım sayğacı Folio refcount-u, split_huge_pages kimi çağırıcılar tərəfindən try_get_folio() vasitəsilə gözlənilməz şəkildə artırıla bilər. huge_pmd_unshare() funksiyasında pmd səhifə cədvəlinin paylaşıldığını yoxlamaq üçün refcount-dan istifadə edirik. Əgər refcount yuxarıda qeyd olunan çağırıcı tərəfindən artırılıbsa, bu yoxlama yanlış olur və bu, səhifə cədvəlinin sızmasına (leak) səbəb ola bilər: BUG: Bad page state in process sh pfn:109324 page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x66 pfn:0x109324 flags: 0x17ffff800000000(node=0|zone=2|lastcpupid=0xfffff) page_type: f2(table) raw: 017ffff800000000 0000000000000000 0000000000000000 0000000000000000 raw: 0000000000000066 0000000000000000 00000000f2000000 0000000000000000 page dumped because: nonzero mapcount ... CPU: 31 UID: 0 PID: 7515 Comm: sh Kdump: loaded Tainted: G B 6.13.0-rc2master+ #7 Tainted: [B]=BAD_PAGE Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015 Call trace: show_stack+0x20/0x38 (C) dump_stack_lvl+0x80/0xf8 dump_stack+0x18/0x28 bad_page+0x8c/0x130 free_page_is_bad_report+0xa4/0xb0 free_unref_page+0x3cc/0x620 __folio_put+0xf4/0x158 split_huge_pages_all+0x1e0/0x3e8 split_huge_pages_write+0x25c/0x2d8 full_proxy_write+0x64/0xd8 vfs_write+0xcc/0x280 ksys_write+0x70/0x110 __arm64_sys_write+0x24/0x38 invoke_syscall+0x50/0x120 el0_svc_common.constprop.0+0xc8/0xf0 do_el0_svc+0x24/0x38 el0_svc+0x34/0x128 el0t_64_sync_handler+0xc8/0xd0 el0t_64_sync+0x190/0x198 Problem damon, offline_page, page_idle və s. tərəfindən tetiklənə bilər ki, bunlar da səhifə cədvəlinin refcount-unu artıracaqdır. 1. Səhifə cədvəlinin özü "nonzero mapcount" hesabatından sonra atılacaqdır. 2. Səhifə cədvəli tərəfindən xəritələnmiş HugeTLB səhifəsi azad edilmir, çünki biz səhifə cədvəlini paylaşılan kimi qəbul edirik və paylaşılan səhifə cədvəli xəritədən çıxarılmayacaq (unmapped). Müstəqil PMD səhifə cədvəli paylaşım sayğacının (shared count) tətbiqi ilə problem həll edilmişdir. Şərhdə qeyd edildiyi kimi, pt_index/pt_mm/pt_frag_refcount s390 gmap, x86 pgds və powerpc üçün istifadə olunur, pt_share_count isə x86/arm64/riscv pmds üçün istifadə olunur, buna görə də biz həmin sahəni pt_share_count kimi yenidən istifadə edə bilərik.
Necə düzəltmək olar
- linux linux_kernel5.10.239, 5.15.186, 6.1.142, 6.6.72, 6.12.9 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 | 2.6.20 ≤ v < 5.10.239, 5.11 ≤ v < 5.15.186, 5.16 ≤ v < 6.1.142, 6.2 ≤ v < 6.6.72, 6.7 ≤ v < 6.12.9, 6.13 | 5.10.239, 5.15.186, 6.1.142, 6.6.72, 6.12.9 |
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.