CVE-2025-39767
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: LoongArch: PLT/GOT sayımını optimize ederek modül yükleme süresini iyileştirme CONFIG_KASAN, CONFIG_PREEMPT_VOLUNTARY_BUILD ve CONFIG_PREEMPT_VOLUNTARY aynı anda etkinleştirildiğinde yumuşak kilitlenme meydana gelir; ilgili günlükler aşağıdaki gibidir: rcu: INFO: rcu_sched self-detected stall on CPU ... Call Trace: [<900000000024f9e4>] show_stack+0x5c/0x180 [<90000000002482f4>] dump_stack_lvl+0x94/0xbc [<9000000000224544>] rcu_dump_cpu_stacks+0x1fc/0x280 [<900000000037ac80>] rcu_sched_clock_irq+0x720/0xf88 [<9000000000396c34>] update_process_times+0xb4/0x150 [<90000000003b2474>] tick_nohz_handler+0xf4/0x250 [<9000000000397e28>] __hrtimer_run_queues+0x1d0/0x428 [<9000000000399b2c>] hrtimer_interrupt+0x214/0x538 [<9000000000253634>] constant_timer_interrupt+0x64/0x80 [<9000000000349938>] __handle_irq_event_percpu+0x78/0x1a0 [<9000000000349a78>] handle_irq_event_percpu+0x18/0x88 [<9000000000354c00>] handle_percpu_irq+0x90/0xf0 [<9000000000348c74>] handle_irq_desc+0x94/0xb8 [<9000000001012b28>] handle_cpu_irq+0x68/0xa0 [<9000000001def8c0>] handle_loongarch_irq+0x30/0x48 [<9000000001def958>] do_vint+0x80/0xd0 [<9000000000268a0c>] kasan_mem_to_shadow.part.0+0x2c/0x2a0 [<90000000006344f4>] __asan_load8+0x4c/0x120 [<900000000025c0d0>] module_frob_arch_sections+0x5c8/0x6b8 [<90000000003895f0>] load_module+0x9e0/0x2958 [<900000000038b770>] __do_sys_init_module+0x208/0x2d0 [<9000000001df0c34>] do_syscall+0x94/0x190 [<900000000024d6fc>] handle_syscall+0xbc/0x158 Analiz sonucunda bunun nedeni, amdgpu modülünün yüklenme hızının yavaş olması nedeniyle CPU'nun uzun süre meşgul kalması ve ardından yumuşak kilitlenmenin oluşmasıdır. Bir modül yüklenirken module_frob_arch_sections(), tüm RELA'ları işlemek için gereken PLT/GOT sayısını belirlemeye çalışır. Tüm RELA'ları işlemek için gereken PLT/GOT sayısını bulmak üzere count_max_entries() çağrılır ve bu işlev, sıralı olmayan bir veri kümesinde O(n^2) karmaşıklığına sahip bir sayım algoritması kullanır. Bunu hızlandırmak için yeniden konumlandırma listesi info ve addend değerlerine göre sıralanır. Böylece yinelenen bir yeniden konumlandırmayı denetlemek için yalnızca önceki girdiyle karşılaştırma yapılması yeterli olur. Bu, algoritmanın karmaşıklığını commit d4e0340919fb ("arm64/module: Optimize module load time by optimizing PLT counting") içinde yapıldığı gibi O(n log n) düzeyine düşürür. Bu, çok sayıda yeniden konumlandırma içeren modüller için modül yükleme süresinde önemli bir azalma sağlar. Bu yama uygulandıktan sonra yumuşak kilitlenme sorunu çözülmüş ve çekirdek "Call Trace" olmadan normal şekilde başlamıştır. Varsayılan yapılandırma kullanılarak bazı modüller test edilmiş ve sonuçlar aşağıdaki gibidir: Module Size ip_tables 36K fat 143K radeon 2.5MB amdgpu 16MB Bu yama olmadan: Module Module load time (ms) Count(PLTs/GOTs) ip_tables 18 59/6 fat 0 162/14 radeon 54 1221/84 amdgpu 1411 4525/1098 Bu yama ile: Module Module load time (ms) Count(PLTs/GOTs) ip_tables 18 59/6 fat 0 162/14 radeon 22 1221/84 amdgpu 45 4525/1098
Nasıl düzeltilir
- linux linux_kernel6.6.103, 6.12.44, 6.16.4 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 5.19 ≤ v < 6.6.103, 6.7 ≤ v < 6.12.44, 6.13 ≤ v < 6.16.4, 6.17 | 6.6.103, 6.12.44, 6.16.4 |
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.