CVE-2026-63807 in Linux
Tóm tắt
Bởi VulDB • 20/07/2026
Trong kernel Linux, lỗ hổng bảo mật sau đây đã được khắc phục:
KVM: x86/mmu: Đảm bảo hugepage nằm trong memslot trước khi kiểm tra mức ánh xạ tối đa (max mapping level)
Khi khôi phục các hugepage trong shadow MMU, hãy xác minh rằng base gfn của trang bóng (shadow page) thực sự nằm bên trong target memslot đã chỉ định, *trước* khi truy vấn max mapping level dựa trên gfn của trang bóng. Việc không kiểm tra tính hợp lệ của gfn trước có thể dẫn đến việc truy cập ngoài vùng cho phép (out-of-bounds access) vào lpage_info của slot (thường biểu hiện dưới dạng lỗi #PF ở phía host do lpage_info được cấp phát bằng vmalloc) nếu guest tạo một ánh xạ hugepage (trong các PTEs của nó) mở rộng "xuống thấp hơn" so với ranh giới của memslot.
Khi xảy ra lỗi fault khi đưa bộ nhớ vào cho một guest, và kích thước ánh xạ của guest lớn hơn mức tối đa hiện tại của KVM, thì KVM sẽ tạo một trang bóng "trực tiếp" (direct shadow page) – trực tiếp ở chỗ không có gPTEs nào để sao chép, do đó target gfn được tính toán trực tiếp dựa trên base gfn của trang bóng. Luồng khôi phục hugepage tìm kiếm các trang bóng trực tiếp như vậy, vì việc bắt buộc sử dụng ánh xạ 4KiB khi ghi nhật ký dirty (dirty logging) tạo ra trường hợp kích thước ánh xạ guest > host. Khi hạn chế 4KiB được dỡ bỏ, KVM có thể thay thế trang bóng bằng một hugepage.
Tuy nhiên, nếu ban đầu KVM đã sử dụng một phép ánh xạ nhỏ hơn so với của guest vì phạm vi bộ nhớ bao phủ bởi hugepage của guest vượt quá ranh giới của memslot, thì KVM sẽ liên kết một trang bóng trực tiếp có gfn nằm ngoài ranh giới của memslot đang được sử dụng để xử lý lỗi fault đưa bộ nhớ vào. Mục nhập rmap (reverse mapping) được thêm cho ánh xạ lá (leaf mapping) là chính xác và nằm trong vùng hợp lệ, nhưng gfn của trang bóng cha của SPTE lá sẽ nằm ngoài vùng hợp lệ.
BUG: unable to handle page fault for address: ffffc90000806ffc #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 100000067 P4D 100000067 PUD 1002a7067 PMD 10612f067 PTE 0 Oops: Oops: 0000 [#1] SMP
CPU: 13 UID: 1000 PID: 757 Comm: mmu_stress_test Not tainted 7.1.0-rc1-48ce1e26eace-x86_pir_to_irr_comments-vm #341 PREEMPT Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:kvm_mmu_max_mapping_level+0x79/0x2b0 [kvm]
Call Trace: <TASK> kvm_mmu_recover_huge_pages+0x21b/0x320 [kvm
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.