CVE-2026-31448
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: ext4: qalıq məlumatların səbəb olduğu sonsuz döngələrin qarşısının alınması mkdir/mknod yolunda, məntiqi blokların fiziki bloklara xəritələnməsi zamanı, əgər extent ağacına yeni extent daxil etmək uğursuz olarsa (bu nümunədə, fayl sistemi inode-u çirkli (dirty) kimi qeyd edərkən böyük fayl funksiyasını deaktiv etdiyi üçün), ext4_ext_map_blocks() funksiyası extent ağacındakı müvafiq məlumatları silmədən, yalnız fiziki bloku geri almaq üçün ext4_free_blocks()-i çağırır. Bu, sonrakı mkdir əməliyyatlarının əvvəllər geri alınmış fiziki blok nömrəsinə yenidən istinad etməsinə səbəb olur, halbuki bu fiziki blok artıq xattr bloku tərəfindən istifadə edilir. Nəticədə, həm kataloqun, həm də xattr-ın yaddaşda eyni buffer head blokundan eyni vaxtda istifadə etdiyi bir vəziyyət yaranır. Yuxarıdakılar ext4_xattr_block_set()-in "inserted" ilə bağlı sonsuz döngəyə girməsinə və inode kilidini azad edə bilməməsinə səbəb olur ki, bu da sonda [1]-də qeyd olunan 143 saniyəlik bloklanma probleminə gətirib çıxarır. Əgər metadata korlanmışsa, bəzi extent sahələrini silməyə çalışmaq daha çox ziyan vura bilər. Həmçinin, EXT4_GET_BLOCKS_DELALLOC_RESERVE ötürüldüyü halda, sahənin silinməsi kvota məlumatlarını yanlış şəkildə yeniləyir. Jan Kara iki halı fərqləndirməyi təklif edir: 1) Xəta ENOSPC və ya EDQUOT-dur - bu halda fayl sistemi tamamilə ardıcıl (consistent) olur və biz bütün uçotlar daxil olmaqla onun ardıcıllığını qorumalıyıq. Lakin bu xətalar yalnız extent-i extent ağacına daxil etməzdən əvvəl baş verə bilər. Beləliklə, mövcud kod bu hal üçün düzgün işləyir. 2) Başqa bir xəta - bu, metadatanın korlandığı anlamına gəlir. Zərəri məhdudlaşdırmaq üçün mümkün qədər az dəyişiklik etməyə çalışmalıyıq. Buna görə mən sadəcə ayrılmış blokların azad edilməsini ötürərdim. [1] INFO: task syz.0.17:5995 blocked for more than 143 seconds. Call Trace: inode_lock_nested include/linux/fs.h:1073 [inline] __start_dirop fs/namei.c:2923 [inline] start_dirop fs/namei.c:2934 [inline]
Necə düzəltmək olar
- linux linux_kernel6.1.168, 6.6.131, 6.12.80, 6.18.21, 6.19.11 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 | 2.6.22.1 ≤ v < 6.1.168, 6.2 ≤ v < 6.6.131, 6.7 ≤ v < 6.12.80, 6.13 ≤ v < 6.18.21, 6.19 ≤ v < 6.19.11, 2.6.22, 7.0 | 6.1.168, 6.6.131, 6.12.80, 6.18.21, 6.19.11 |
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.