CVE-2025-71183

Kritik

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: btrfs: inode referansları günlüğe kaydedilirken çakışan inode'lar her zaman tespit edilsin İsim değiştirme takasından sonra (ister rename exchange işlemiyle ister birden fazla atomik olmayan adımda normal isim değiştirmelerle) iki inode yer değiştirmişse ve bunlardan en az biri bir dizinse, yalnızca tek bir inode içeren bir log ağacı ile karşılaşılabilir. Güç kesintisi sonrası bu durum, güç kesintisinden önce silinmemiş olmasına rağmen diğer inode'un silinmeye çalışılmasıyla sonuçlanabilir. Bazı durumlarda, hedef inode içinde bir alt hacim (subvolume) barındıran bir dizinse bu silme girişimi başarısız olur; çünkü log yeniden oynatma kodu, inode öğeleri yerine kök öğelere işaret eden dizin girdelerini işlemek üzere hazırlanmamıştır. 1) Aynı üst dizin altında "dir1" (inode A) ve "dir2" (inode B) dizinleri bulunmaktadır; 2) "dir1" (inode A) dizini altında bir dosya (inode C) bulunmaktadır; 3) "dir2" (inode B) dizininin içinde bir alt hacim bulunmaktadır; 4) Tüm bu inode'lar geçmiş bir işlemde kalıcı hale getirilmiştir ve şu anda N numaralı işlemdeyiz; 5) Dosyanın (inode C) ismi değiştirilir, böylece btrfs_log_new_name() fonksiyonunda inode C'nin last_unlink_trans değeri N olarak güncellenir; 6) "dir1" (inode A) ve "dir2" (inode B) için bir isim değiştirme takası gerçekleşir, böylece takastan sonra "dir1" inode B ve "dir2" inode A olur. İsim değiştirme takası sırasında A ve B inode'ları için btrfs_log_new_name() çağrılır ancak bunlar dizin olduğu için last_unlink_trans değerleri N olarak güncellenmez; 7) Dosya (inode C) üzerinde bir fsync işlemi yapılır ve inode'unun last_unlink_trans değeri N olduğu için üst dizini (inode A) (btrfs_log_inode_parent() tarafından çağrılan btrfs_log_all_parents() aracılığıyla) günlüğe kaydedilir. 8) Sonuç olarak, artık inode A'nın eski adına sahip olan inode B günlüğe kaydedilmemiş olur. copy_inode_items_to_log() aşamasında, inode A günlüğe kaydedilirken, inode A'nın nesli mevcut işlemden daha düşük olduğundan (geçmiş bir işlemde oluşturulduğundan), günlüğe kaydedilecek çakışan herhangi bir inode olup olmadığı kontrol edilmemiştir; 9) Bir güç kesintisinin ardından log ağacı yeniden oynatıldığında, inode A'nın fs ağacındaki inode B'nin adıyla çakışan yeni bir ada sahip olduğu tespit edilir ve inode B'nin silinmesi denenir... Bu yanlıştır çünkü söz konusu dizin güç kesintisinden önce hiçbir zaman silinmemiştir ve o dizinin içinde bir alt hacim bulunduğu için onu silmeye çalışmak başarısız olacaktır; zira replay_dir_deletes() ve btrfs_unlink_inode() fonksiyonları, inode'lar yerine köklere işaret eden dizin öğelerini işlemek üzere hazırlanmamıştır. Bu durum gerçekleştiğinde bağlama (mount) işlemi başarısız olur ve aşağıdaki gibi bir yığın izleme (stack trace) alınır: [87.2314] BTRFS info (device dm-0): start tree-log replay [87.2318] BTRFS critical (device dm-0): failed to delete reference to subvol, root 5 inode 256 parent 259 [87.2332] ------------[ cut here ]------------ [87.2338] BTRFS: Transaction aborted (error -2) [87.2346] WARNING: CPU: 1 PID: 638968 at fs/btrfs/inode.c:4345 __btrfs_unlink_inode+0x416/0x440 [btrfs] [87.2368] Modules linked in: btrfs loop dm_thin_pool (...) [87.2470] CPU: 1 UID: 0 PID: 638968 Comm: mount Tainted: G W 6.18.0-rc7-btrfs-next-218+ #2 PREEMPT(full) [87.2489] Tainted: [W]=WARN [87.2494] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-0-gea1b7a073390-prebuilt.qemu.org 04/01/2014 [87.2514] RIP: 0010:__btrfs_unlink_inode+0x416/0x440 [btrfs] [87.2538] Code: c0 89 04 24 (...) [87.2568] RSP: 0018:ffffc0e741f4b9b8 EFLAGS: 00010286 [87.2574] RAX: 0000000000000000 RBX: ffff9d3ec8a6cf60 RCX: 0000000000000000 [87.2582] RDX: 0000000000000002 RSI: ffffffff84ab45a1 RDI: 00000000ffffffff [87.2591] RBP: ffff9d3ec8a6ef20 R08: 0000000000000000 R09: ffffc0e741f4b840 [87.2599] R10: ffff9d45dc1fffa8 R11: 0000000000000003 R12: ffff9d3ee26d77e0 [87.2608] R13: ffffc0e741f4ba98 R14: ffff9d4458040800 R15: ffff9d44b6b7ca10 [87.2618] FS: 00007f7b9603a840(0000) GS:ffff9d4658982000(0000) knlGS:0000000000000000 [87. ---kesildi---

ÖnemKritik
CVSS9.1
İstismar olasılığı—
ÜrünLinux Kernel
Yayın31 Oca 2026
İlk görülme31 Oca 2026
Zayıflık türüCWE-362Yarış durumu

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel3.19, 4.2, 4.5, 4.6, 6.1.161, 6.6.121, 6.12.66, 6.18.6 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel3.18.32 ≤ v < 3.19, 4.1.23 ≤ v < 4.2, 4.4.8 ≤ v < 4.5, 4.5.2 ≤ v < 4.6, 4.6.1 ≤ v < 6.1.161, 6.2 ≤ v < 6.6.121, 6.7 ≤ v < 6.12.66, 6.13 ≤ v < 6.18.6, 4.6, 6.193.19, 4.2, 4.5, 4.6, 6.1.161, 6.6.121, 6.12.66, 6.18.6

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.

Intelligence 360 paketinde

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.

CVE-2025-71183 · Linux Kernel · Dark Radar