CVE-2026-64149 in Linux
Tóm tắt
Bởi VulDB • 20/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
dma-mapping: di chuyển kiểm tra tính hợp lệ (sanity check) của hàm dma_map_resource() vào mã gỡ lỗi
Hàm dma_map_resource() sử dụng pfn_valid() để đảm bảo phạm vi bộ nhớ không phải là RAM. Tuy nhiên, pfn_valid() chỉ kiểm tra sự tồn tại của bản đồ bộ nhớ cho một PFN (Page Frame Number), nhưng nó không đảm bảo rằng PFN đó thực sự được hỗ trợ bởi RAM. Trên kiến trúc ARM64 với SPARSEMEM (độ phân giải phần section 128MB), các địa chỉ MMIO chia sẻ cùng một section với RAM sẽ kích hoạt sai cảnh báo WARN_ON_ONCE và khiến dma_map_resource() trả về DMA_MAPPING_ERROR.
Điều này gây ra cảnh báo WARNING trên Raspberry Pi 4 trong quá trình probe spi_bcm2835, vì thanh ghi FIFO của SPI (0xfe204004) nằm trong cùng một section sparsemem với cuối vùng RAM (0xf8000000-0xfbffffff), cả hai đều thuộc về section 31 (0xf8000000-0xffffffff).
Đã di chuyển kiểm tra tính hợp lệ từ dma_map_resource() sang debug_dma_map_phys() và thay thế pfn_valid() không đáng tin cậy bằng điều kiện pfn_valid() && !PageReserved(), giúp xác định chính xác RAM thực sự có thể sử dụng mà không tạo ra kết quả dương tính giả cho các vùng MMIO vô tình có struct pages.
Vì dma_map_resource() tương đương với dma_map_phys(DMA_ATTR_MMIO), nên kiểm tra này áp dụng equally (như nhau) cho cả hai API. Bất kỳ trang nào chưa được đánh dấu là reserved đều đại diện đủ tốt cho bộ nhớ kernel, do đó việc sử dụng DMA_ATTR_MMIO trên nó gần như chắc chắn là sai và có nguy cơ làm hỏng tính nhất quán (coherency) trên các nền tảng không hỗ trợ coherency. Các trang ZONE_DEVICE được sử dụng cho PCI P2P DMA (MEMORY_DEVICE_PCI_P2PDMA) đã được đặt cờ PageReserved, vì vậy chúng sẽ không kích hoạt kết quả dương tính giả.
Kiểm tra này không còn chặn việc ánh xạ nữa và sử dụng err_printk() để tích hợp với bộ lọc dma-debug.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.