CVE-2025-22090

Yüksək

Təsvir

Linux kernel-də aşağıdakı boşluq aradan qaldırılmışdır: x86/mm/pat: copy_page_range() funksiyasında fork() uğursuz olduqda VM_PAT idarəetməsinin düzəldilməsi Əgər track_pfn_copy() uğursuz olarsa, biz artıq dst VMA-nı maple tree-yə əlavə etmişik. fork() uğursuz olduğu üçün maple tree təmizlənəcək və hər hansı rezervasiya etmədiyimiz və ya səhifə cədvəllərini kopyalamadığımız dst VMA ilə qarşılaşacağıq. Nəticədə untrack_pfn() VM_PAT-ı görəcək və PAT məlumatını səhifə cədvəlindən almağa çalışacaq — lakin səhifə cədvəli kopyalanmadığı üçün bu proses uğursuz olacaq. Ən sadə həll yolu track_pfn_copy() uğursuz olduqda dst VMA-nın VM_PAT bayrağını sadəcə sıfırlamaq olardı. Lakin, VM_PAT bayrağının "sadəcə" sıfırlanması də şübhəlidir: əgər track_pfn_copy()-i keçib rezervasiyanı yerinə yetirsək, lakin səhifə cədvəllərinin kopyalanması uğursuz olsa, biz rezervasiyanı düzgün şəkildə geri qaytarmadan sadəcə VM_PAT bayrağını sıfırlayacağıq ... ki, bu da yanlışdır. Ona görə də bunu düzgün şəkildə həll edək: VM_PAT bayrağını yalnız rezervasiya uğurlu olduqda təyin edək (başlanğıca onu sıfır saxlayaq) və səhifə cədvəlləri kopyalanarkən hər hansı bir xəta baş verdikdə rezervasiyanı ləğv edək: rezervasiyanı geri qaytardıqdan sonra VM_PAT bayrağını sıfırlayaq. Qeyd edək ki, copy_page_range() uğurlu olduqdan sonra VMA daha sonra silindikdə, kopyalanmış bütün səhifə cədvəli girişləri silinəcək; VM_PAT təyin edilməmiş olduğu üçün biz VM_PAT-ı yenidən təmizləməyə çalışmayacağıq və untrack_pfn() normal işləyəcək. Rezervasiya olmadan bu səhifə cədvəllərinin yerində qalmasının problem olmadığını qeyd edirik, çünki fork() prosesini dayandırırıq; bu proses heç vaxt işləməyəcək. Reproduser adətən ilk cəhddə bunu tetikləyə bilər: https://gitlab.com/davidhildenbrand/scratchspace/-/raw/main/reproducers/pat_fork.c WARNING: CPU: 26 PID: 11650 at arch/x86/mm/pat/memtype.c:983 get_pat_info+0xf6/0x110 Modules linked in: ... CPU: 26 UID: 0 PID: 11650 Comm: repro3 Not tainted 6.12.0-rc5+ #92 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-2.fc40 04/01/2014 RIP: 0010:get_pat_info+0xf6/0x110 ... Call Trace: <TASK> ... untrack_pfn+0x52/0x110 unmap_single_vma+0xa6/0xe0 unmap_vmas+0x105/0x1f0 exit_mmap+0xf6/0x460 __mmput+0x4b/0x120 copy_process+0x1bf6/0x2aa0 kernel_clone+0xab/0x440 __do_sys_clone+0x66/0x90 do_syscall_64+0x95/0x180 Ehtimal ki, bu hal burada nəzərdən qaçırılıb: d155df53f310 ("x86/mm/pat: clear VM_PAT if copy_p4d_range failed") ... və rezervasiyanı geri qaytarmaq əvəzinə biz sadəcə VM_PAT bayrağını sıfırladıq. Bu funksiyaların sənədləşdirilməsini include/linux/pgtable.h faylında saxlayın, bir yer kifayətdir — digər track_pfn_remap/untrack_pfn kimi funksiyalar üçün bunu ayrıca təmizləməliyik.

CiddilikYüksək
CVSS7.3
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc16 apr 2025
İlk görülmə16 apr 2025

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel6.6.87, 6.12.23, 6.13.11, 6.14.2 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel2.6.29 ≤ v < 6.6.87, 6.7 ≤ v < 6.12.23, 6.13 ≤ v < 6.13.11, 6.14 ≤ v < 6.14.26.6.87, 6.12.23, 6.13.11, 6.14.2

Versiyanızı yoxlayın

Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.

Intelligence 360 paketində

Attack Surface Management

Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.