CVE-2026-93208
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: kasan: keşin kiçildilməsi ilə CPU hotplug arasındakı yarış vəziyyətinin düzəldilməsi kasan_quarantine_remove_cache() funksiyası əvvəlcə bütün aktiv CPU-larda per_cpu_remove_cache()-i çağırır. Hər bir geri çağırma (callback), keşə aid olan obyektləri cpu_quarantine-dən CPU-nun shrink_qlist siyahısına köçürür və onlar daha sonra tapşırıq kontekstindən azad edilə bilər. kmem_cache_destroy() funksiyası cpus_read_lock()-u saxlayaraq karantin silmə yolunu çağırır, lakin kmem_cache_shrink() bunu etmir. Buna görə də sonuncu, CPU-nun deaktivləşməsi (offlining) ilə aşağıdakı kimi yarış vəziyyətinə girə bilər: kmem_cache_shrink() CPU hotplug ------------------- ----------- on_each_cpu() CPU1 obyektləri CPU1-in shrink_qlist-nə köçürür on_each_cpu() geri dönür CPU1 deaktiv olur kasan_cpu_offline() cpu_quarantine-ni boşaldır shrink_qlist-ə toxunmur for_each_online_cpu() CPU1-i ötürür CPU1-in shrink_qlist siyahısında qalan obyektlər slab allokatoruna qaytarılmır. Bu, kmem_cache_shrink()-in əks halda boşalacaq slab-ları azad etməsinə mane ola bilər. Əgər CPU1 deaktiv qalarsa, sonrakı kmem_cache_destroy() də həmin siyahını ötürür və keşin hələ də obyektlər ehtiva etdiyini bildirə bilər. virtio-9p fayl sistemi ilə ara fasilələrlə baş verən belə bir hadisə müşahidə edilmişdir. mount və umount əmrlərinin hər ikisi 0 qaytarmışdır, lakin istifadəçi sahəsi tərəfindən tətiklənən sökülmə zamanı nüvədə aşağıdakılar qeydə alınmışdır: [ 2994.380134][ T111] BUG 9p-fcall-cache-1 (Tainted: G B ): Objects remaining on __kmem_cache_shutdown() [ 2994.381140][ T111] Object 0xff11000004361118 @offset=4376 [ 2994.381607][ T111] Allocated in p9_fcall_init+0x201/0x400 age=19564 cpu=1 pid=104 [ 2994.382591][ T111] p9_fcall_init+0x201/0x400 [ 2994.382810][ T111] p9_tag_alloc+0x12f/0x700 [ 2994.382982][ T111] p9_client_prepare_req+0x102/0x3e0 [ 2994.383165][ T111] p9_client_rpc+0x1ab/0xa50 [ 2994.383334][ T111] p9_client_getattr_dotl+0xb0/0x1a0 [ 2994.383515][ T111] v9fs_vfs_getattr_dotl+0x115/0x360 [ 2994.383719][ T111] vfs_getattr_nosec+0x22c/0x3a0 [ 2994.383910][ T111] vfs_statx+0xd7/0x170 [ 2994.384062][ T111] vfs_fstatat+0x45/0x80 [ 2994.384215][ T111] __do_sys_newfstatat+0x84/0xe0 [ 2994.384386][ T111] do_syscall_64+0x115/0x6a0 [ 2994.384566][ T111] entry_SYSCALL_64_after_hwframe+0x77/0x7f [ 2994.399720][ T111] WARNING: mm/slub.c:1244 at __kmem_cache_shutdown+0x363/0x500, CPU#0: busybox/111 [ 2994.405655][ T111] Call Trace: [ 2994.406325][ T111] kmem_cache_destroy+0x73/0x1b0 [ 2994.406630][ T111] p9_client_destroy+0x271/0x3c0 [ 2994.407210][ T111] v9fs_session_close+0x3c/0x260 [ 2994.407409][ T111] v9fs_kill_super+0x48/0x90 [ 2994.407584][ T111] deactivate_locked_super+0xa3/0x160 [ 2994.407778][ T111] cleanup_mnt+0x1dd/0x3e0 Beləliklə, uğurlu umount əməliyyatı 9p fcall keşində obyektlər saxlamış və keşin təmiz şəkildə məhv edilməsinə mane olmuşdur. Hər bir mümkün CPU üçün Per-CPU shrink_qlist yaddaşı mövcuddur və hər bir siyahı öz raw spinlock-u ilə qorunur. Mümkün CPU-lar üzrə iterasiya aparılır ki, CPU deaktiv olmazdan əvvəl doldurulmuş siyahı da boşaldılsın. for_each_possible_cpu() funksiyası for_each_online_cpu()-dan daha çox iş görə bilər, lakin bu dəyişiklik yalnız CONFIG_KASAN_GENERIC nüvələrinə təsir edir. Əlavə iş yükü yalnız keşin kiçildilməsi və məhv edilməsi yolları ilə məhdudlaşır və normal allokasiya/azad etmə sürətli yoluna təsir etmir. O, hər bir mümkün CPU-nun shrink siyahısının raw-spinlock ilə qorunan bir skanını əlavə edir. Bu siyahılar adətən boş olur; boş olmayan siyahı isə kiçildilən və ya məhv edilən keşə aid olan obyektləri çıxarmaq üçün keçilir.
Necə düzəltmək olar
- Linux Linuxeab61c0781cbe899e074c0009af304f3b337e0c9, 7cd164f0e1bab0f8dd125c92ed4f19bbd6b92a4a, 709c3646545e0a1f99a5816384c633f6552c5a98, 30e8cb8598aa41b1b9f8803081d2ae5e5369c0f3, 3119d58e4ef8719d669911d38a53fc00086ac48b, 8790303cbaac52a11dfed4aab261f8ea60682525 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 07d067e4f2ceb72b9f681995cc53828caaba9e6e ≤ v < eab61c0781cbe899e074c0009af304f3b337e0c9, 07d067e4f2ceb72b9f681995cc53828caaba9e6e ≤ v < 7cd164f0e1bab0f8dd125c92ed4f19bbd6b92a4a, 07d067e4f2ceb72b9f681995cc53828caaba9e6e ≤ v < 709c3646545e0a1f99a5816384c633f6552c5a98, 07d067e4f2ceb72b9f681995cc53828caaba9e6e ≤ v < 30e8cb8598aa41b1b9f8803081d2ae5e5369c0f3, 07d067e4f2ceb72b9f681995cc53828caaba9e6e ≤ v < 3119d58e4ef8719d669911d38a53fc00086ac48b, 07d067e4f2ceb72b9f681995cc53828caaba9e6e ≤ v < 8790303cbaac52a11dfed4aab261f8ea60682525, 5.19 | eab61c0781cbe899e074c0009af304f3b337e0c9, 7cd164f0e1bab0f8dd125c92ed4f19bbd6b92a4a, 709c3646545e0a1f99a5816384c633f6552c5a98, 30e8cb8598aa41b1b9f8803081d2ae5e5369c0f3, 3119d58e4ef8719d669911d38a53fc00086ac48b, 8790303cbaac52a11dfed4aab261f8ea60682525 |
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.