DirtySlide: un único 'if' ausente en el kernel de macOS permite escalar a root

Fuentes: DirtySlide - root on macOS from one missing bounds check

DirtySlide es una vulnerabilidad de macOS que permite a un proceso sin privilegios obtener root a partir de una única comprobación de límites ausente en el kernel XNU. El fallo se localiza en la función vm_shared_region_slide_page_v5(), encargada de aplicar el rebaseo ASLR a las páginas del caché compartido de dyld en arquitecturas arm64. Mientras las versiones v1 a v4 y el paginador de chained-fixups verifican en cada paso que el puntero permanece dentro de la página, la variante v5 no realiza esa comprobación. Un atacante puede colocar el inicio de la cadena cerca del final de la página y hacer que el bucle de rebaseo avance byte a byte sobrepasanado los límites, lo que se traduce en lecturas y escrituras de 8 bytes fuera de límites en marcos de memoria del kernel adyacentes. El exploit aprovecha que el syscall 536 (shared_region_map_and_slide_2_np) no exige privilegios, ya que el kernel solo valida la estructura del slide-info, nunca los valores de page_starts[] que controla el usuario. Para invocarlo con una región limpia, el proceso PoC lanza un hijo con dos librerías shim (fake_libdyld.cpp y fake_libsystem.c) y la variable DYLD_SHARED_CACHE_DIR apuntando a un caché controlado. El repositorio DirtySlide, publicado en GitHub por el autor, acompaña la divulgación con código y un diagrama. La compañía fue notificada con antelación; además, otro investigador descubrió el mismo defecto de forma independiente. La exploitación es viable únicamente en máquinas virtuales, ya que Apple Silicon físico bloquea las tablas de páginas mediante SPTM/TXM.