CVE-2026-64378
Açıklama
Linux kernel'da aşağıdaki güvenlik açığı giderilmiştir: writeback: cgroup_writeback_umount() ve inode_switch_wbs() arasındaki yarış durumu düzeltildi Bir konteyner çıkış yaptığında, nadiren şu BUG_ON() tetiklenmektedir: ================================================================== VFS: Busy inodes after unmount of sdb (ext4) ------------[ cut here ]------------ kernel BUG at fs/super.c:695! CPU: 3 PID: 6 Comm: containerd-shim Tainted: G OE K 6.6 #1 pstate: 63400009 (nZCv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--) pc : generic_shutdown_super+0xf0/0x100 lr : generic_shutdown_super+0xf0/0x100 Call trace: generic_shutdown_super+0xf0/0x100 kill_block_super+0x20/0x48 ext4_kill_sb+0x28/0x60 deactivate_locked_super+0x54/0x130 deactivate_super+0x84/0xa0 cleanup_mnt+0xa4/0x140 __cleanup_mnt+0x18/0x28 task_work_run+0x78/0xe0 do_notify_resume+0x204/0x240 ================================================================== Kök neden, cgroup_writeback_umount() ile inode_switch_wbs()/cleanup_offline_cgwb() arasında meydana gelen bir yarış durumudur. inode_prepare_wbs_switch() fonksiyonunun true dönmesi ile ardından gelen wb_queue_isw() çağrısı arasında bir boşluk bulunmaktadır. Sorunu tetikleyen süreç şöyledir: CPU A (umount) | CPU B (writeback) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inode_switch_wbs/cleanup_offline_cgwb atomic_inc(&isw_nr_in_flight) inode_prepare_wbs_switch -> SB_ACTIVE kontrolünü geçer __iget(inode) generic_shutdown_super sb->s_flags &= ~SB_ACTIVE cgroup_writeback_umount(sb) smp_mb() atomic_read(&isw_nr_in_flight) rcu_barrier() -> bekleyen RCU geri çağırmaları yok flush_workqueue(isw_wq) -> kuyrukta işlem yok, döner evict_inodes(sb) -> isw hala referans tuttuğu için Inode atlanır. sop->put_super(sb) /* percpu sayaçlarını yok eder */ -> VFS: Busy inodes after unmount! wb_queue_isw() queue_work(isw_wq, ...) /* daha sonra işlev fonksiyonunda */ inode_switch_wbs_work_fn process_inode_switch_wbs iput() -> evict percpu_counter_dec() // UAF! Bu sorun, inode_switch_wbs() ve cleanup_offline_cgwb() içindeki RCU okuma tarafı kritik bölümü, inode_prepare_wbs_switch()'den wb_queue_isw()'ye kadar kapsayacak şekilde genişletilerek düzeltilmiştir. Bu pencerede uyku modu olmadığı için rcu_read_lock() kullanılabilir. Ardından, mevcut rcu_barrier()'dan önce cgroup_writeback_umount() içine bir synchronize_rcu() eklenmiştir; böylece SB_ACTIVE kontrolünü geçmiş olan tüm devam eden değiştiriciler, flush_workqueue() çağrılmadan önce queue_work() işlemini tamamlamış olur. Mevcut rcu_barrier(), bu düzeltmenin hâlâ queue_rcu_work() aracılığıyla değişimleri kuyruğa alan kararlı çekirdeklere (5.10.y, 6.6.y, ...) değiştirilmeden aktarılabilmesi için kasıtlı olarak korunmuştur. Mevcut ana hat üzerinde (e1b849cfa6b6 ("writeback: Avoid contention on wb->list_lock when switching inodes") commit'inden beri) hiçbir işlem yapmamaktadır (no-op) ve takip eden bir yamada kaldırılmıştır.
Nasıl düzeltilir
- linux linux_kernel4.5, 5.10.261, 6.1.178, 6.6.145, 6.12.96, 6.18.39, 7.1.4 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 4.4.5 ≤ v < 4.5, 4.5.1 ≤ v < 5.10.261, 5.11 ≤ v < 6.1.178, 6.2 ≤ v < 6.6.145, 6.7 ≤ v < 6.12.96, 6.13 ≤ v < 6.18.39, 6.19 ≤ v < 7.1.4, 4.5 | 4.5, 5.10.261, 6.1.178, 6.6.145, 6.12.96, 6.18.39, 7.1.4 |
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.