CVE-2024-47680
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: f2fs: geleneksel bölgeler için discard desteğini denetle Yardımcı işlev f2fs_bdev_support_discard()'ın gösterdiği gibi, f2fs hedef blok aygıtlarının discard desteğini bdev_max_discard_sectors() ve bdev_is_zoned() işlevlerini çağırarak denetler. Bu denetim çoğu durumda iyi çalışır, ancak bölgelendirilmiş blok aygıtlarındaki geleneksel bölgeler için çalışmaz. F2fs, bölgelendirilmiş blok aygıtlarının discard desteğini varsayar ve __submit_discard_cmd() işlevini çağırır. __submit_discard_cmd() sıralı yazma gerektiren bölgeler için çağrıldığında, __submit_discard_cmd() discard komutları yerine bölge sıfırlama komutları verdiğinden düzgün çalışır. Ancak __submit_discard_cmd() geleneksel bölgeler için çağrıldığında, aygıtlar discard desteğini sunmasa bile __blkdev_issue_discard() çağrılır. Uygunsuz __blkdev_issue_discard() çağrısı, __blkdev_issue_discard() hedef aygıtların discard desteğini sunup sunmadığını denetlediğinden, 30f1e7241422 ("block: move discard checks into the ioctl handler") commit'inden önce bir sorun değildi. Sunmuyorsa EOPNOTSUPP döndürüyordu. Bu commit'ten sonra __blkdev_issue_discard() artık bunu denetlemez. Her zaman sıfır döndürür ve verilen bio işaretçisine NULL atar. Bu NULL işaretçi, __submit_discard_cmd() içindeki f2fs_bug_on() işlevini tetikler. BUG, aşağıdaki komutlarla umount adımında yeniden oluşturulur; burada /dev/nullb0, 5GB toplam boyuta, 128MB bölge boyutuna ve 10 geleneksel bölgeye sahip bölgelendirilmiş bir null_blk aygıtıdır. $ mkfs.f2fs -f -m /dev/nullb0 $ mount /dev/nullb0 /mnt $ for ((i=0;i<5;i++)); do dd if=/dev/zero of=/mnt/test bs=65536 count=1600 conv=fsync; done $ umount /mnt BUG'ı düzeltmek için uygunsuz __blkdev_issue_discard() çağrısından kaçının. Geleneksel bölgeler için discard istendiğinde, aygıtın discard desteğini sunup sunmadığını denetleyin. Sunmuyorsa EOPNOTSUPP döndürün.
Nasıl düzeltilir
- linux linux_kernel6.10.13, 6.11.2 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.10 ≤ v < 6.10.13, 6.11 ≤ v < 6.11.2 | 6.10.13, 6.11.2 |
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.