CVE-2026-98682
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: smb: client: sunucu tarafındaki kopyalama/klonlama işleminden önce boşaltma ve geçersiz kılma cifs_file_copychunk_range() ve cifs_remap_file_range()'in klonlama (FICLONE) yolu, hedef sayfa önbelleğini sunucu tarafındaki kopyalamaya karşı diğer sunucu tarafı aralık işlemleri (smb3_zero_range(), smb3_punch_hole(), smb3_collapse_range() ve smb3_insert_range()) gibi serileştirmemektedir. cifs_file_copychunk_range(), hedef aralığı dahili olarak eşlemenin invalidate_lock kilidini alan ve bırakan filemap_invalidate_inode() ile geçersiz kılar; bu nedenle copychunk ioctl çağrıldığında kilit artık tutulmamaktadır. Ayrıca hedeflerdeki devam eden netfs G/Ç işlemlerini hiçbir zaman boşaltmaz. Klonlama yolu ise invalidate_lock kilidini hiç almaz (yalnızca i_rwsem alır), yalın bir truncate_inode_pages_range() kullanır ve benzer şekilde bekleyen G/Ç işlemlerini boşaltmaz. Sonuç olarak, asenkron bir hedef geri yazma işlemi, sunucu tarafındaki kopyalama/klonlama çalıştıktan sonra tamamlanabilir ve sunucu tarafından yeni yazılan bölgenin üzerine bayat verileri yeniden yerleştirerek dosyayı bozabilir. Bu durum, d7d2adcd022b ("smb/client: flush dirty data before punching a hole") commit'indeki bozulma sınıfıyla aynıdır ve Windows Server'a karşı generic/363 testlerinde rastgele olarak görülmüştür. Her iki yolun da belirlenmiş sıralamayı takip etmesi için düzeltme yapılmıştır: Hedefin temizlenmesi ve geçersiz kılınması ile sunucu ioctl işlemi boyunca hedef eşlemenin invalidate_lock kilidi tutulur ve ioctl çağrılmadan önce devam eden yazmaları boşaltmak için hedef üzerinde netfs_wait_for_outstanding_io() çağrılır. Kaynak yalnızca temizlendiği ve geçersiz kılınmadığı için sadece hedef inode'un invalidate_lock kilidine ihtiyaç duyulur; i_rwsem (zaten lock_two_nondirectories() aracılığıyla tutulmaktadır), VFS kilit sıralamasına uygun olarak invalidate_lock'tan önce alınır. filemap_invalidate_inode() aynı kilidi dahili olarak aldığı için, bu fonksiyonu çağırmak yerine kendi unmap/flush/invalidate adımlarıyla değiştirilmiş ve aralık alt akışını (underflow) önlemek için sıfır uzunluktaki kopyalamalarda erken dönüş sağlanmıştır.
Nasıl düzeltilir
- Linux Linuxdc71660f11ef2fecc0695a41e49cd496a9d255ab, c9b1194e8ec99d95db25db45edd2fbf690f043ab, 6.2, 6.7 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | c54fc3a4f375663f2361a9cbb2955fb4ef912879 ≤ v < dc71660f11ef2fecc0695a41e49cd496a9d255ab, c54fc3a4f375663f2361a9cbb2955fb4ef912879 ≤ v < c9b1194e8ec99d95db25db45edd2fbf690f043ab, 358bd5f436d820bb758833050aae065b35d6986c, 43801359c8971cc49b4a4db5015fba77fbd09c32, 6.1.68 ≤ v < 6.2, 6.6.7 ≤ v < 6.7, 6.7 | dc71660f11ef2fecc0695a41e49cd496a9d255ab, c9b1194e8ec99d95db25db45edd2fbf690f043ab, 6.2, 6.7 |
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.