CVE-2025-40303
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: btrfs: hatalı bir fs için kirli meta verilerin geri yazılmadığından emin olun [HATA] Küçük bir özelliğin geliştirilmesi sırasında (tüm btrfs_bio::end_io() çağrılarının görev bağlamında yapıldığından emin olmak), btrfs_stop_all_workers() sonrası meta veri yazmalarının yeni işleri tetiklediği generic/388 testinde bir çökme fark ettim. Herhangi bir kod değişikliği olmasa bile, sadece meta veriler için RAID5 kullanıldığında ve generic/388 ile aynı iş yükü uygulandığında serbest bırakıldıktan sonra kullanım (use-after-free) durumunun tetiklenebildiği görülmüştür. [NEDEN] btrfs bir hata ile karşılaştığında, fs hata olarak işaretlenir, yeni işlemlere izin verilmez ve böylece meta veriler dondurulmuş durumda kalır. Ancak bu hatadan önce bazı meta veri değişiklikleri gerçekleşmiş olabilir ve bunlar hala btree inode sayfa önbelleğinde (page cache) bulunur. Gerçek bir işlem onaylaması (transaction commit) olmayacağı için tüm bu kirli folio'lar sayfa önbelleğinde olduğu gibi tutulur ve kirli oldukları için close_ctree() içindeki invalidate_inode_pages2() çağrısı tarafından geçersiz kılınamazlar. Son olarak btrfs_stop_all_workers() işleminden sonra, btree inode üzerinde iput() çağrılır ve bu da söz konusu kirli meta verilerin geri yazılmasını (writeback) tetikler. Eğer fs, RAID56 meta verilerini kullanıyorsa, bu durum RMW'yi tetikler ve zaten durdurulmuş olan rmw_workers kuyruğuna yeni işler ekler; bu da queue_work() kaynaklı uyarıya ve serbest bırakıldıktan sonra kullanım (use-after-free) hatasına yol açar. [ÇÖZÜM] write_one_eb() için özel bir işlem eklenerek, eğer fs zaten bir hata durumundaysa, bbio'ların gerçekten gönderilmesi yerine derhal başarısız olarak işaretlenmesi sağlanmıştır. Böylece close_ctree() sırasında iput(), tüm bu kirli ağaç bloklarını gerçekten geri yazmadan atacak ve haliyle çoktan durdurulmuş ve serbest bırakılmış iş kuyrukları için yeni işler oluşmayacaktır. write_one_eb() içerisindeki ekstra atma işlemi aynı zamanda ek bir güvenlik ağı görevi görür. Örneğin, işlem iptali bazı extent/boş alan ağacı bozulmaları nedeniyle tetiklendiyse ve extent/boş alan ağacı zaten bozuksa, bazı ağaç blokları olmamaları gereken yerlere tahsis edilmiş olabilir (mevcut ağaç bloklarının üzerine yazılarak). Bu durumda bunları geri yazmak, fs'nin daha fazla bozulmasına neden olacaktır.
Nasıl düzeltilir
- Linux Linux066ee13f05fbd82ada01883e51f0695172f98dff, e2b3859067bf012d53c49b3f885fef40624a2c83, 54a5b5a15588e3b0b294df31474d08a2678d4291, 2618849f31e7cf51fadd4a5242458501a6d5b315 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 13e6c37b989859e70b0d73d3f2cb0aa022159b17 ≤ v < 066ee13f05fbd82ada01883e51f0695172f98dff, 13e6c37b989859e70b0d73d3f2cb0aa022159b17 ≤ v < e2b3859067bf012d53c49b3f885fef40624a2c83, 13e6c37b989859e70b0d73d3f2cb0aa022159b17 ≤ v < 54a5b5a15588e3b0b294df31474d08a2678d4291, 13e6c37b989859e70b0d73d3f2cb0aa022159b17 ≤ v < 2618849f31e7cf51fadd4a5242458501a6d5b315, 3.10 | 066ee13f05fbd82ada01883e51f0695172f98dff, e2b3859067bf012d53c49b3f885fef40624a2c83, 54a5b5a15588e3b0b294df31474d08a2678d4291, 2618849f31e7cf51fadd4a5242458501a6d5b315 |
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.