
Escalada de privilegios local a través de macOS 10.12.1 mediante CVE-2016-1825 o CVE-2016-7617.
physmem es una herramienta de inspección de memoria física y de escalada de privilegios local dirigida a macOS hasta 10.12.1 inclusive. Explota CVE-2016-1825 o CVE-2016-7617 según el objetivo de despliegue. Estas dos vulnerabilidades son casi idénticas y su explotación se puede realizar exactamente igual. Fueron parcheadas en OS X El Capitan 10.11.5 y macOS Sierra 10.12.2, respectivamente.
Como se trata de errores lógicos, la explotación es increíblemente fiable. Hasta ahora no he experimentado ningún pánico en las decenas de miles de veces que he ejecutado un programa (correctamente) que explota estas vulnerabilidades.
CVE-2016-1825 es un problema en IOHIDevice que permite establecer propiedades arbitrarias del registro de IOKit. En particular, la propiedad privilegiada IOUserClientClass puede ser controlada por un proceso sin privilegios. No he probado plataformas anteriores a Yosemite, pero la vulnerabilidad aparece en el código fuente ya desde Mac OS X Leopard.
CVE-2016-7617 es un problema casi idéntico en AppleBroadcomBluetoothHostController. Esta vulnerabilidad parece haber sido introducida en OS X El Capitan. Fue reportada por Ian Beer de Project Zero de Google (incidencia 974) y Radu Motspan.
Compile physmem especificando su objetivo de despliegue en la línea de comandos:
$ make MACOSX_DEPLOYMENT_TARGET=10.10.5
Puede leer una palabra de memoria física con el comando read:
$ ./physmem read 0x1000
a69a04f2f59625b3
Puede escribir en memoria física con el comando write:
$ ./physmem write 0x1000 0x1122334455667788
$ ./physmem read 0x1000
1122334455667788
Puede ejecutar una shell de root con el comando root:
$ ./physmem root
sh-3.2# whoami
root
El código de physmem se publica en el dominio público. Como cortesía, pido que si referencia o utiliza este código, me lo atribuya.