CVE-2024-56693
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: brd: otomatik disk oluşturmayı modül başlatma işlemi başarılı olana kadar erteleyin Çalışma arkadaşım Wupeng, hata enjeksiyonu sırasında şu sorunları tespit etmiştir: BUG: unable to handle page fault for address: fffffbfff809d073 PGD 6e648067 P4D 123ec8067 PUD 123ec4067 PMD 100e38067 PTE 0 Oops: Oops: 0000 [#1] PREEMPT SMP KASAN NOPTI CPU: 5 UID: 0 PID: 755 Comm: modprobe Not tainted 6.12.0-rc3+ #17 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.1-2.fc37 04/01/2014 RIP: 0010:__asan_load8+0x4c/0xa0 ... Call Trace: <TASK> blkdev_put_whole+0x41/0x70 bdev_release+0x1a3/0x250 blkdev_release+0x11/0x20 __fput+0x1d7/0x4a0 task_work_run+0xfc/0x180 syscall_exit_to_user_mode+0x1de/0x1f0 do_syscall_64+0x6b/0x170 entry_SYSCALL_64_after_hwframe+0x76/0x7e loop_init(), __register_blkdev() başarılı olduktan sonra loop_add() fonksiyonunu çağırmakta ve loop_add()'den gelen disk_add() hatasını görmezden gelmektedir; çünkü loop_add() hatası kritik değildir ve başarıyla oluşturulan diskler zaten bdev_open() için görünür durumdadır. brd_init() ise şu anda __register_blkdev() başarılı olmadan önce brd_alloc() fonksiyonunu çağırmakta ve brd_init() bir hata döndürdüğünde başarıyla oluşturulan diskleri serbest bırakmaktadır. Bu durum, aşağıdaki iki senaryoda serbest bırakıldıktan sonra kullanım (UAF) sorununa yol açabilir: durum 1: T1: modprobe brd brd_init brd_alloc(0) // başarıyla tamamlandı add_disk disk_scan_partitions bdev_file_open_by_dev // dosya tahsis edildi fput // kullanıcı alanına dönene kadar serbest bırakılmayacak brd_alloc(1) // bellek tahsis hatası enjekte edildiği için başarısız oldu // modprobe için hata yolu kod segmentini serbest bırakacaktır // kullanıcı alanına geri dönüş __fput blkdev_release bdev_release blkdev_put_whole bdev->bd_disk->fops->release // fops şu an serbest bırakıldı, UAF! durum 2: T1: T2: modprobe brd brd_init brd_alloc(0) // başarıyla tamamlandı open(/dev/ram0) brd_alloc(1) // başarısız // modprobe için hata yolu close(/dev/ram0) ... /* UAF! */ bdev->bd_disk->fops->release Bu sorun, loop_init() fonksiyonunun izlediği yöntem takip edilerek düzeltilmiştir. Ayrıca, brd_list üzerindeki değişikliklerin sıraya konulmasına yardımcı olmak için brd_devices_mutex yeniden eklenmiştir.
Nasıl düzeltilir
- linux linux_kernel5.15.174, 6.1.120, 6.6.64, 6.11.11, 6.12.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 | 5.14 ≤ v < 5.15.174, 5.16 ≤ v < 6.1.120, 6.2 ≤ v < 6.6.64, 6.7 ≤ v < 6.11.11, 6.12 ≤ v < 6.12.2 | 5.15.174, 6.1.120, 6.6.64, 6.11.11, 6.12.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.