CVE-2022-49647

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: cgroup: miqrasiya üçün css_sets ön yükləməsi zamanı ayrı src/dst düyünlərindən istifadə edin Hər bir cset (css_set) öz tapşırıqları tərəfindən sabitlədilir. Miqrasiya üçün tapşırıqları cset-lər arasında hərəkət etdirərkən, tapşırıqlar köçürülərkən onların yox olmaması üçün mənbə və təyinat cset-lərini saxlamalıyıq. Bu, cset->mg_preload_node-u ya mgctx->preloaded_src_csets, ya da mgctx->preloaded_dst_csets siyahısına bağlamaqla həyata keçirilir. Bir cset eyni anda həm mənbə, həm də təyinat ola bilməyəcəyi üçün həm src, həm də dst siyahıları üçün eyni cset->mg_preload_node-dan istifadə etmək məqbul hesab olunurdu. Təəssüf ki, miqrasiyada çoxlu tapşırıqlar iştirak etdikdə və onlardan bəziləri identik noop miqrasiyaları, digərləri isə faktiki olaraq cgroup-lar arası köçürmələr olduqda bu yükləmə problemli olur. Məsələn, cgroup1-də aşağıdakı ardıcıllıqla bu baş verə bilər: #1> mkdir -p /sys/fs/cgroup/misc/a/b #2> echo $$ > /sys/fs/cgroup/misc/a/cgroup.procs #3> RUN_A_COMMAND_WHICH_CREATES_MULTIPLE_THREADS & #4> PID=$! #5> echo $PID > /sys/fs/cgroup/misc/a/b/tasks #6> echo $PID > /sys/fs/cgroup/misc/a/cgroup.procs qrup lideri daxil olmaqla proses yenidən a-ya qaytarılır. Bu sonuncu miqrasiyada, lider olmayan axınlar (threads) identik miqrasiyanı, qrup lideri isə faktiki miqrasiyanı həyata keçirirdi. #3-dən sonra bütün prosesin cset A-da olduğunu və #4-dən sonra liderin cset B-yə keçdiyini fərz edək. Sonra, #6 zamanı aşağıdakılar baş verir: 1. Lider üçün B üzərində cgroup_migrate_add_src() çağırılır. 2. Digər axınlar üçün A üzərində cgroup_migrate_add_src() çağırılır. 3. cgroup_migrate_prepare_dst() çağırılır. O, src siyahısını skan edir. 4. B-nin A-ya miqrasiya etmək istədiyini görür, ona görə də A-nı dst siyahısına əlavə etməyə çalışır, lakin onun ->mg_preload_node-nun artıq məşğul olduğunu anlayır. 5. Və sonra A-nın identik miqrasiya olduğu üçün A-ya miqrasiya etmək istədiyini görür, onun ->mg_preload_node-unu list_del_init() vasitəsilə silərək və müvafiq istinadları yerləşdirərək onu kənarlaşdırır. 6. Miqrasiyanın qalan hissəsi src siyahısında B ilə, lakin dst siyahısında heç nə olmadan baş verir. Bu o deməkdir ki, miqrasiya davam edərkən A saxlanılmır. Əgər miqrasiya bitməmişdən əvvəl bütün tapşırıqlar A-nı tərk edərsə və gələn tapşırıq onu sabitləyərsə, cset məhv ediləcək və bu da use-after-free xətasına səbəb olacaq. Buna həm src, həm də dst ön yükləmə siyahıları üçün cset->mg_preload_node-un həddindən artıq yüklənməsi səbəb olmuşdur. Biz cset-i src siyahısından çıxarmaq istədik, lakin qeyri-ixtiyari olaraq onu dst siyahısından da çıxardıq. Bu yamama cset->mg_preload_node-u ->mg_src_preload_node və ->mg_dst_preload_node şəklində ayırmaqla problemi həll edir, beləliklə src və dst ön yükləmələri bir-birinə mane olmur.

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

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel4.14.289, 4.19.253, 5.4.207, 5.10.132, 5.15.56, 5.18.13 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel3.16 ≤ v < 4.14.289, 4.15 ≤ v < 4.19.253, 4.20 ≤ v < 5.4.207, 5.5 ≤ v < 5.10.132, 5.11 ≤ v < 5.15.56, 5.16 ≤ v < 5.18.13, 5.194.14.289, 4.19.253, 5.4.207, 5.10.132, 5.15.56, 5.18.13

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-2022-49647 · Linux Kernel · Dark Radar