CVE-2026-99092
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: riscv: patch: bpf-jit execmem ünvanlarının idarə edilməsinin düzəldilməsi 8718e5a3090b nömrəli commit ("riscv: patch: kernel mətni artıq yazıla biləndirsə, fixmap xəritələnməsini ötür") patch_map() funksiyasının core_kernel_text() budağını CONFIG_STRICT_KERNEL_RWX ilə məhdudlaşdırmış və vmalloc budağını açıq şəkildə dəyişdirilmədən saxlamışdır. Həmin budaqda ayrıca bir problem mövcuddur. Həmin budaq yalnız CONFIG_STRICT_MODULE_RWX aktiv olduqda müvəqqəti yazıla bilən fixmap aliası yaradır, əks halda hədəfin birbaşa yazıla bildiyini fərz edir və ünvanı dəyişdirilmədən qaytarır. Bu fərziyyə artıq keçərli deyil: bpf_prog_pack_alloc, istənilən CONFIG_STRICT_*_RWX seçimindən asılı olmayaraq, alloc_new_pack() daxilində hər bir paket üçün şərtsiz olaraq set_memory_rox() funksiyasını çağırır, buna görə də vmalloc sahəsindəki BPF mətni, CONFIG_STRICT_MODULE_RWX parametrindən asılı olmayaraq yalnız oxuna biləndir. CONFIG_STRICT_MODULE_RWX=n olduğu halda, patch_map() yalnız oxuna bilən ünvanı birbaşa qaytarır, növbəti copy_to_kernel_nofault() isə səhifə xətası (page fault) verir və -EFAULT qaytarır. bpf_arch_text_copy() bunu -EINVAL-ə çevirir, bu isə bpf_jit_binary_pack_finalize() vasitəsilə bpf_int_jit_compile() funksiyasındakı WARN_ON()-ə çatır və proqram JIT-lənməmiş qalır. Qeyd etmək lazımdır ki, BPF-i kprobes kimi bdc46e507b59 nömrəli commit ("riscv: mm: CONFIG_STRICT_MODULE_RWX olmadan EXECMEM_KPROBES-i yazıla bilən edin") ilə düzəltmək mümkün deyil. EXECMEM_BPF artıq PAGE_KERNEL-dir, yəni ayrılma zamanı yazıla biləndir; yalnız oxuna bilən xəritələmə daha sonra alloc_new_pack() daxilindəki ümumi kod tərəfindən təsis edilir və memarlıq kodu buna təsir göstərə bilmir. Bunun həll edilə biləcəyi yeganə yer patch_map() funksiyasıdır. Bu, arm64 platformasında b1480ed230ac nömrəli commit ("arm64: patching: fix handling of execmem addresses") ilə düzəldilən problemlə eynidir və həlli də eynidir: vmalloc sahəsinin yazılması üçün müvəqqəti alias tələb edən icra oluna bilən yaddaşı saxlaya bilib-bacarmayacağını faktiki olaraq CONFIG_EXECMEM izləyir. CONFIG_BPF_JIT, CONFIG_KPROBES və CONFIG_MODULES parametrlərinin hamısı onu seçir. Bu problemin yalnız CONFIG_MODULES=n ilə məhdudlaşmadığını qeyd edin. arm64-dən fərqli olaraq, riscv CONFIG_ARCH_OPTIONAL_KERNEL_RWX seçir, buna görə də CONFIG_STRICT_MODULE_RWX parametri CONFIG_MODULES=y olduqda da söndürülə bilər və xəta həmin konfiqurasiyada da baş verə bilər. !CONFIG_MMU qurulması bundan təsirlənmir: onun öz __patch_insn_set() və __patch_insn_write() tətbiqləri var və heç vaxt patch_map() funksiyasını çağırmır.
Necə düzəltmək olar
- Linux Linux562a35b9e0b3d9483d9472995219cadb3592db3d, 9e8fc7972b398e9dc2415ece283d8f64edac3858, f71d6ea3843c8038c431c2699482f246aea37ca0, a510e1ae8c9030750c2edf7b0bc9b186cd8c7a06 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 2c9e5d4a008293407836d29d35dfd4353615bd2f ≤ v < 562a35b9e0b3d9483d9472995219cadb3592db3d, 2c9e5d4a008293407836d29d35dfd4353615bd2f ≤ v < 9e8fc7972b398e9dc2415ece283d8f64edac3858, 2c9e5d4a008293407836d29d35dfd4353615bd2f ≤ v < f71d6ea3843c8038c431c2699482f246aea37ca0, 2c9e5d4a008293407836d29d35dfd4353615bd2f ≤ v < a510e1ae8c9030750c2edf7b0bc9b186cd8c7a06, 6.10 | 562a35b9e0b3d9483d9472995219cadb3592db3d, 9e8fc7972b398e9dc2415ece283d8f64edac3858, f71d6ea3843c8038c431c2699482f246aea37ca0, a510e1ae8c9030750c2edf7b0bc9b186cd8c7a06 |
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.