CVE-2024-42115
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: jffs2: jffs2_free_inode fonksiyonundaki potansiyel geçersiz adres erişimi düzeltildi jffs2 dosya sisteminin stres testleri sırasında şu anormal çıktılar tespit edilmiştir: [ 2430.649000] Unable to handle kernel paging request at virtual address 0069696969696948 [ 2430.649622] Mem abort info: [ 2430.649829] ESR = 0x96000004 [ 2430.650115] EC = 0x25: DABT (current EL), IL = 32 bits [ 2430.650564] SET = 0, FnV = 0 [ 2430.650795] EA = 0, S1PTW = 0 [ 2430.651032] FSC = 0x04: level 0 translation fault [ 2430.651446] Data abort info: [ 2430.651683] ISV = 0, ISS = 0x00000004 [ 2430.652001] CM = 0, WnR = 0 [ 2430.652558] [0069696969696948] address between user and kernel address ranges [ 2430.653265] Internal error: Oops: 96000004 [#1] PREEMPT SMP [ 2430.654512] CPU: 2 PID: 20919 Comm: cat Not tainted 5.15.25-g512f31242bf6 #33 [ 2430.655008] Hardware name: linux,dummy-virt (DT) [ 2430.655517] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 2430.656142] pc : kfree+0x78/0x348 [ 2430.656630] lr : jffs2_free_inode+0x24/0x48 [ 2430.657051] sp : ffff800009eebd10 [ 2430.657355] x29: ffff800009eebd10 x28: 0000000000000001 x27: 0000000000000000 [ 2430.658327] x26: ffff000038f09d80 x25: 0080000000000000 x24: ffff800009d38000 [ 2430.658919] x23: 5a5a5a5a5a5a5a5a x22: ffff000038f09d80 x21: ffff8000084f0d14 [ 2430.659434] x20: ffff0000bf9a6ac0 x19: 0169696969696940 x18: 0000000000000000 [ 2430.659969] x17: ffff8000b6506000 x16: ffff800009eec000 x15: 0000000000004000 [ 2430.660637] x14: 0000000000000000 x13: 00000001000820a1 x12: 00000000000d1b19 [ 2430.661345] x11: 0004000800000000 x10: 0000000000000001 x9 : ffff8000084f0d14 [ 2430.662025] x8 : ffff0000bf9a6b40 x7 : ffff0000bf9a6b48 x6 : 0000000003470302 [ 2430.662695] x5 : ffff00002e41dcc0 x4 : ffff0000bf9aa3b0 x3 : 0000000003470342 [ 2430.663486] x2 : 0000000000000000 x1 : ffff8000084f0d14 x0 : fffffc0000000000 [ 2430.664217] Call trace: [ 2430.664528] kfree+0x78/0x348 [ 2430.664855] jffs2_free_inode+0x24/0x48 [ 2430.665233] i_callback+0x24/0x50 [ 2430.665528] rcu_do_batch+0x1ac/0x448 [ 2430.665892] rcu_core+0x28c/0x3c8 [ 2430.666151] rcu_core_si+0x18/0x28 [ 2430.666473] __do_softirq+0x138/0x3cc [ 2430.666781] irq_exit+0xf0/0x110 [ 2430.667065] handle_domain_irq+0x6c/0x98 [ 2430.667447] gic_handle_irq+0xac/0xe8 [ 2430.667739] call_on_irq_stack+0x28/0x54 kfree fonksiyonuna iletilen parametre, jffs_inode_info yapısının target alanına karşılık gelen 5a5a5a5a değeridir. İlk üye olan sem dışındaki tüm jffs_inode_info yapısı değişkenlerinin 5a5a5a5a olduğu görülmüştür. Başlatılmamış belleği tespit etmek amacıyla bellek testi sırasında bu değerler atandığından, söz konusu değişkenlerin başlatılmadığı şüphelenilmektedir. sem değişkeni jffs2_i_init_once fonksiyonunda, diğer üyeler ise jffs2_init_inode_info fonksiyonunda başlatılır. jffs2_init_inode_info fonksiyonu iget_locked çağrısından sonra çalıştırılır; ancak iget_locked fonksiyonu içerisinde, inode'u serbest bırakan ve dolayısıyla inode'un target üyesinin başlatılmamasına neden olan destroy_inode işlemi tetiklenebilir. Eşzamanlı yüksek baskı senaryolarında, iget_locked kodda açıklandığı üzere destroy_inode dalına girebilir. jffs2'nin destroy_inode işlevi yalnızca target'ı serbest bıraktığı için çözüm yöntemi, jffs2_i_init_once fonksiyonunda target değerini NULL olarak ayarlamaktır.
Nasıl düzeltilir
- linux linux_kernel4.19.318, 5.4.280, 5.10.222, 5.15.163, 6.1.98, 6.6.39, 6.9.9 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 | v < 4.19.318, 4.20 ≤ v < 5.4.280, 5.5 ≤ v < 5.10.222, 5.11 ≤ v < 5.15.163, 5.16 ≤ v < 6.1.98, 6.2 ≤ v < 6.6.39, 6.7 ≤ v < 6.9.9 | 4.19.318, 5.4.280, 5.10.222, 5.15.163, 6.1.98, 6.6.39, 6.9.9 |
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.