CVE-2026-98996
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: fs: meşgul bağlamaların sessizce ayrılması engellendi propagate_mount_busy() yardımcı fonksiyonu, senkron bir ayırmanın başarılı olup olmayacağına karar vermek için kullanılır. Bunu, üst bağlamanın yayılım yaptığı yerlerdeki kopyaları inceleyerek yapar. Bu fonksiyonlar yayılım karmaşasının bir parçasıdır. Kopyanın kök dizinini kapsayan tek bir alt bağlama durumu hariç, alt bağlamaları olan kopyalar atlanır. Bu algoritma eskiden kesin çalışıyordu ancak artık değil. Başlangıçta, yayılım sırasında yalnızca çocuksuz kopyalar ayrılıyordu. Ardından gelen 1064f874abc0 ("mnt: Tuck mounts under others instead of creating shadow/side mounts.") değişikliği, kapsanan bağlamaları her iki tarafa aynı anda eklemeye başladı. Daha sonra 99b19d16471e ("mnt: In propgate_umount handle visiting mounts in any order") değişikliği geldi ve bu durum eskisinden daha fazla bağlamanın ayrılmaya başlamasına yol açtı: [1]: Bir bağlamanın kopyası, alt bağlamalarının her biri ya onun üzerine bindirilmiş bir bağlama (overmount) ya da mağdurun kendisinin bir kopyası olduğunda ayrılır. İlk durumda overmount yeniden ebeveynlenir; ikinci durumda ise mağdurun kopyası sonuç olarak ayrılmış olur. Bu nedenle propagate_umount() yeniden yazılmış ancak propagate_mount_busy() buna göre düzenlenmemiştir. Şu anki haliyle propagate_mount_busy(), iki veya daha fazla alt bağlamaya sahip olan mağdur kopyalarını veya overmount olmayan tek bir alt bağlamaya sahip kopyaları kontrol etmemektedir. Dolayısıyla [1]'deki bu tür herhangi bir kopya için referans kontrolü yapılmaz. Bunun sonucunda, hala kullanımda olan bir bağlama sökülerek senkron bir ayırma işlemi başarıyla gerçekleşir. Bir konteyner kendi bağlamalarıyla bu sorunla karşılaşabilir. Ana makine, konteyner ile bir ağacı paylaşır ve ana makinenin o ağaçta bir bağlaması vardır: mount -t tmpfs none /mnt mount --make-shared /mnt mount -t tmpfs none /mnt/a Konteynerin /mnt dizini, ana makine bağlamasının bir slave kopyasıdır. Konteyner şimdi ağacın ayrık bir kopyasını alır ve bu kopyayı /mnt/a'nın yayılmış kopyasının altına bağlar ve ağaca ait dosya tanımlayıcısını açık tutar: unshare -m --propagation unchanged mount --make-rslave / fd = open_tree(AT_FDCWD, "/mnt", OPEN_TREE_CLONE | AT_RECURSIVE) move_mount(fd, "", AT_FDCWD, "/mnt/a", MOVE_MOUNT_BENEATH) grep /mnt /proc/self/mountinfo 775 355 ... /mnt ... master:646 777 775 ... /mnt/a ... master:646 776 777 ... /mnt/a ... master:647 778 777 ... /mnt/a/a ... master:647 Şimdi eklenen ağaç (777), konteynerin /mnt/a kopyasının altına bağlanmıştır. Burası aynı zamanda ana makine bağlamasının bulunduğu yerdir (ana makine bağlama ad alanından görüldüğü üzere). Böylece ana makine bağlamasının yayılmış kopyası (776) kökünün üzerindedir ve bunun kopyası (778) içindedir. Şimdi ana makine şunu çalıştırır: umount /mnt/a Ve işlem başarılı olur. Taşınan ağaç ve içindeki kopya konteynerden silinir. Artık sadece yayılmış kopya kalmıştır ve eski yerine yeniden ebeveynlenmiştir: grep /mnt /proc/self/mountinfo 775 355 ... /mnt ... master:646 776 775 ... /mnt/a ... Ancak dosya tanımlayıcısı hala taşınmış ağaca referans vermektedir. Dolayısıyla senkron bir umount, hala kullanımda olan bir bağlamayı ayırmıştır. propagate_mount_busy() fonksiyonuna, propagate_umount()'un yaptığı kontrollerle aynı kontroller öğretildi. Artık, propagate_umount()'un yaptığı gibi, her kopyada MNT_LOCKED değerinin temizlendiğini varsayabileceği, alt bağlaması olmayan tek bir mağdur bağlamasını kontrol eder. Kopyalar zincirler oluşturur. Diğer bir ifadeyle, bir kopya mağdurun ebeveyninden yayılım aldığında, o kopyanın içindeki aynı bağlama noktasındaki bağlama da bir kopyadır. Bir bağlamanın mağdurdan yayılım alıp almadığı, basitçe master listesi yürütülerek kontrol edilebilir. İç içe geçmiş kopyaların doğrusal kaldığından emin olmak için her zincir en üstten bir kez yürütülür. Ayrılan her kopyanın her referansı bir kez kontrol edilir.
Nasıl düzeltilir
Kaynaklarda bu zafiyet için düzeltilmiş sürüm ya da yama bağlantısı yok.
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| microsoft azl3_kernel_6.6.159.1-1 | Aralık belirtilmemiş | — |
| microsoft azl3_kernel_6.6.157.1-1 | Aralık belirtilmemiş | — |
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.