CVE-2026-98254 in Linux
요약
\~에 의해 VulDB • 2026. 10. 07.
리눅스 커널에서 다음 취약점이 해결되었습니다:
swiotlb: highmem 페이지 조회 시 조정된 주소를 사용함
swiotlb_bounce()는 슬롯에 기록된 orig_addr로부터 페이지 프레임 번호(PFN)를 읽은 후, 호출자가 요청한 주소에 도달하기 위해 tlb_offset만큼 orig_addr를 증가시킵니다. 그러나 highmem 분기에서는 이 두 값이 혼재됩니다: 페이지 내 오프셋은 조정된 주소에서 가져오지만, 페이지 자체는 그 이전의 값을 사용합니다.
조정치가 페이지 경계를 넘으면 해당 쌍은 더 이상 하나의 위치를 설명하지 않게 되며, 양수인 tlb_offset의 경우 전체 복사 작업이 의도한 페이지보다 한 페이지 아래로, 음수의 경우에는 한 페이지 위로 떨어집니다. DMA_FROM_DEVICE는 잘못된 페이지에 장치 데이터를 기록하여 의도된 페이지가 stale(구버전/유효하지 않은 상태) 상태로 남게 하며, DMA_TO_DEVICE는 매핑이 커버할 가능성이 없는 페이지로부터 장치를 구동합니다. dma_sync_single_range_for_*()를 통한 부분 동기화(tlb_offset을 0이 아닌 값으로 만드는 요인)에서 이러한 문제가 발생합니다.
분기 테스트도 동일한 방식으로 선택되므로, lowmem에 기록된 슬롯이 highmem으로 조정될 수 있으며, 그 결과 lowmem 경로가 phys_to_virt()에게 highmem 주소를 전달하게 됩니다.
orig_addr가 최종화되면 해당 값으로부터 두 가지를 모두 가져오고, 이를 사용하는 분기에서는 pfn을 유지합니다. PhysHighMem()은 dma-debug에서 이미 수행하는 방식대로 주소로부터 직접 질문을 처리합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.