CVE-2026-64567

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: btrfs: sayfalardan daha fazla girişe sahip boş alan önbelleğini reddet Bir v1 boş alan önbelleği yüklenirken, __load_free_space_cache() fonksiyonu num_entries ve num_bitmaps değerlerini doğrudan diskteki btrfs_free_space_header üzerinden alır. Bu başlık, tree_root altında tip 0 olan bir anahtarla saklanır ve ağaç denetleyicisinin (tree-checker) bunun için tanımlanmış bir durumu yoktur; bu nedenle yükleme işlemi güvenmeden önce her iki sayı da doğrulanmaz. Yükleme işlemi num_entries kadar döngüye girer ve mevcut sayfa tükendiğinde sıradaki sayfayı eşler; bu işlem sırasında io_ctl_check_crc() -> io_ctl_map_page() üzerinden geçilir ve burada io_ctl->pages[io_ctl->index++] işlemi gerçekleştirilir. Ancak pages[] dizisi, io_ctl_init() içerisinde num_entries değerinden değil, önbellek inode'unun i_size değerinden tahsis edilir: num_pages = DIV_ROUND_UP(i_size_read(inode), PAGE_SIZE); io_ctl->pages = kcalloc(num_pages, sizeof(struct page *), GFP_NOFS); Dolayısıyla, eğer num_entries sayfaların tutabileceğinden daha fazla kayıt beyan ederse, io_ctl->index değeri pages[] dizisinin sınırlarını aşar. Yazma tarafında io_ctl_add_entry() ve io_ctl_add_bitmap() fonksiyonlarının her ikisi de io_ctl->index >= io_ctl->num_pages olduğunda durduğu için bu durum asla gerçekleşmez; ancak okuma tarafında aynı kontrol hiçbir zaman yapılmamıştır. Bu durumu tetiklemek için temiz bir önbellek alınır (burada num_entries = <N>), başlıktaki num_entries değeri 0x10000 olarak ayarlanır ve yaprak sağlama toplamı (leaf checksum), ağaç denetleyicisinden geçmeye devam edecek şekilde düzeltilir. Önbellek inode'u i_size = 65536 değerine sahiptir, dolayısıyla num_pages 16 olur ve pages[] 16 işaretçili (kmalloc-128) bir dizidir. Yükleme işlemi artık 65536 giriş okumaya çalışır, io_ctl->index 16'ya kadar çıkar ve pages[16] okunarak dizi sınırları aşılır: BUG: KASAN: slab-out-of-bounds in io_ctl_check_crc (fs/btrfs/free-space-cache.c:420 fs/btrfs/free-space-cache.c:565) Read of size 8 at addr ffff88800c833a80 by task kworker/u8:3/58 io_ctl_check_crc (fs/btrfs/free-space-cache.c:420 fs/btrfs/free-space-cache.c:565) __load_free_space_cache (fs/btrfs/free-space-cache.c:655 fs/btrfs/free-space-cache.c:820) load_free_space_cache (fs/btrfs/free-space-cache.c:1017) caching_thread (fs/btrfs/block-group.c:880) btrfs_work_helper (fs/btrfs/async-thread.c:312) process_one_work worker_thread kthread ret_from_fork free-space-cache.c:420 satırı, 565. satırdaki io_ctl_check_crc() içerisine gömülmüş (inline) olan io_ctl_map_page() fonksiyonudur; KASAN'ın bu çerçeveyi adlandırmasının nedeni budur. Sınır dışındaki yuva daha sonra bir struct page olarak işlenir ve crc32c() fonksiyonuna iletilir, böylece hatalı okuma bir GP hatasına dönüşür. Hem giriş döngüsünün hem de bitmap döngüsünün sonlandığı yer olan io_ctl_check_crc() fonksiyonuna eksik olan kontrol eklenmiştir. Artık num_entries çok büyük olduğunda, yükleme işlemi herhangi bir bozuk önbellekte olduğu gibi başarısız olur: __load_free_space_cache() bunu düşürür ve boş alanı extent tree üzerinden yeniden oluşturur, böylece geçerli bir önbellek asla reddedilmez.

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux
Yayın5 Ağu 2026
İlk görülme5 Ağu 2026

Nasıl düzeltilir

Güncelleyin
  • Linux Linux8ded74c654a982dc8581a17b0caa7fcedb20de69, c9c38066b6446e83668c041702bb639b0ca49363, 094734c7aaa2b36751dc32480a680a4952685e78, 33878ba25e2638bc0c61623d7a05c9ca2b74c039, 404a0b986e0b6e79738fdf1f0ebbbc43b9acd2a2, 5e1b2ca6b34939e70fb0785e8222b53cf060016f, f9fef131fa3f59b857217f522fa5ea430d1b707c, a2d8d5647ed854e38f941741aea45b9eb15a6350 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
Linux Linux5b0e95bf607ddd59b39f52d3d55e6581c817b530 ≤ v < 8ded74c654a982dc8581a17b0caa7fcedb20de69, 5b0e95bf607ddd59b39f52d3d55e6581c817b530 ≤ v < c9c38066b6446e83668c041702bb639b0ca49363, 5b0e95bf607ddd59b39f52d3d55e6581c817b530 ≤ v < 094734c7aaa2b36751dc32480a680a4952685e78, 5b0e95bf607ddd59b39f52d3d55e6581c817b530 ≤ v < 33878ba25e2638bc0c61623d7a05c9ca2b74c039, 5b0e95bf607ddd59b39f52d3d55e6581c817b530 ≤ v < 404a0b986e0b6e79738fdf1f0ebbbc43b9acd2a2, 5b0e95bf607ddd59b39f52d3d55e6581c817b530 ≤ v < 5e1b2ca6b34939e70fb0785e8222b53cf060016f, 5b0e95bf607ddd59b39f52d3d55e6581c817b530 ≤ v < f9fef131fa3f59b857217f522fa5ea430d1b707c, 5b0e95bf607ddd59b39f52d3d55e6581c817b530 ≤ v < a2d8d5647ed854e38f941741aea45b9eb15a6350, 3.28ded74c654a982dc8581a17b0caa7fcedb20de69, c9c38066b6446e83668c041702bb639b0ca49363, 094734c7aaa2b36751dc32480a680a4952685e78, 33878ba25e2638bc0c61623d7a05c9ca2b74c039, 404a0b986e0b6e79738fdf1f0ebbbc43b9acd2a2, 5e1b2ca6b34939e70fb0785e8222b53cf060016f, f9fef131fa3f59b857217f522fa5ea430d1b707c, a2d8d5647ed854e38f941741aea45b9eb15a6350

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-64567 · Linux · Dark Radar