CVE-2026-98395
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: powerpc/entry: Yeniden oynatılan kesme çıkışındaki irq_soft_mask bozulması düzeltildi __replay_soft_interrupts() bekleyen bir kesmeyi yeniden oynattığında (örneğin PACA_IRQ_DEC -> timer_interrupt), işleyiciyi sentetik bir pt_regs ile doğrudan çağırır. Her işleyicinin etrafındaki DEFINE_INTERRUPT_HANDLER_ASYNC sarmalayıcısı, çıkışta arch_interrupt_async_exit_prepare() fonksiyonunu çağırır; bu da arch_interrupt_exit_prepare() -> local_irq_disable() -> arch_local_irq_disable() fonksiyonlarını tetikler ve şu işlemi gerçekleştirir: irq_soft_mask_set(IRQS_DISABLED) /* 0x1 */ Bu işlem, irq_soft_mask değerini koşulsuz olarak IRQS_DISABLED (0x1) ile üzerine yazar ve IRQS_PMI_DISABLED (0x2) bitini siler. Sonuç olarak, işleyici __replay_soft_interrupts() fonksiyonuna döndüğünde irq_soft_mask değeri IRQS_ALL_DISABLED (0x3) yerine 0x1 olur. Normal şekilde alınan bir kesme için bu durum zararsızdır: Bir sonraki kesme her zaman irq_soft_mask değerini koşulsuz olarak IRQS_ALL_DISABLED yapan arch_interrupt_enter_prepare() üzerinden girer. Ancak yeniden oynatma sırasında, next_interrupt() fonksiyonu, arch_interrupt_enter_prepare() üzerinden geçmeden, yeniden oynatılan işleyiciler arasında doğrudan çağrılır, bu nedenle silinen bit asla geri yüklenmez. Ardından next_interrupt() bir WARNING tetikler: WARNING: arch/powerpc/kernel/irq_64.c:75 WARN_ON(irq_soft_mask_return() != IRQS_ALL_DISABLED) Uyarı, bir POWER10 pseries konuğu üzerinde önyüklemenin erken aşamalarında, kmem_cache_init_late() sırasında, bir spinlock serbest bırakılmasının bekleyen bir zamanlayıcı kesmesini işleyen kesme yeniden oynatmasını tetiklemesiyle gözlemlenmiştir. Hatanın onaylandığı hata ayıklayıcı durumu: timer_interrupt(®s) öncesinde: irq_soft_mask = 0x3 (IRQS_ALL_DISABLED) doğru irq_happened = 0x41 (HARD_DIS|REPLAYING) doğru timer_interrupt(®s) döndükten sonra: irq_soft_mask = 0x1 (IRQS_DISABLED) YANLIŞ - PMI biti silindi irq_happened = 0x41 değişmedi Çözüm, local_irq_disable() fonksiyonunun hard_irq_disable() ile değiştirilmesidir. İki nedenden dolayı burada doğru primitif hard_irq_disable() fonksiyonudur: 1. PPC64 üzerinde (hw_irq.h:301), yumuşak maskeyi 0x3 (hem IRQS_DISABLED hem de IRQS_PMI_DISABLED) olarak ayarlayan irq_soft_mask_set_return(IRQS_ALL_DISABLED) fonksiyonunu çağırarak PMI bitini korur ve WARNING hatasını düzeltir. Yaptığı ek işlemler (__hard_irq_disable(), PACA_IRQ_HARD_DIS |=) gereksizdir ancak güvenlidir çünkü çıkış yolundaki bu noktada her ikisi de zaten ayarlanmıştır; içerideki trace_hardirqs_off() fonksiyonu if (!arch_irqs_disabled_flags(flags)) ile korunduğundan iki kez tetiklenmeyecektir. 2. PPC32 üzerinde (hw_irq.h:467), hard_irq_disable() fonksiyonu arch_local_irq_disable() -> __hard_irq_disable() şeklinde eşleşir ve donanımda MSR[EE] bitini temizler. Bu tamamen doğrudur: PPC32'de yumuşak maske PACA mekanizması yoktur, dolayısıyla donanımsal devre dışı bırakma, irqentry_exit()'in gereksinimlerini karşılamanın doğru yoludur. Bu aynı zamanda PPC32'de irq_soft_mask_set() fonksiyonunun yalnızca CONFIG_PPC64 altında tanımlandığı bir derleme hatasını da düzeltir: arch/powerpc/include/asm/entry-common.h:273: error: implicit declaration of function 'irq_soft_mask_set' hard_irq_disable() kullanımı herhangi bir #ifdef gerektirmez ve giriş kodunun geri kalanının (örneğin entry-common.h:463) aynı PPC32/PPC64 ayrımını ele alma biçimiyle tutarlıdır.
Nasıl düzeltilir
- Linux Linux95cd316a896f1c1aa4ee4a817ba3d4691103c81b, 63a7531ca31f9f097d9cc1cc3fe86ae683cdabdd ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 334f3f6d7a1660fd65597bad9960bfa33a716d35 ≤ v < 95cd316a896f1c1aa4ee4a817ba3d4691103c81b, 334f3f6d7a1660fd65597bad9960bfa33a716d35 ≤ v < 63a7531ca31f9f097d9cc1cc3fe86ae683cdabdd, 7.2 | 95cd316a896f1c1aa4ee4a817ba3d4691103c81b, 63a7531ca31f9f097d9cc1cc3fe86ae683cdabdd |
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.