CVE-2022-49067

Orta

Açıklama

Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: powerpc: 64-bit Book3E ve 32-bit için virt_addr_valid() düzeltildi mpe: 64-bit Book3E'de vmalloc alanı 0x8000000000000000 adresinden başlar. __pa()'nın çalışma şekli nedeniyle şunu elde ederiz: __pa(0x8000000000000000) == 0 ve dolayısıyla virt_to_pfn(0x8000000000000000) == 0 ve dolayısıyla virt_addr_valid(0x8000000000000000) == true Bu yanlıştır, virt_addr_valid() vmalloc alanı için false dönmelidir. Aslında geçerli bir PFN ile örtüşen tüm vmalloc adresleri virt_addr_valid() tarafından true döndürür. Bu, aşağıda Kefeng Wang tarafından açıklandığı gibi sağlamlaştırılmış usercopy ile hatalara yol açabilir: 64-bit Book3E'de ethtool eth0 çalıştırıldığında bir BUG oluştu: usercopy: Kernel memory exposure attempt detected from SLUB object not in SLUB page?! (offset 0, size 1048)! kernel BUG at mm/usercopy.c:99 ... usercopy_abort+0x64/0xa0 (unreliable) __check_heap_object+0x168/0x190 __check_object_size+0x1a0/0x200 dev_ethtool+0x2494/0x2b20 dev_ioctl+0x5d0/0x770 sock_do_ioctl+0xf0/0x1d0 sock_ioctl+0x3ec/0x5a0 __se_sys_ioctl+0xf0/0x160 system_call_exception+0xfc/0x1f0 system_call_common+0xf8/0x200 Kod aşağıda gösterilmektedir, data = vzalloc(array_size(gstrings.len, ETH_GSTRING_LEN)); copy_to_user(useraddr, data, gstrings.len * ETH_GSTRING_LEN)) data vmalloc() tarafından tahsis edilir, virt_addr_valid(ptr) 64-bit Book3E'de true döndürür ve bu da paniğe yol açar. 4dd7554a6456 ("powerpc/64: Add VIRTUAL_BUG_ON checks for __va and __pa addresses") commit'inin yaptığı gibi, 64-bit için virt_addr_valid() içinde virt adresinin PAGE_OFFSET üzerinde olduğundan emin olun, ayrıca virt adresinin high_memory altında olduğundan emin olmak için üst sınır kontrolü ekleyin. Bu arada, 32-bit için PAGE_OFFSET lowmem başlangıcının sanal adresidir, high_memory üst düşük sanal adrestir, kontrol 32-bit için uygundur, bu 602946ec2f90 ("powerpc: Set max_mapnr correctly") commit'inde belirtilen sorunu da düzeltecektir. 32-bit'te yüksek bellek ile benzer bir sorun vardır, bu 602946ec2f90 ("powerpc: Set max_mapnr correctly") commit'inde düzeltilmiştir, ancak bu commit highmem'i bozar ve geri alınması gerekir. __pa()'yı kolayca düzeltemeyiz, mevcut davranışına dayanan kodumuz vardır. Bu nedenle şimdilik virt_addr_valid()'e ek kontroller ekleyin. 64-bit Book3S için ek kontroller gerekli değildir, virt_to_pfn() ve pfn_valid() kombinasyonu doğru sonucu vermelidir, ancak zararsızdırlar. [mpe: Ek değişiklik günlüğü ayrıntısı eklendi]

ÖnemOrta
CVSS5.5
İstismar olasılığı—
ÜrünLinux Kernel
Yayın26 Şub 2025
İlk görülme26 Şub 2025

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.4.190, 5.10.111, 5.15.34, 5.16.20, 5.17.3 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernelv < 5.4.190, 5.5 ≤ v < 5.10.111, 5.11 ≤ v < 5.15.34, 5.16 ≤ v < 5.16.20, 5.17 ≤ v < 5.17.3, 5.185.4.190, 5.10.111, 5.15.34, 5.16.20, 5.17.3

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-2022-49067 · Linux Kernel · Dark Radar