CVE-2025-37785
Açıklama
Linux kernel'da aşağıdaki güvenlik açığı giderilmiştir: ext4: dotdot dizini kontrol edilirken meydana gelen OOB okuma hatası düzeltildi rec_len değerinin blok boyutuna eşit olduğu bir '.' dizin girdisi içeren bozuk bir dosya sisteminin bağlanması, (bozuk dizin daha sonra kaldırıldığında) sınır dışı (out-of-bounds - OOB) okumaya neden olur. ext4_empty_dir(), her ext4 dizininin ilk veri bloğunda dizin girdileri olarak en az '.' ve '..' içerdiğini varsayar. Önce '.' dizin girdisini yükler, ext4_check_dir_entry() fonksiyonunu çağırarak tutarlılık kontrollerini gerçekleştirir ve ardından '..' dizin girdisinin konumunu hesaplamak için (ext4_next_entry içinde) rec_len üyesini kullanır. '..' dizin girdisinin aynı veri bloğuna sığacağını varsayar. Eğer '.' girdisinin rec_len değeri tam olarak bir blok (4KB) ise, tutarlılık kontrollerinden geçer (veri bloğundaki son dizin girdisi olarak kabul edilir) ve "struct ext4_dir_entry_2 *de" işaretçisinin veri bloğu için ayrılan bellek alanının hemen dışını göstermesine neden olur. Ardından de'nin yeni değeri üzerinde yapılan ext4_check_dir_entry() çağrısı bu işaretçiyi çözümler ve bu durum sınır dışı bellek erişimine yol açar. Bu sorun, __ext4_check_dir_entry() fonksiyonunun veri bloğunun sonuna ulaşan '.' dizin girdilerini kontrol edecek şekilde genişletilmesiyle düzeltilmiştir. Checksum için sahte dizin girdilerinin yoksayılması sağlanmıştır (name_len değerinin sıfırdan farklı olup olmadığı kontrol edilerek). Not: Sınır ötesindeki alandan başka bir yapı yakın zamanda serbest bırakılmışsa, KASAN bunu serbest bırakıldıktan sonra kullanım (use-after-free) olarak raporlamıştır ancak bu aslında bir OOB okumadır. Bu sorun syzkaller aracı tarafından bulunmuştur. Call Trace: [ 38.594108] BUG: KASAN: slab-use-after-free in __ext4_check_dir_entry+0x67e/0x710 [ 38.594649] Read of size 2 at addr ffff88802b41a004 by task syz-executor/5375 [ 38.595158] [ 38.595288] CPU: 0 UID: 0 PID: 5375 Comm: syz-executor Not tainted 6.14.0-rc7 #1 [ 38.595298] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 [ 38.595304] Call Trace: [ 38.595308] <TASK> [ 38.595311] dump_stack_lvl+0xa7/0xd0 [ 38.595325] print_address_description.constprop.0+0x2c/0x3f0 [ 38.595339] ? __ext4_check_dir_entry+0x67e/0x710 [ 38.595349] print_report+0xaa/0x250 [ 38.595359] ? __ext4_check_dir_entry+0x67e/0x710 [ 38.595368] ? kasan_addr_to_slab+0x9/0x90 [ 38.595378] kasan_report+0xab/0xe0 [ 38.595389] ? __ext4_check_dir_entry+0x67e/0x710 [ 38.595400] __ext4_check_dir_entry+0x67e/0x710 [ 38.595410] ext4_empty_dir+0x465/0x990 [ 38.595421] ? __pfx_ext4_empty_dir+0x10/0x10 [ 38.595432] ext4_rmdir.part.0+0x29a/0xd10 [ 38.595441] ? __dquot_initialize+0x2a7/0xbf0 [ 38.595455] ? __pfx_ext4_rmdir.part.0+0x10/0x10 [ 38.595464] ? __pfx___dquot_initialize+0x10/0x10 [ 38.595478] ? down_write+0xdb/0x140 [ 38.595487] ? __pfx_down_write+0x10/0x10 [ 38.595497] ext4_rmdir+0xee/0x140 [ 38.595506] vfs_rmdir+0x209/0x670 [ 38.595517] ? lookup_one_qstr_excl+0x3b/0x190 [ 38.595529] do_rmdir+0x363/0x3c0 [ 38.595537] ? __pfx_do_rmdir+0x10/0x10 [ 38.595544] ? strncpy_from_user+0x1ff/0x2e0 [ 38.595561] __x64_sys_unlinkat+0xf0/0x130 [ 38.595570] do_syscall_64+0x5b/0x180 [ 38.595583] entry_SYSCALL_64_after_hwframe+0x76/0x7e
Nasıl düzeltilir
- linux linux_kernel5.10.236, 5.15.180, 6.1.134, 6.6.87, 6.12.23, 6.13.11, 6.14.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 | 2.6.19 ≤ v < 5.10.236, 5.11 ≤ v < 5.15.180, 5.16 ≤ v < 6.1.134, 6.2 ≤ v < 6.6.87, 6.7 ≤ v < 6.12.23, 6.13 ≤ v < 6.13.11, 6.14 ≤ v < 6.14.2 | 5.10.236, 5.15.180, 6.1.134, 6.6.87, 6.12.23, 6.13.11, 6.14.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.