CVE-2026-23233

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: f2fs: swapfile için yanlış fiziksel bloğun eşlenmesini önleyen düzeltme Xiaolong Guo, bugzilla [1] üzerinden bir f2fs hatası bildirmiştir. [1] https://bugzilla.kernel.org/show_bug.cgi?id=220951 Alıntı: "Kernel 6.6+ sürümü ile F2FS dosya sisteminde stress-ng'nin swap stres testi kullanıldığında, sistem şu sonuçlara yol açan veri bozulmaları yaşamaktadır: 1 dm-verity bozulma hataları ve cihazın yeniden başlatılması 2 F2FS düğüm bozulma hataları ve önyükleme donmaları Sorun özellikle şu durumlarda meydana gelmektedir: 1 F2FS dosya sistemi kullanımı (ext4 etkilenmemektedir) 2 Swapfile boyutunun F2FS bölüm boyutundan (2MB) küçük olması 3 Swapfile'ın parçalanmış fiziksel düzeninin olması (birden fazla ardışık olmayan extent) 4 Kernel sürümünün 6.6+ olması (6.1 etkilenmemektedir) Kök neden, fs/f2fs/data.c dosyasındaki check_swap_activate() fonksiyonundadır. Küçük bir swapfile'ın (< 2MB) ilk extent'i bölüm sınırlarına hizalı olmadığında, fonksiyon bunu yanlışlıkla son extent olarak değerlendirmekte ve sonraki extent'lerin eşlenmesinde başarısız olmaktadır. Bu durum, yalnızca ilk extent'in eşlendiği hatalı bir swap_extent oluşturulmasına neden olmakta ve sonraki swap yazmalarının yanlış fiziksel konumların (diğer dosyaların verilerinin) üzerine yazılmasına yol açmaktadır. Yeniden Üretme Adımları 1 F2FS formatlı userdata bölüntüsüne sahip bir cihaz kurun 2 stress-ng'yi https://github.com/ColinIanKing/stress-ng adresinden derleyin 3 Swap stres testini çalıştırın: (Android cihazlar) adb shell "cd /data/stressng; ./stress-ng-64 --metrics-brief --timeout 60 --swap 0" Günlükler: 1 Ftrace, kernel 6.6'da check_swap_activate() içindeki ikinci f2fs_map_blocks çağrısı sırasında yalnızca ilk extent'in eşlendiğini göstermektedir: stress-ng-swap-8990: f2fs_map_blocks: ino=11002, file offset=0, start blkaddr=0x43143, len=0x1 (Sadece 4KB eşlenmiş, tüm swapfile değil) 2 kernel 6.1'de her iki extent de doğru şekilde eşlenmektedir: stress-ng-swap-5966: f2fs_map_blocks: ino=28011, file offset=0, start blkaddr=0x13cd4, len=0x1 stress-ng-swap-5966: f2fs_map_blocks: ino=28011, file offset=1, start blkaddr=0x60c84b, len=0xff Sorunlu kod check_swap_activate() içerisindedir: if ((pblock - SM_I(sbi)->main_blkaddr) % blks_per_sec || nr_pblocks % blks_per_sec || !f2fs_valid_pinned_area(sbi, pblock)) { bool last_extent = false; not_aligned++; nr_pblocks = roundup(nr_pblocks, blks_per_sec); if (cur_lblock + nr_pblocks > sis->max) nr_pblocks -= blks_per_sec; /* bu extent sonuncusudur */ if (!nr_pblocks) { nr_pblocks = last_lblock - cur_lblock; last_extent = true; } ret = f2fs_migrate_blocks(inode, cur_lblock, nr_pblocks); if (ret) { if (ret == -ENOENT) ret = -EINVAL; goto out; } if (!last_extent) goto retry; } İlk extent hizasız olduğunda ve roundup(nr_pblocks, blks_per_sec) değeri sis->max değerini aştığında, blks_per_sec çıkarılır ve sonuç nr_pblocks = 0 olur. Kod daha sonra bunun son extent olduğunu yanlış varsayar, nr_pblocks = last_lblock - cur_lblock (tüm swapfile) olarak ayarlar ve migrasyon işlemini gerçekleştirir. Migrasyondan sonra eşlemeyi tekrar denemez, bu nedenle sonraki extent'ler asla işlenmez." Bu sorunu gidermek için, swapfile'ın kuyruğundaki tüm blokları taşıdıktan sonra blok eşleme bilgilerini sorgulamamız gerekmektedir.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın4 Mar 2026
İlk görülme4 Mar 2026

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.6.127, 6.12.74, 6.18.13, 6.19.3 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel6.6.33 ≤ v < 6.6.127, 6.9 ≤ v < 6.12.74, 6.13 ≤ v < 6.18.13, 6.19 ≤ v < 6.19.36.6.127, 6.12.74, 6.18.13, 6.19.3

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-2026-23233 · Linux Kernel · Dark Radar