CVE-2024-43853
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: cgroup/cpuset: proc_cpuset_show() funksiyasında UAF-ın qarşısının alınması [1]-də bildirildiyi kimi, /proc/cpuset oxunduqda UAF baş verə bilər. Bu, aşağıdakı metodlarla təkrar istehsal edilə bilər: 1. cgroup_path_ns funksiyasında cgroup_lock əldə etməzdən əvvəl mdelay(1000) əlavə edin. 2. $cat /proc/<pid>/cpuset əmrini təkrarlanan şəkildə icra edin. 3. $mount -t cgroup -o cpuset cpuset /sys/fs/cgroup/cpuset/ və $umount /sys/fs/cgroup/cpuset/ əmrlərini təkrarlanan şəkildə icra edin. Bu xətaya səbəb olan yarış şəraiti (race condition) aşağıdakı kimi göstərilə bilər: (umount) | (cat /proc/<pid>/cpuset) css_release | proc_cpuset_show css_release_work_fn | css = task_get_css(tsk, cpuset_cgrp_id); css_free_rwork_fn | cgroup_path_ns(css->cgroup, ...); cgroup_destroy_root | mutex_lock(&cgroup_mutex); rebind_subsystems | cgroup_free_root | | // cgrp azad edildi, UAF | cgroup_path_ns_locked(cgrp,..); Cpuset başladıldıqda, root düyünü top_cpuset.css.cgrp &cgrp_dfl_root.cgrp-yə işarə edəcəkdir. Cgroup v1-də mount əməliyyatı cgroup_root ayıracaq və top_cpuset.css.cgrp ayrılmış &cgroup_root.cgrp-yə işarə edəcəkdir. Umount əməliyyatı icra edildikdə, top_cpuset.css.cgrp yenidən &cgrp_dfl_root.cgrp-yə bağlanacaqdır. Problem ondadır ki, cgrp_dfl_root-a yenidən bağlanarkən, cgroup v1 üçün kök qurulması zamanı ayrılan cgroup_root-un keşlənmiş olduğu hallar olur. Bu, sonradan azad edildikdə Use-After-Free (UAF)-ə səbəb ola bilər. Cgroup v1-in törəmə cgroup-ları yalnız css azad edildikdən sonra azad edilə bilər. Lakin, kökün css-i heç vaxt azad edilməyəcək, lakin cgroup_root unmount edildikdə azad edilməlidir. Bu o deməkdir ki, kökün css-nə istinad əldə etmək css.cgrp->root-un azad edilməyəcəyinə zəmanət vermir. Bu problem proc_cpuset_show() funksiyasında rcu_read_lock istifadə etməklə həll edilmişdir. d23b5c577715 ("cgroup: Make operations on the cgroup root_list RCU safe") commit-indən sonra cgroup_root kfree_rcu ilə azad edildiyi üçün kritik bölmə ərzində css->cgroup azad edilməyəcəkdir. cgroup_path_ns_locked funksiyasını çağırmaq üçün css_set_lock tələb olunur, buna görə də task_get_css-i task_css ilə əvəz etmək təhlükəsizdir. [1] https://syzkaller.appspot.com/bug?extid=9b1ff7be974a403aa4cd
Necə düzəltmək olar
- linux linux_kernel6.1.103, 6.6.44, 6.10.3 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 | 4.6 ≤ v < 6.1.103, 6.2 ≤ v < 6.6.44, 6.7 ≤ v < 6.10.3 | 6.1.103, 6.6.44, 6.10.3 |
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.