CVE-2022-48925

Yüksek

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: RDMA/cma: route.addr.src_addr değerini durum kontrollerinin dışında değiştirmeyin Eğer durum boşta (idle) değilse, resolve_prepare_src() fonksiyonu derhal hata vermeli ve genel durumda herhangi bir değişiklik olmamalıdır. Ancak mevcut durumda, geçici bir "herhangi bir adres" (any address) oluşturmaya çalışırken src_addr değerinin üzerine koşulsuz olarak yazmaktadır. Örneğin, eğer durum zaten RDMA_CM_LISTEN ise, bu işlem src_addr değerini bozar ve cma_cancel_operation() içerisindeki şu teste neden olur: if (cma_any_addr(cma_src_addr(id_priv)) && !id_priv->cma_dev) Bu durum, syzkaller'dan gelen şu izleme kaydıyla kendini gösterir: BUG: KASAN: use-after-free in __list_add_valid+0x93/0xa0 lib/list_debug.c:26 Read of size 8 at addr ffff8881546491e0 by task syz-executor.1/32204 CPU: 1 PID: 32204 Comm: syz-executor.1 Not tainted 5.12.0-rc8-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Call Trace: __dump_stack lib/dump_stack.c:79 [inline] dump_stack+0x141/0x1d7 lib/dump_stack.c:120 print_address_description.constprop.0.cold+0x5b/0x2f8 mm/kasan/report.c:232 __kasan_report mm/kasan/report.c:399 [inline] kasan_report.cold+0x7c/0xd8 mm/kasan/report.c:416 __list_add_valid+0x93/0xa0 lib/list_debug.c:26 __list_add include/linux/list.h:67 [inline] list_add_tail include/linux/list.h:100 [inline] cma_listen_on_all drivers/infiniband/core/cma.c:2557 [inline] rdma_listen+0x787/0xe00 drivers/infiniband/core/cma.c:3751 ucma_listen+0x16a/0x210 drivers/infiniband/core/ucma.c:1102 ucma_write+0x259/0x350 drivers/infiniband/core/ucma.c:1732 vfs_write+0x28e/0xa30 fs/read_write.c:603 ksys_write+0x1ee/0x250 fs/read_write.c:658 do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46 entry_SYSCALL_64_after_hwframe+0x44/0xae Bu durum, bir rdma_id_private nesnesinin cma_cancel_listens() çağrılmadan yok edildiğini göstermektedir. dst üzerinden türetilen bir "herhangi bir adres" oluşturmak için dolaylı olarak src_addr belleğini yeniden kullanmaya çalışmak yerine, diğer tüm normal akışlarda olduğu gibi yığında (stack) açıkça bir tane oluşturulmalı ve buna bağlanmalıdır. rdma_bind_addr(), durumun geçerli olduğunu bildiğinde bunu src_addr üzerine kopyalayacaktır. Bu düzeltme, bc0bdc5afaa7 ("RDMA/cma: Do not change route.addr.src_addr.ss_family") numaralı commit ile benzerdir.

ÖnemYüksek
CVSS7.8
İstismar olasılığı13. yüzdelik%0,2
ÜrünLinux Kernel
Yayın22 Ağu 2024
İlk görülme22 Ağu 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.10.103, 5.15.26, 5.16.12 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel5.10 ≤ v < 5.10.103, 5.11 ≤ v < 5.15.26, 5.16 ≤ v < 5.16.125.10.103, 5.15.26, 5.16.12

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.