CVE-2025-21984

Yüksek

Açıklama

Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: mm: userfaultfd_move swapcache ile karşılaştığında oluşan kernel BUG hatası düzeltildi userfaultfd_move(), PTE girişinin mevcut olup olmadığını veya bir swap girişi olduğunu kontrol eder. - Eğer PTE girişi mevcutsa, move_present_pte() şu ayarı yaparak folio taşımasını yönetir: src_folio->index = linear_page_index(dst_vma, dst_addr); - Eğer PTE girişi bir swap girişi ise, move_swap_pte() basitçe PTE'yi yeni dst_addr adresine kopyalar. Bu yaklaşım yanlıştır çünkü PTE bir swap girişi olsa bile, hala swap önbelleğinde kalan bir folioya referans verebilir. Bu durum, 2. ve 4. adımlar arasında bir yarış durumu (race window) oluşturur. 1. add_to_swap: Folio, swapcache'e eklenir. 2. try_to_unmap: PTE'ler swap girişlerine dönüştürülür. 3. pageout: Folio geri yazılır. 4. Swapcache temizlenir. Eğer userfaultfd_move() işlemi 2. ve 4. adımlar arasındaki pencerede gerçekleşirse, swap PTE hedef adrese taşındıktan sonra hedefe erişim do_swap_page() fonksiyonunu tetikler; bu fonksiyon folioyu swapcache içinde bulabilir. Ancak, folionun indeksi hedef VMA ile eşleşecek şekilde güncellenmediği için do_swap_page() bir uyumsuzluk tespit edecektir. Sistem konfigürasyonuna bağlı olarak bu durum iki kritik sorunla sonuçlanabilir. KSM devre dışıysa, hem küçük hem de büyük foliolarda add_rmap işlemi sırasında şundan dolayı bir BUG tetiklenebilir: page_pgoff(folio, page) != linear_page_index(vma, address) [ 13.336953] page: refcount:6 mapcount:1 mapping:00000000f43db19c index:0xffffaf150 pfn:0x4667c [ 13.337520] head: order:2 mapcount:1 entire_mapcount:0 nr_pages_mapped:1 pincount:0 [ 13.337716] memcg:ffff00000405f000 [ 13.337849] anon flags: 0x3fffc0000020459(locked|uptodate|dirty|owner_priv_1|head|swapbacked|node=0|zone=0|lastcpupid=0xffff) [ 13.338630] raw: 03fffc0000020459 ffff80008507b538 ffff80008507b538 ffff000006260361 [ 13.338831] raw: 0000000ffffaf150 0000000000004000 0000000600000000 ffff00000405f000 [ 13.339031] head: 03fffc0000020459 ffff80008507b538 ffff80008507b538 ffff000006260361 [ 13.339204] head: 0000000ffffaf150 0000000000004000 0000000600000000 ffff00000405f000 [ 13.339375] head: 03fffc0000000202 fffffdffc0199f01 ffffffff00000000 0000000000000001 [ 13.339546] head: 0000000000000004 0000000000000000 00000000ffffffff 0000000000000000 [ 13.339736] page dumped because: VM_BUG_ON_PAGE(page_pgoff(folio, page) != linear_page_index(vma, address)) [ 13.340190] ------------[ cut here ]------------ [ 13.340316] kernel BUG at mm/rmap.c:1380! [ 13.340683] Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP [ 13.340969] Modules linked in: [ 13.341257] CPU: 1 UID: 0 PID: 107 Comm: a.out Not tainted 6.14.0-rc3-gcf42737e247a-dirty #299 [ 13.341470] Hardware name: linux,dummy-virt (DT) [ 13.341671] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 13.341815] pc : __page_check_anon_rmap+0xa0/0xb0 [ 13.341920] lr : __page_check_anon_rmap+0xa0/0xb0 [ 13.342018] sp : ffff80008752bb20 [ 13.342093] x29: ffff80008752bb20 x28: fffffdffc0199f00 x27: 0000000000000001 [ 13.342404] x26: 0000000000000000 x25: 0000000000000001 x24: 0000000000000001 [ 13.342575] x23: 0000ffffaf0d0000 x22: 0000ffffaf0d0000 x21: fffffdffc0199f00 [ 13.342731] x20: fffffdffc0199f00 x19: ffff000006210700 x18: 00000000ffffffff [ 13.342881] x17: 6c203d2120296567 x16: 6170202c6f696c6f x15: 662866666f67705f [ 13.343033] x14: 6567617028454741 x13: 2929737365726464 x12: ffff800083728ab0 [ 13.343183] x11: ffff800082996bf8 x10: 0000000000000fd7 x9 : ffff80008011bc40 [ 13.343351] x8 : 0000000000017fe8 x7 : 00000000fffff000 x6 : ffff8000829eebf8 [ 13.343498] x5 : c0000000fffff000 x4 : 0000000000000000 x3 : 0000000000000000 [ 13.343645] x2 : 0000000000000000 x1 : ffff0000062db980 x0 : 000000000000005f [ 13.343876] Call trace: [ 13.344045] __page_check_anon_rmap+0xa0/0xb0 (P) [ 13.344234] folio_add_anon_rmap_ptes+0x22c/0x320 [ 13.344333] do_swap_page+0x1060/0x1400 [ 13.344417] __handl ---kesildi---

ÖnemYüksek
CVSS7.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın1 Nis 2025
İlk görülme1 Nis 2025
Zayıflık türüCWE-362Yarış durumu

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.12.20, 6.13.8 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel6.8 ≤ v < 6.12.20, 6.13 ≤ v < 6.13.8, 6.146.12.20, 6.13.8

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-2025-21984 · Linux Kernel · Dark Radar