CVE-2026-64235
Təsvir
Linux kernel-də aşağıdakı zəiflik həll edilmişdir: x86/ftrace: dinamik trampolinlərdə %rip-ə nisbətən percpu istinadların yerdəyişməsi x86 retbleed-dən təsirlənən platformada (məs.: Skylake) CONFIG_CALL_DEPTH_TRACKING aktiv olduqda, retbleed=stuff ilə dinamik ftrace trampolininin qeydiyyatı izlənən funksiyaya ilk çağırışda crash verir: BUG: unable to handle page fault for address: ffff88817ae18880 #PF: supervisor write access in kernel mode #PF: error_code(0x0002) - not-present page PGD 4b53067 P4D 4b53067 PUD 0 Oops: Oops: 0002 [#1] SMP PTI CPU: 3 UID: 0 PID: 187 Comm: usleep Not tainted 7.0.10 #243 PREEMPT(full) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Arch Linux 1.17.0-2-2 04/01/2014 Code: 24 78 00 00 00 00 48 89 ea 48 89 54 24 20 48 8b b4 24 b8 00 00 00 48 8b bc 24 b0 00 00 00 48 89 bc 24 80 00 00 00 48 83 ef 05 <65> 48 c1 3d 1f a8 b6 02 05 48 8b 15 f6 00 00 00 4c 89 3c 24 4c 89 Call Trace: <TASK> ? find_held_lock ? exc_page_fault ? lock_release ? __x64_sys_clock_nanosleep ? lockdep_hardirqs_on_prepare ? trace_hardirqs_on __x64_sys_clock_nanosleep do_syscall_64 ? exc_page_fault ? call_depth_return_thunk entry_SYSCALL_64_after_hwframe ... Kernel panic - not syncing: Fatal exception Bu kiçik reproduktor crash-ı asanlıqla tetikləməyə imkan verir: # echo 'p __x64_sys_clock_nanosleep' > /sys/kernel/tracing/kprobe_events # echo 1 > /sys/kernel/tracing/events/kprobes/p___x64_sys_clock_nanosleep_0/enable # usleep 1 GDB altında crash-ın monitorinqi çağırış dərinliyini artıran dəqiq təlimatı göstərir: sarq $5, %gs:__x86_call_depth(%rip) Bu təlimat ftrace_64.S-dən ftrace_regs_caller tərəfindən yerləşdirilən təlimata uyğundur. Bu yaradılan kod, ehtimal ki, 59bec00ace28 ("x86/percpu: Introduce %rip-relative addressing to PER_CPU_VAR()") tətbiq edilənə qədər düzgün işləyirdi: bu, çağırış dərinliyinin uçotunun ünvanlaşdırılmasını mütləq ünvana əsaslanmaq əvəzinə $rip-ə nisbətən etmişdir. Bu kodun dəqiq yeri trampolinin yaddaşda harada yerləşdiyindən asılı olduğundan, per-cpu __x86_call_depth dəyərini düzgün tapmaq üçün müvafiq yerdəyişmə işləmə vaxtında tənzimlənməlidir, əks halda hədəf ünvan səhv olur və yuxarıda görülən page fault-a səbəb olur. Kopyalanmış CALL_DEPTH_ACCOUNT təlimatının (ftrace_regs_caller-dən) %rip-ə nisbətən yerdəyişməsini text_poke_apply_relocation() çağıraraq düzəldin, məsələn x86 BPF JIT kompilyatorunun x86_call_depth_emit_accounting() vasitəsilə etdiyi kimi. Bu, həm ftrace_caller, həm də ftrace_regs_caller-dəki hər iki CALL_DEPTH_ACCOUNT slotunu düzəldir. [ bp: Massage. ]
Necə düzəltmək olar
- linux linux_kernel6.12.93, 6.18.35, 7.0.12 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 | 6.9 ≤ v < 6.12.93, 6.13 ≤ v < 6.18.35, 6.19 ≤ v < 7.0.12, 7.1 | 6.12.93, 6.18.35, 7.0.12 |
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.