CVE-2026-98220

Naməlum

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: sched_ext: kfunc alt-planlayıcı (sub-sched) xəta yollarında NULL sched deref xətasını düzəltmək Kök planlayıcıya alt-planlayıcılar qoşulduqda, COMPAT kfunc örtükləri olan scx_bpf_select_cpu_and() və scx_bpf_dsq_insert_vtime() çağırışı rədd edir və @p-nin planlayıcısına hesabat verir: scx_error(scx_task_sched(p), "... istifadə edilməlidir"); Örtüklərə planlayıcısı olmayan tapşırıqlarla (tasks) daxil olmaq mümkündür. scx_bpf_select_cpu_and() funksiyası select_cpu kfunc qrupundadır və scx_kfunc_context_filter() bunu BPF_PROG_TYPE_SYSCALL proqramları üçün açır; scx_bpf_dsq_insert_vtime() isə enqueue_dispatch qrupundadır və ops.enqueue() ilə ops.dispatch() hər hansı bir KF_RCU tapşırığı ilə bunu çağıra bilər — bu qrupun kf_tasks validasiyası yoxdur və scx_dsq_insert_preamble() məhz @p-nin ixtiyari bir tapşırıq ola biləcəyi üçün tapşırıq mülkiyyətini scx_task_on_sched() ilə yoxlayır. scx_task_sched(p) funksiyası p->scx.sched-dir ki, bu da sched_ext_dead()-dən keçmiş tapşırıqlar üçün (hansı ki, çıxış zamanı scx_disable_and_exit_task() vasitəsilə təmizlənir) və boşda olan (idle) tapşırıqlar üçün (aktivləşdirmə yolları onları ötürür, çünki onlar heç vaxt SCX vasitəsilə planlaşdırılmır) NULL olur. Bu həmçinin @p-nin pi_lock və ya rq kilidini gözləyən rcu_dereference_protected() funksiyasıdır, lakin heç bir örtük bu kilidləri saxlamır. scx_error()-ə NULL ötürmək scx_vexit()-ə çatır, o isə sch->exit_info-nu dereference edərək kernel-də "oops" xətasına səbəb olur. Düzəliş hazırlanarkən sınaqdan keçirilən konkret tetikleyici: alt-planlayıcı qoşulu olduğu halda, çıxmış lakin hələ təmizlənməmiş (exited-but-not-reaped) tapşırıq üzərində select_cpu_and örtüyünü çağıran BPF_PROG_TYPE_SYSCALL proqramı (zombi tapşırıq təmizlənmədikcə onun pid-si tapıla bilir; xətaya səbəb olan təlimat scx_vexit() prologunda RDI=NULL və 0x398 sch->exit_info-nun ofseti olmaqla "mov r15,[rdi+0x398]" əmridir): sched_ext: BPF scheduler "kfunc_subsched_null" enabled sched_ext: BPF sub-scheduler "kfunc_subsched_null" enabled sched_ext: Unassociated program run_select_cpu_ (id 76) BUG: kernel NULL pointer dereference, address: 0000000000000398 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page Oops: Oops: 0000 [#1] SMP NOPTI CPU: 7 UID: 0 PID: 8201 Comm: kfunc_test_runn Tainted: G W RIP: 0010:scx_vexit+0x25/0xa0 Code: ... <4c> 8b bf 98 03 00 00 ... CR2: 0000000000000398 Call Trace: <TASK> __scx_exit+0x4f/0x70 scx_bpf_select_cpu_and+0xab/0xb0 bpf_prog_430ed61a7b66e03a_run_select_cpu_and+0x9c/0xe7 ? __x64_sys_bpf+0x2c/0x40 bpf_prog_test_run_syscall+0x130/0x2f0 __sys_bpf+0x930/0x10d0 ? __x64_sys_bpf+0x2c/0x40 __x64_sys_bpf+0x2c/0x40 do_syscall_64+0xbc/0x460 entry_SYSCALL_64_after_hwframe+0x76/0x7e </TASK> Bunun əvəzinə, @p-nin planlayıcısını RCU altında oxuyun, bunu örtüklər öz guard(rcu())-larından edə bilərlər: müəyyən edilə bildiyi zaman xəta verilsin, müəyyən edilə bilməyəndə isə (@p sched_ext_dead()-dən keçmiş tapşırıq və ya boşda olan tapşırıq olduqda) hesabat veriləcək aşkar bir problem olmadığı üçün, heç bir planlayıcıda xəta yaratmadan çağırış əvvəlki kimi sadəcə rədd edilsin. Bu COMPAT örtükləri köhnəlmə dövrü bitdikdən sonra silinməsi planlaşdırılır, lakin həmin vaxta qədər — və onların silinmə cədvəlindən asılı olmayaraq — onlara təqdim olunan tapşırıqlarda kernel-i "oops" vəziyyətinə salmamalıdırlar.

CiddilikNaməlum
CVSS—
İstismar ehtimalı9. faiz dərəcəsi0,2%
MəhsulLinux
Dərc6 okt 2026
İlk görülmə6 okt 2026

Necə düzəltmək olar

Yeniləyin
  • Linux Linux589f0945bf3ebf0790fd51e28c7f0d04ed3d8b78, 0a85182723b65ad8bee8131bc38fcf0347d6679b və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
Linux Linuxa5fa0708cbfda4d3c2c6a447de7c4b0b23595527 ≤ v < 589f0945bf3ebf0790fd51e28c7f0d04ed3d8b78, a5fa0708cbfda4d3c2c6a447de7c4b0b23595527 ≤ v < 0a85182723b65ad8bee8131bc38fcf0347d6679b, 7.1589f0945bf3ebf0790fd51e28c7f0d04ed3d8b78, 0a85182723b65ad8bee8131bc38fcf0347d6679b

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.

Intelligence 360 paketində

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.