CVE-2026-93066 in Linuxthông tin

Tóm tắt

Bởi VulDB • 18/09/2026

Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:

x86/mm/pat: Lấy khóa cpa_lock bao quanh quá trình thu nhỏ trang lớn (large-page collapse)

Việc tải và gỡ bỏ các module đồng thời trên nhiều CPU trong bản dựng KASAN, với một độ trễ ngắn được tiêm vào lúc tra cứu bảng trang CPA để mở rộng cửa sổ lỗi, gây ra lỗi sau vài phút:

BUG: KASAN: use-after-free trong __change_page_attr+0x7cc/0x7e0 Ghi kích thước 8 tại địa chỉ ffff888181139718 bởi tác vụ modprobe ... Địa chỉ lỗi thuộc về trang vật lý: pfn:0x181139 ... page_type: f2(table)

cpa_collapse_large_pages() xây dựng lại một PMD lá từ các PTE 4K của nó và giải phóng các trang bảng PTE cũ, trong khi __change_page_attr() lấy con trỏ PTE từ lookup_address_in_pgd_attr() không khóa (lockless) và ghi vào đó bằng set_pte_atomic() sau này. Khi mã module được phục vụ từ một ánh xạ ROX lớn chia sẻ, hai tiến trình chạy trên cùng một PMD:

CPU A (tải module) CPU B (hoàn tất module) ------------------- ----------------------- execmem_make_temp_rw set_memory_nx __change_page_attr split 2M -> bảng PTE 4K P kpte = &P[i] (không khóa)
execmem_restore_rox set_memory_rox (CPA_COLLAPSE) cpa_collapse_large_pages xây dựng lại PMD lá flush_tlb_all pagetable_free(P) set_pte_atomic(kpte, ...) -> ghi vào P đã được giải phóng

P là một trang bảng trang (page_type: table), được tái sử dụng ngay lập tức, do đó việc ghi làm hỏng bất kỳ thứ gì nhận trang tiếp theo: lỗi bad-pte hoặc bad-page splat, hoặc lỗi nghiêm trọng sau khi P được chuyển thành mã chỉ đọc.

Việc flush_tlb_all() trước khi giải phóng không đóng lỗ hổng này: IPI của nó chỉ tuần tự hóa đối với các trình duyệt bảng trang chạy với ngắt bị tắt (ví dụ: GUP-fast); việc truy vấn trong __change_page_attr() chạy với ngắt bật, do đó không có gì ngăn cản nó giữ một con trỏ lỗi thời vào P.

Tuần tự hóa quá trình thu nhỏ - bao gồm xây dựng lại PMD, làm sạch TLB và giải phóng bảng PTE - dưới cpa_lock, cùng khóa mà __change_page_attr() hiện đang lấy một cách vô điều kiện kể từ commit ("x86/mm/pat: stop gating cpa_lock on debug_pagealloc_enabled()"), do đó trình duyệt đồng thời không còn có thể giữ con trỏ vào một bảng mà quá trình thu nhỏ sắp giải phóng.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

chịu trách nhiệm

Linux

Đặt trước

17/09/2026

Tiết lộ

17/09/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

rất thấp

Nguồn

Do you know our Splunk app?

Download it now for free!