CVE-2025-39767
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: LoongArch: PLT/GOT sayımının optimallaşdırılması ilə modul yükləmə vaxtının optimallaşdırılması CONFIG_KASAN, CONFIG_PREEMPT_VOLUNTARY_BUILD və CONFIG_PREEMPT_VOLUNTARY eyni anda aktivləşdirildikdə, yumşaq kilidlənmə (soft deadlock) baş verir, müvafiq loqlar aşağıdakı kimidir: 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 Analizdən sonra məlum oldu ki, bu, amdgpu modulunun yüklənmə sürətinin aşağı olması səbəbindən CPU-nun uzun müddət məşğul qalmasına və nəticədə yumşaq kilidlənməyə gətirib çıxarır. Modul yüklənərkən, module_frob_arch_sections() bütün RELA-ları idarə etmək üçün lazım olacaq PLT/GOT sayını müəyyən etməyə çalışır. O, sırasız datada axtarış aparmaq üçün O(n^2) mürəkkəbliyinə malik olan count_max_entries() funksiyasını çağırır. Prosesi sürətləndirmək üçün relokasiya siyahısını info və addend üzrə sıralayırıq. Beləliklə, təkrarlanan relokasiyanı yoxlamaq üçün yalnız əvvəlki elementlə müqayisə aparmaq kifayət edir. Bu, d4e0340919fb ("arm64/module: Optimize module load time by optimizing PLT counting") commit-ində olduğu kimi, alqoritmin mürəkkəbliyini O(n log n)-ə endirir. Bu, çox sayda relokasiyası olan modulların yüklənmə vaxtında əhəmiyyətli azalma təmin edir. Bu yamanın tətbiqindən sonra yumşaq kilidlənmə problemi həll edilmişdir və kernel "Call Trace" olmadan normal şəkildə başlayır. Bəzi modulları sınaqdan keçirmək üçün standart konfiqurasiyadan istifadə etdikdə nəticələr belədir: Module Size ip_tables 36K fat 143K radeon 2.5MB amdgpu 16MB 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 Yama ilə: 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
Necə düzəltmək olar
- linux linux_kernel6.6.103, 6.12.44, 6.16.4 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 | 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 |
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.