CVE-2026-99092
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: riscv: patch: bpf-jit execmem adreslerinin işlenmesi düzeltildi 8718e5a3090b numaralı commit ("riscv: patch: skip fixmap mapping when kernel text is already writable"), patch_map() fonksiyonunun core_kernel_text() dalını CONFIG_STRICT_KERNEL_RWX seçeneğine bağlamış ve vmalloc dalını açıkça değiştirilmeden bırakmıştır. Bu dalın ayrı bir sorunu bulunmaktadır. Bu dal, yalnızca CONFIG_STRICT_MODULE_RWX etkinleştirildiğinde geçici olarak yazılabilir bir fixmap takma adı oluşturmakta, aksi takdirde hedefin doğrudan yazılabilir olduğunu varsayarak adresi değiştirilmeden döndürmektedir. Bu varsayım artık geçerli değildir: bpf_prog_pack_alloc, herhangi bir CONFIG_STRICT_*_RWX seçeneğinden bağımsız olarak, alloc_new_pack() içinde her paket için koşulsuz olarak set_memory_rox() çağrısı yapar; bu nedenle vmalloc alanındaki BPF metni, CONFIG_STRICT_MODULE_RWX ne derse desin salt okunurdur. CONFIG_STRICT_MODULE_RWX=n durumunda, patch_map() salt okunur adresi doğrudan döndürür, ardından gelen copy_to_kernel_nofault() bir sayfa hatası (page fault) alır ve -EFAULT döndürür. bpf_arch_text_copy() bunu -EINVAL değerine dönüştürür, bu da bpf_jit_binary_pack_finalize() üzerinden bpf_int_jit_compile() içindeki WARN_ON() kısmına iletilir ve program JIT işlemine tabi tutulmadan kalır. BPF'nin, bdc46e507b59 numaralı commit'te ("riscv: mm: make EXECMEM_KPROBES writable without CONFIG_STRICT_MODULE_RWX") kprobes'un düzeltildiği şekilde düzeltilemeyeceği unutulmamalıdır. EXECMEM_BPF zaten PAGE_KERNEL'dir, yani tahsis anında yazılabilirdir; salt okunur eşleme daha sonra, mimari kodun etkileyemeyeceği alloc_new_pack() içindeki genel kod tarafından kurulur. Bunun ele alınabileceği tek yer patch_map() fonksiyonudur. Bu, arm64 üzerinde b1480ed230ac numaralı commit ("arm64: patching: fix handling of execmem addresses") ile düzeltilen sorunla aynıdır ve çözüm de aynıdır: vmalloc alanının, yazılması için geçici bir takma ada ihtiyaç duyan yürütülebilir bellek tutup tutamayacağını aslında takip eden seçenek CONFIG_EXECMEM'dir. CONFIG_BPF_JIT, CONFIG_KPROBES ve CONFIG_MODULES bunun tamamını seçer. Bunun sadece CONFIG_MODULES=n durumuyla sınırlı olmadığına dikkat edilmelidir. arm64'ten farklı olarak riscv, CONFIG_ARCH_OPTIONAL_KERNEL_RWX seçeneğini belirler, dolayısıyla CONFIG_STRICT_MODULE_RWX, CONFIG_MODULES=y iken de devre dışı bırakılabilir ve hata bu konfigürasyonda da tetiklenebilir. !CONFIG_MMU derlemesi etkilenmemiştir: kendi __patch_insn_set() ve __patch_insn_write() uygulamalarına sahiptir ve asla patch_map() çağırmaz.
Nasıl düzeltilir
- Linux Linux562a35b9e0b3d9483d9472995219cadb3592db3d, 9e8fc7972b398e9dc2415ece283d8f64edac3858, f71d6ea3843c8038c431c2699482f246aea37ca0, a510e1ae8c9030750c2edf7b0bc9b186cd8c7a06 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 2c9e5d4a008293407836d29d35dfd4353615bd2f ≤ v < 562a35b9e0b3d9483d9472995219cadb3592db3d, 2c9e5d4a008293407836d29d35dfd4353615bd2f ≤ v < 9e8fc7972b398e9dc2415ece283d8f64edac3858, 2c9e5d4a008293407836d29d35dfd4353615bd2f ≤ v < f71d6ea3843c8038c431c2699482f246aea37ca0, 2c9e5d4a008293407836d29d35dfd4353615bd2f ≤ v < a510e1ae8c9030750c2edf7b0bc9b186cd8c7a06, 6.10 | 562a35b9e0b3d9483d9472995219cadb3592db3d, 9e8fc7972b398e9dc2415ece283d8f64edac3858, f71d6ea3843c8038c431c2699482f246aea37ca0, a510e1ae8c9030750c2edf7b0bc9b186cd8c7a06 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.