CVE-2026-23249
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: xfs: iki btree yeniden doğrulanırken silinmiş imleçlerin kontrol edilmesi Boş alan ve inode btree onarım fonksiyonları her iki btree yapısını aynı anda yeniden oluşturur ve ardından bozulmaların giderildiğini onaylamak için her iki btree yapısını değerlendirmesi gerekir. Ancak, Jiaming Zhang syzbot çalıştırdığında ikinci xchk_allocbt çağrısında bir çökmeye neden olmuştur. Kök neden analizi şu şekildedir (küçük düzeltmelerle birlikte): xrep_revalidate_allocbt() içinde, xchk_allocbt() iki kez çağrılır (birincisi BNOBT için, ikincisi CNTBT için). Bu sorunun nedeni, ilk çağrının ikinci çağrı tarafından gereken imleci geçersiz kılmasıdır (nullify). Öncelikle şu çağrı zinciri üzerinden xrep_revalidate_allocbt() fonksiyonuna girelim: xfs_file_ioctl() -> xfs_ioc_scrubv_metadata() -> xfs_scrub_metadata() -> `sc->ops->repair_eval(sc)` -> xrep_revalidate_allocbt() Bu fonksiyonda xchk_allocbt() iki kez çağrılır. İlk çağrıda: /* Not: sc->sm->sm_type şu an XFS_SCRUB_TYPE_BNOPT değerindedir */ xchk_allocbt() -> xchk_btree() -> `bs->scrub_rec(bs, recp)` -> xchk_allocbt_rec() -> xchk_allocbt_xref() -> xchk_allocbt_xref_other() sm_type değeri XFS_SCRUB_TYPE_BNOBT olduğu için pur, &sc->sa.cnt_cur olarak ayarlanır. Çekirdek xfs_alloc_get_rec() fonksiyonunu çağırmış ve -EFSCORRUPTED döndürmüştür. Çağrı zinciri: xfs_alloc_get_rec() -> xfs_btree_get_rec() -> xfs_btree_check_block() -> (XFS_IS_CORRUPT || XFS_TEST_ERROR), ilki yanlış ve ikincisi doğrudur, -EFSCORRUPTED döner. Bunun ioctl$XFS_IOC_ERROR_INJECTION nedeniyle kaynaklandığını tahmin ediyorum. xchk_allocbt_xref_other() fonksiyonuna geri dönüldüğünde, xfs_alloc_get_rec()'den -EFSCORRUPTED alındıktan sonra çekirdek xchk_should_check_xref() fonksiyonunu çağırmıştır. Bu fonksiyonda, *curpp (sc->sa.cnt_cur'a işaret eder) geçersiz kılınmıştır. xrep_revalidate_allocbt() fonksiyonuna geri dönüldüğünde, sc->sa.cnt_cur geçersiz kılındığı için xchk_allocbt() (ikinci çağrı) -> xchk_btree() aracılığıyla null-ptr-deref tetiklenmiştir. Yani; bnobt yeniden doğrulaması bir çapraz referans denemesinde başarısız olmuş, bu nedenle cntbt imlecini silmişiz ve ardından cntbt'yi yeniden doğrulamaya çalıştığımızda sistem çökmüştür. Bu nedenle, söz konusu yeniden doğrulama işleminden önce null cntbt imleci kontrol edilmeli ve onarım tamamlanmamış olarak işaretlenmelidir. Ayrıca, eğer ilk ağaç yeniden oluşturulmuş ancak zaten bozuksa, ikinci ağaç tamamen göz ardı edilebilir. Aynı sorun mevcut olduğu için aynı düzeltme xrep_revalidate_iallocbt için de uygulanmıştır.
Nasıl düzeltilir
- linux linux_kernel6.12.75, 6.18.16, 6.19.6 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 | 6.8 ≤ v < 6.12.75, 6.13 ≤ v < 6.18.16, 6.19 ≤ v < 6.19.6 | 6.12.75, 6.18.16, 6.19.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.
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.