CVE-2026-97902
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: fs: başarılı iç içe çözme (nested thaw) işlemi için -EINVAL döndürmeyin Commit 7366f8b6fc6a ("fs: handle freezing from multiple devices"), iç içe dondurmaları (nested freezes) mümkün kılmak için freeze_holders bitmaskesini her tutucuya özel sayaçlarla değiştirmiştir. Bitmask versiyonunda, başka bir tutucu kalırken paylaşılan bir tutuşu serbest bırakan bir çözümleme (thaw) işlemi 0 döndürüyordu. Yeniden düzenlemeden beri, thaw_super_locked() fonksiyonu freeze referansını freeze_dec() aracılığıyla düşürmekte ancak diğer dondurucular kaldığında -EINVAL döndürerek çağıran tarafı yanlış bilgilendirmektedir: çözümleme aslında başarılı olmuştur, sadece superblock kalan tutucular nedeniyle donmuş halde kalmaya devam eder. Bu durum, bdev tarafından başlatılan dondurma işlemini bozar. Bir dosya sistemi FIFREEZE ile dondurulduğunda ve ek olarak bdev_freeze() üzerinden de dondurulduğunda (bkz. fs_bdev_freeze(), tasarım gereği iç içedir), sonraki bdev_thaw() işlemi, dondurma referansı düşürülmüş olmasına rağmen tutucu işleminden -EINVAL alır ve bu nedenle bd_fsfreeze_count değerini yüksek tutmaya devam eder. Ardından device-mapper'ın unlock_fs() fonksiyonu bdev_thaw()'ın dönüş değerini yoksayar, böylece sayacı yeniden dengeleyen hiçbir şey olmaz. Kullanıcının FITHAW ve umount işlemlerinden sonra blok aygıtı bir daha asla bağlanamaz: dm-1: Can't mount, blockdev is frozen Kullanıcı alanının sızan sayacı düşürmesinin bir yolu yoktur; yalnızca blok aygıtının yok edilmesi (veya yeniden başlatma) aygıtı kurtarır. Yeniden oluşturma adımları (v6.8 sonrası tüm çekirdekler): dmsetup create dut --table "0 $(blockdev --getsz "$DEV") linear $DEV 0" mkfs.ext4 /dev/mapper/dut mount /dev/mapper/dut /mnt fsfreeze --freeze /mnt # freeze_ucount == 1 dmsetup suspend dut # bd_fsfreeze_count == 1, ucount == 2 dmsetup resume dut # ucount 2 -> 1, ancak thaw_super() # -EINVAL döndürür, bu yüzden bdev_thaw() # bd_fsfreeze_count değerini 1'de tutar fsfreeze --unfreeze /mnt # dosya sistemi sorunsuz şekilde çözülür umount /mnt mount /dev/mapper/dut /mnt # EBUSY, sonsuza kadar Aynı durum, orijinal birimin LVM anlık görüntüsü boyunca tutulan fsfreeze ile de gerçekleşir. fs_bdev_thaw()'ın dokümantasyonu hedeflenen semantiği zaten açıklamaktadır: "Bu fonksiyon sıfır döndürürse, dosya sisteminin birden fazla kez dondurulmuş olabileceği için çözüldüğü anlamına gelmez". Diğer dondurucular mevcutken iç içe bir çözümlemenin tutuşunu bıraktığı durumlarda 0 döndürerek bu semantikleri geri yükleyin. Dondurma tutuşu olmadan yapılan çözümleme işlemi, may_unfreeze() referans sayısına dokunmadan önce bu durumu reddettiği için hala -EINVAL ile başarısız olur.
Nasıl düzeltilir
- Linux Linux111339816138f042a59778322f941edc26903484, 76e478499913dc1f368aebe85b28b7d1265985ff, ff2a694f6613d54ebd77ba72583d4d94446f55bd, fe967191e5851ea79818c5fe4e781c3882139218 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 7366f8b6fc6aa21c4199cb5d337b023df69745b0 ≤ v < 111339816138f042a59778322f941edc26903484, 7366f8b6fc6aa21c4199cb5d337b023df69745b0 ≤ v < 76e478499913dc1f368aebe85b28b7d1265985ff, 7366f8b6fc6aa21c4199cb5d337b023df69745b0 ≤ v < ff2a694f6613d54ebd77ba72583d4d94446f55bd, 7366f8b6fc6aa21c4199cb5d337b023df69745b0 ≤ v < fe967191e5851ea79818c5fe4e781c3882139218, 6.8 | 111339816138f042a59778322f941edc26903484, 76e478499913dc1f368aebe85b28b7d1265985ff, ff2a694f6613d54ebd77ba72583d4d94446f55bd, fe967191e5851ea79818c5fe4e781c3882139218 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.