CVE-2026-98923 in Linux
Resumen
por VulDB • 2026-10-23
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
arm64: io: Rechazar protecciones no user en ioremap_prot()
Mapear una página del tope de la pila a través de /dev/mem con PROT_NONE y luego leer cmdline/proc/<pid>/del proceso desencadena un WARN espurio (falso positivo) en ioremap_prot() a través de generic_access_phys():
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() pasa la protección derivada del PTE user a ioremap_prot(). En arm64, un mapeo PROT_NONE está representado por un PTE present-invalid (presente pero inválido), por lo que pte_present() sigue devolviendo true y la protección llega a ioremap_prot().
Un mapeo con PROT_NONE no tiene PTE_USER, lo que provoca que se active el WARN_ON_ONCE() existente en ioremap_prot(), aunque se trate de un mapeo user válido. Los mapeos execute-only tienen el mismo problema y tampoco deben ser legibles a través de esta ruta.
Por tanto, ioremap_prot() debería rechazar los valores de protección sin PTE_USER sin generar advertencias. Esto hace que el acceso falle limpiamente para las protecciones PROT_NONE y los mapeos execute-only, manteniendo al mismo tiempo la contrato existente de protección user.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.