CVE-2026-43439
Təsvir
Linux kernel-də aşağıdakı zəiflik həll edilmişdir: cgroup: tapşırığın miqrasiyası ilə iterasiya arasındakı yarış vəziyyətinin düzəldilməsi Tapşırıq css_set-dən kənara miqrasiya edildikdə, cgroup_migrate_add_task() əvvəlcə onu aşağıdakı vasitə ilə cset->tasks-dan cset->mg_tasks-a köçürür: list_move_tail(&task->cg_list, &cset->mg_tasks); Əgər css_task_iter hazırda it->task_pos göstəricisini bu tapşırığa yönəltdiyi halda, css_set_move_task() iteratoru etibarlı saxlamaq üçün css_task_iter_skip() funksiyasını çağırır. Lakin tapşırıq artıq ->mg_tasks-a köçürüldüyü üçün iterator orijinal tasks siyahısına nisbətən deyil, mg_tasks siyahısına nisbətən irəlilədilir. Nəticədə cset->tasks üzərində qalan tapşırıqlar, həmçinin cset->mg_tasks növbəsinə yerləşdirilmiş tapşırıqlar iterasiya zamanı buraxıla bilər. Bu problemi task->cg_list-in cset->tasks-dan ayrılmasından əvvəl css_set_skip_task_iters() funksiyasının çağırılması ilə düzəldin. Bu, bütün aktiv iteratorları cset->tasks üzərindəki növbəti tapşırığa irəlilədir ki, tapşırıq eyni vaxtda miqrasiya edilsə belə iterasiya düzgün davam etsin. Bu yarış vəziyyətini instrumentasiya olmadan praktikada təkrarlamaq çətindir, lakin cgroup_procs_show() funksiyasını süni şəkildə ləngitməklə təkrar etmək olar. Məsələn, Android cihazında cgroup_procs_show() funksiyasına gecikmə yeritmək üçün müvəqqəti /sys/kernel/cgroup/cgroup_test parametri əlavə edilə bilər və sonra: 1) Üç uzunmüddətli tapşırıq yaradın (PID 101, 102, 103). 2) Test cgroup yaradın və tapşırıqları ona köçürün. 3) /sys/kernel/cgroup/cgroup_test vasitəsilə böyük gecikməni aktivləşdirin. 4) Bir shell-də test cgroup-dan cgroup.procs faylını oxuyun. 5) Gecikmə pəncərəsi ərzində başqa bir shell-də PID 102-ni fərqli cgroup.procs faylına yazmaqla miqrasiya edin. Bu qurulumda cgroup.procs fasilələrlə yalnız PID 101-i göstərə, PID 103-ü isə buraxa bilər. Miqrasiya tamamlandıqdan sonra faylın yenidən oxunması bütün tapşırıqları gözlənildiyi kimi göstərir. Qeyd edək ki, bu dəyişiklik css_set_move_task() funksiyasındakı mövcud css_set_skip_task_iters() çağırışının silinməsinə imkan vermir. cgroup_migrate_add_task() funksiyasındakı yeni çağırış yalnız tapşırıq hələ cset->tasks üzərində olarkən miqrasiya ilə yarışan iteratorları idarə edir. Iteratorlar tapşırıq cset->mg_tasks-a köçürüldükdən sonra da başlaya bilər. Əgər css_set_move_task() funksiyasından css_set_skip_task_iters() çağırışını çıxarsaydıq, belə iteratorlar task_pos göstəricisini miqrasiya edilən tapşırığa yönəltməyə davam edə bilər və bu, təyinat css_set üzərində css_task_iter_advance() funksiyasının nasaz işləməsinə, hətta çökmələrə və ya sonsuz dövrələrə səbəb ola bilərdi. Miqrasiya ilə iterasiya arasındakı yarış pəncərəsi çox kiçikdir və css_task_iter isti yol üzərində deyil. Ən pis halda, iterator miqrasiya edilən prosesin ilk ipinə yönəldikdə, cgroup_migrate_add_task() css_set_skip_task_iters() vasitəsilə bir neçə tapşırığı buraxmalı ola bilər. Lakin bu yalnız miqrasiya ilə iterasiya həqiqətən yarışdıqda baş verir, buna görə də performans təsiri burada təqdim edilən düzgünlük düzəlişi ilə müqayisədə əhəmiyyətsizdir.
Necə düzəltmək olar
- linux linux_kernel4.15, 4.20, 5.10.253, 5.15.203, 6.1.167, 6.6.130, 6.12.78, 6.18.19, 6.19.9 və ya daha yeni versiya
- git.kernel.org/stable/c/3b95abab7369235a37b15eaec6e1a0b443bba7c7
- git.kernel.org/stable/c/3dfd1328c05234e8d8fa61948b2ba82680594988
- git.kernel.org/stable/c/4a9654a2b46cfdaae287fb8995f536245635e467
- git.kernel.org/stable/c/5ee01f1a7343d6a3547b6802ca2d4cdce0edacb1
- git.kernel.org/stable/c/7c85debc35e6d131bd29c64f2ae78c6ede0e55c4
- git.kernel.org/stable/c/86ceaccfdfa16dad05addb33dc206e03589bcfd1
- git.kernel.org/stable/c/9cca530c7cc1b3e02cb8fa7f80060dd4b38562ce
- git.kernel.org/stable/c/9dc76f6fc0d28d2382583715bc4ec22f28104845
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 4.14.138 ≤ v < 4.15, 4.19.66 ≤ v < 4.20, 5.2.1 ≤ v < 5.10.253, 5.11 ≤ v < 5.15.203, 5.16 ≤ v < 6.1.167, 6.2 ≤ v < 6.6.130, 6.7 ≤ v < 6.12.78, 6.13 ≤ v < 6.18.19, 6.19 ≤ v < 6.19.9, 5.2, 7.0 | 4.15, 4.20, 5.10.253, 5.15.203, 6.1.167, 6.6.130, 6.12.78, 6.18.19, 6.19.9 |
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.