macOS PID Reuse
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Cuando un servicio XPC de macOS está verificando el proceso llamado basado en el PID y no en el token de auditoría, es vulnerable a un ataque de reutilización de PID. Este ataque se basa en una condición de carrera donde un exploit va a enviar mensajes al servicio XPC abusando de la funcionalidad y justo después de eso, ejecutando posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)
con el binario permitido.
Esta función hará que el binario permitido tenga el PID, pero el mensaje XPC malicioso se habría enviado justo antes. Así que, si el servicio XPC usa el PID para autenticar al remitente y lo verifica DESPUÉS de la ejecución de posix_spawn
, pensará que proviene de un proceso autorizado.
Si encuentras la función shouldAcceptNewConnection
o una función llamada por ella llamando a processIdentifier
y no llamando a auditToken
. Es muy probable que esté verificando el PID del proceso y no el token de auditoría.
Como por ejemplo en esta imagen (tomada de la referencia):
Revisa este ejemplo de exploit (nuevamente, tomado de la referencia) para ver las 2 partes del exploit:
Una que genera varios forks
Cada fork enviará la carga útil al servicio XPC mientras ejecuta posix_spawn
justo después de enviar el mensaje.
Para que el exploit funcione, es importante export`` ``
OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
o poner dentro del exploit:
Primera opción usando NSTasks
y argumento para lanzar los hijos para explotar el RC
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)