Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
dtrace-memaccess_cve-2020-27949 — Exploit de prueba de concepto para CVE-2020-27949, que demuestra lectura/escritura arbitraria de memoria en procesos de macOS mediante el ioctl fasttrap de DTrace sin permisos elevados. | Kitploit
Herramientas/GitHubGitHub/seemoo-lab/dtrace-memaccess_cve-2020-27949
Escalada de PrivilegiosForensia de MemoriaAnálisis de VulnerabilidadesExplotaciónRed TeamingExplotación de Binarios
GitHubseemoo-lab/dtrace-memaccess_cve-2020-27949

dtrace-memaccess_cve-2020-27949

Exploit de prueba de concepto para CVE-2020-27949, que demuestra lectura/escritura arbitraria de memoria en procesos de macOS mediante el ioctl fasttrap de DTrace sin permisos elevados.

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
3391hace 5 añosRevisado por Kitploit

Lectura y escritura de memoria de otros procesos usando fasttrap

El dispositivo /dev/fasttrap para crear nodos de trampa en procesos de espacio de usuario para los proveedores pid y objc tiene los permisos 666. En contraste con /dev/dtrace, que también es 666, fasttrap carece de una verificación de permisos. Esto permite que cualquier proceso emita un ioctl FASTTRAPIOC_MAKEPROBE o FASTTRAPIOC_GETINSTR.
Un atacante puede crear sondas en cualquier otro proceso para cualquier ubicación de memoria usando FASTTRAPIOC_MAKEPROBE. Al activar estas sondas, los valores en la ubicación de memoria especificada se reemplazan con una instrucción de trampa (0xCC en x86) y el valor original se coloca en una memoria sombra. Recuperar el valor original es posible con el ioctl FASTTRAPIOC_GETINSTR. Esto permite al atacante leer memoria arbitraria de otro proceso colocando múltiples trampas.

Esta vulnerabilidad está registrada como CVE-2020-27949, corregida en macOS Big Sur 11.1, Security Update 2020-001 Catalina, Security Update 2020-007 Mojave .

Cronología de divulgación

  • 2020-07-07 -> Divulgación inicial a Apple Product Security.
  • 2020-07-08 <- Confirmación de la investigación.
  • 2020-10-28 -> Solicitud de actualización de estado.
  • 2020-12-07 <- Notificación sobre una próxima actualización que soluciona el problema.
  • 2020-12-14 <- Actualización publicada.

Requisitos

  • El atacante puede ejecutar código con permisos de usuario normales (no elevados)
  • Las sondas en el proceso víctima deben estar habilitadas (es decir, la víctima debe ejecutarse bajo DTrace)

Configuraciones de sistema probadas

  • SIP está activado (sin excepciones)
  • 10.15.5 en iMac Late 2012
  • 10.15.5 en MacBook Pro 2020

Impacto

  • El atacante puede leer memoria de otros procesos ejecutados bajo DTrace sin permisos elevados. Incluso es posible leer memoria de procesos que se ejecutan como root.
  • El atacante puede escribir el valor de la instrucción de trampa (0xCC en x86) en cualquier ubicación de memoria de otros procesos ejecutados bajo DTrace sin permisos elevados. Incluso es posible escribir memoria en procesos que se ejecutan como root. Como parte de otras instrucciones o direcciones de salto, el flujo de control de la víctima puede alterarse, permitiendo la escalada de privilegios.

Expectativas

Como usuario, espero que habilitar DTrace solo permita a procesos con permisos de root rastrear, instrumentar o modificar otros procesos. DTrace es una herramienta valiosa para tareas administrativas que ofrece herramientas como dtruss, iotop, etc.

Detalles del exploit

Nuestra víctima (target) es un ejecutable que se ejecuta como root. El atacante (memaccess) es un ejecutable que se ejecuta con permisos de usuario normales. El script de rastreo libc_monitor.d registra el número de llamadas a funciones en el objeto compartido libsystem_c.dylib (este es solo un ejemplo sencillo de un script administrativo que el propietario de una máquina podría ejecutar).

  1. La víctima se ejecuta
  2. El atacante crea una sonda con el PID de la víctima y una ubicación de memoria que le interesa.
  3. El atacante espera a que DTrace rastree el proceso de la víctima. Esto podría ocurrir como parte de una operación administrativa en la que el propietario de la máquina quiera rastrear funciones en el proceso de la víctima (por ejemplo, libc_monitor.d).
  4. Cuando DTrace comienza a rastrear a la víctima, las sondas creadas previamente se habilitarán, reemplazando así los valores de memoria originales.
  5. El atacante usa FASTTRAPIOC_GETINSTR para leer los valores de memoria de las sondas creadas.

El paso 4 reemplaza memoria en el proceso de la víctima con el valor de la instrucción de trampa. Dependiendo de la aplicación, un atacante puede usar esto para escribir un valor previamente conocido en una ubicación de memoria crítica. Por ejemplo, el atacante podría controlar la semilla de un RNG o reemplazar claves criptográficas en un proceso.

Nota: El atacante nunca requiere permisos elevados o de root. Nota 2: No se requieren scripts de DTrace propios. Por ejemplo, dapptrace también usa el proveedor pid para rastrear cualquier función.

Corrección propuesta

Implementar verificaciones de privilegios en /dev/fasttrap como en /dev/dtrace o eliminar el permiso de escritura para todos.

Nota: No comprobamos la corrección publicada.

Instrucciones

  1. Asegúrate de que DTrace esté disponible y funcione correctamente
  2. Ejecuta target y sigue las instrucciones en pantalla
Descargar herramienta