CVE-2026-98163

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: cgroup: refcount dəyəri sıfır olan və məhv olan tapşırıqların iterasiyasının qarşısının alınması 260fbcb92bbea nömrəli commit ("cgroup: Move dying_tasks cleanup from cgroup_task_release() to cgroup_task_free()") dying_tasks siyahısındakı tapşırıqların ömrünü uzatdı. İteratorlarda məhv olan threadgroup liderləri və ya açıq şəkildə təyin edilmiş CSS_TASK_ITER_WITH_DEAD səbəbindən dying_tasks siyahısından keçmək imkanı nəzərdə tutulmuşdu, lakin gözlənilirdi ki, belə tapşırıqlar yeni istinad əldə edə bilsinlər (bu, cgroup_task_release()/put_task_struct_rcu_user() funksiyalarından əvvəl mümkündür). cgroup_task_release() funksiyasından sonra və cgroup_task_free() funksiyasından əvvəlki tapşırıqlar üçün ->usage sayğacının 0-dan böyük olub-olmaması ilə bağlı yarış vəziyyəti (race condition) yaranır. Yarış pəncərəsi css_set_lock sərbəst buraxıldıqda və biz yeni ->task_pos-a çatdıqda css_task_iter_next() çağırışları arasındadır. İterator ->usage sayğacı sıfıra düşmüş tapşırıqları yenidən canlandırmağa çalışmamalıdır. (Bu baş verdikdə, __put_task_struct_rcu_cb() artıq yaxınlaşmış olur və qaytarılan task_struct yaddaşdan silindikdən sonra istifadə edilə bilər.) Həll yolu olaraq, dying siyahısındakı tapşırıqların signal->live sayğacını sadəcə yoxlaya bilmərik, çünki bu, təmizlənməyi gözləyən adi zombi prosesləri, azad ediləcək RCU qalıq tapşırıqlardan fərqləndirmir. Buna görə də, hər hansı bir iterasiya zamanı ->usage==0 olan tapşırıqları istisna etmək üçün əlavə yoxlama əlavə edildi. css_task_iter_advance() funksiyasındakı təkrar dövrü (loop) ->usage sayğacını nəzərə almır, buna görə də dying_list üzərində istifadəsiz tapşırıqları ötürmək üçün css_task_iter_next() funksiyasına yeni dövr əlavə edildi. Mümkün yarış vəziyyətinin təxmini təsviri: R (cgroup.procs oxuyucusu) T (thread) L (qrup lideri) --------------------------------- -------------------------------- -------------------------------- L çıxır, signal->live > 0 cgroup_task_dead(L) css_set_skip_task_iters() // yalnız cset->tasks ötürülür list_add_tail(&L->cg_list, &cset->dying_tasks) css_task_iter_next() css_set_lock götürülür css_task_iter_advance() leader && signal->live != 0 => it->task_pos = &L->cg_list css_set_lock sərbəst buraxılır T çıxır --signal->live == 0 cgroup_task_dead(T) // css_set_lock release_task(T) cgroup_task_release(T) release_task(L) // zap_leader cgroup_task_release(L) put_task_struct_rcu_user(L) ...RCU... put_task_struct(L) L->usage = 0 /* L hələ də dying_tasks siyahısındadır */ ...RCU... __put_task_struct(L) css_task_iter_next() // növbəti iterasiya css_set_lock götürülür it->task_pos = &L->cg_list get_task_struct(L) => 0 üzərinə əlavə etmə css_set_lock sərbəst buraxılır cgroup_task_free(L) css_set_skip_task_iters() // dying ötürülməsi çox gec gəlir free_task(L) cgroup_procs_show() task_pid_vnr(L)

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc26 sen 2026
İlk görülmə26 sen 2026

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel7.2.8 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel6.19 ≤ v < 7.2.8, 7.37.2.8

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.

CVE-2026-98163 · Linux Kernel · Dark Radar