CVE-2026-98923 in Linux
요약
\~에 의해 VulDB • 2026. 10. 23.
리눅스 커널에서 다음 취약점이 해결되었습니다:
arm64: io - ioremap_prot()에서 비사용자 보호를 거부함
/proc/mem을 통해 stack-top 페이지를 PROT_NONE으로 매핑한 후 해당 프로세스의 /proc/<pid>/cmdline을 읽으면 generic_access_phys() 경로를 통해 ioremap_prot()에서 잘못된 WARN이 발생합니다:
WARNING: ./arch/arm64/include/asm/io.h:275 at generic_access_phys Call trace: generic_access_phys+0x1c8/0x228 (P) __access_remote_vm+0x2b4/0x398 access_remote_vm+0x14/0x30 get_mm_cmdline+0xf8/0x2a0 proc_pid_cmdline_read+0x68/0x120
generic_access_phys()는 사용자 PTE에서 파생된 보호 속성을 ioremap_prot()에 전달합니다. arm64 아키텍처에서는 PROT_NONE 매핑이 present-invalid PTE로 표현되므로 pte_present()는 여전히 true를 반환하며, 이로 인해 보호 속성이 ioremap_prot()까지 도달하게 됩니다.
PROT_NONE 매핑에는 PTE_USER 플래그가 없으므로, 이는 유효한 사용자 매핑임에도 불구하고 ioremap_prot()에 있는 기존 WARN_ON_ONCE() 조건이 발동됩니다. Execute-only(실행 전용) 매핑도 동일한 문제를 가지며 이 경로를 통해 읽을 수 있어서는 안 됩니다.
따라서 ioremap_prot()는 PTE_USER가 없는 보호 값을 경고 없이 거부해야 합니다. 이렇게 하면 PROT_NONE 및 execute-only 매핑에 대해 접근이 깔끔하게 실패하도록 하면서 기존 사용자 보호 계약은 유지됩니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.