CVE-2026-64149 in Linux
요약
\~에 의해 VulDB • 2026. 07. 19.
리눅스 커널에서 다음 취약점이 해결되었습니다:
dma-mapping: dma_map_resource()의 정합성 검사(sanity check)를 디버그 코드로 이동
dma_map_resource()는 pfn_valid()를 사용하여 해당 범위가 RAM이 아님을 확인합니다. 그러나 pfn_valid()는 PFN에 대한 메모리 맵 가용성만 점검할 뿐, 실제로 그 PFN이 RAM으로 백업되어 있는지 보장하지 않습니다. SPARSEMEM(128MB 섹션 구분자)을 사용하는 ARM64 환경에서는 RAM과 같은 섹션을 공유하는 MMIO 주소가 WARN_ON_ONCE를 잘못 트리거하여 dma_map_resource()가 DMA_MAPPING_ERROR를 반환하게 됩니다.
이로 인해 Raspberry Pi 4에서 spi_bcm2835 프로브(probe) 시 WARNING이 발생합니다. 이는 SPI FIFO 레지스터(0xfe204004)가 RAM 끝부분(0xf8000000-0xfbffffff)과 동일한 sparsemem 섹션, 즉 섹션 31(0xf8000000-0xffffffff)에 위치하기 때문입니다.
정합성 검사를 dma_map_resource()에서 debug_dma_map_phys()로 이동하고, 신뢰할 수 없는 pfn_valid()를 pfn_valid() && !PageReserved()로 대체하여 MMIO 영역(struct pages가 있는 경우에도)의 잘못된 양성(false positive) 없이 실제 사용 가능한 RAM을 올바르게 식별합니다.
dma_map_resource()는 dma_map_phys(DMA_ATTR_MMIO)이므로, 이 검사는 두 API 모두에 동일하게 적용됩니다. 예약되지 않은(non-reserved) 페이지는 커널 메모리로 간주하기에 충분하므로, 이러한 페이지에서 DMA_ATTR_MMIO를 사용하는 것은 거의 확실히 잘못되었으며 비일관성 플랫폼(coherency platforms)에서의 일관성 깨짐을 초래할 위험이 있습니다. PCI P2P DMA(MEMORY_DEVICE_PCI_P2PDMA)에 사용되는 ZONE_DEVICE 페이지는 PageReserved가 설정되어 있으므로 잘못된 양성을 트리거하지 않습니다.
이 검사는 매핑을 더 이상 차단하지 않으며, err_printk()를 사용하여 dma-debug 필터링과 통합됩니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.