CVE-2024-53176
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: smb: Unmount zamanı bütün keşlənmiş dir instansiyalarının öz dentry-lərini buraxdığından əmin olun Unmount prosesi (cifs_kill_sb() funksiyasının close_all_cached_dirs()-i çağırması) müxtəlif keşlənmiş kataloq əməliyyatları ilə yarış vəziyyətinə (race condition) girə bilər ki, bu da nəticədə dentry-lərin buraxılmamasına və aşağıdakı kernel BUG-larına səbəb olur: BUG: Dentry ffff88814f37e358{i=1000000000080,n=/} still in use (2) [unmount of cifs cifs] VFS: Busy inodes after unmount of cifs (cifs) ------------[ cut here ]------------ kernel BUG at fs/super.c:661! Bu, bir cfid təmizlənmə prosesində olduğu zaman və cfids->entries siyahısından çıxarıldığı zaman baş verir, bura daxildir: - Serverdən lease break qəbul edilməsi - Serverin yenidən qoşulmasının invalidate_all_cached_dirs()-i tetikləməsi, hansı ki, bütün cfid-ləri siyahıdan silir - Laundromat axınına köhnə cfid-nin vaxtının bitdiyinə qərar verməsi. Bu problemləri həll etmək üçün dentry-nin buraxılması yeni əlavə edilmiş cfid_put_wq iş növbəsindəki (workqueue) növbəyə alınmış iş vasitəsilə həyata keçirilir və close_all_cached_dirs() bildiyi bütün dentry-ləri buraxdıqdan sonra həmin iş növbəsini boşaldır. Bu, qlobal iş növbəsidir (mount ilə məhdudlaşdırılmayıb), lakin növbəyə alınmış iş minimumdur. cfid-ni təmizləmək üçün son təmizlik işi serverclose_wq iş növbəsində növbəyə alınmış iş vasitəsilə yerinə yetirilir; bu, close_all_cached_dirs()-in heç bir server əməliyyatı üzrə bloklanmaması üçün dentry-lərin buraxılmasından ayrı şəkildə edilir. Hər iki növbəyə alınmış iş, iş davam edərkən həmin obyektlərin azad edilməməsi üçün cfid istinadı və tcon istinadı ilə çağırılmağı gözləyir. Eyni zamanda, close_all_cached_dirs()-ə düzgün kilidləmə (locking) və cfid->dentry-nin azad edilməsinə ətrafda kilidləmə əlavə edildi.
Necə düzəltmək olar
- linux linux_kernel6.6.64, 6.11.11, 6.12.2 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 | 6.1 ≤ v < 6.6.64, 6.7 ≤ v < 6.11.11, 6.12 ≤ v < 6.12.2 | 6.6.64, 6.11.11, 6.12.2 |
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.