
Escalada local de privilégios através do macOS 10.12.1 via CVE-2016-1825 ou CVE-2016-7617.
physmem é uma ferramenta de inspeção de memória física e escalada de privilégio local direcionada ao macOS até a versão 10.12.1. Ela explora CVE-2016-1825 ou CVE-2016-7617 dependendo do alvo de implantação. Essas duas vulnerabilidades são quase idênticas, e a exploração pode ser feita exatamente da mesma forma. Elas foram corrigidas no OS X El Capitan 10.11.5 e no macOS Sierra 10.12.2, respectivamente.
Por serem bugs lógicos, a exploração é incrivelmente confiável. Ainda não experimentei um pânico nas dezenas de milhares de vezes que executei um programa (corretamente) explorando essas vulnerabilidades.
CVE-2016-1825 é um problema no IOHIDevice que permite definir propriedades arbitrárias do registro IOKit. Em particular, a propriedade privilegiada IOUserClientClass pode ser controlada por um processo não privilegiado. Não testei plataformas anteriores ao Yosemite, mas a vulnerabilidade aparece no código-fonte desde o Mac OS X Leopard.
CVE-2016-7617 é um problema quase idêntico no AppleBroadcomBluetoothHostController. Essa vulnerabilidade parece ter sido introduzida no OS X El Capitan. Foi relatada por Ian Beer do Google Project Zero (issue 974) e Radu Motspan.
Compile o physmem especificando seu alvo de implantação na linha de comando:
$ make MACOSX_DEPLOYMENT_TARGET=10.10.5
Você pode ler uma palavra da memória física usando o comando read:
$ ./physmem read 0x1000
a69a04f2f59625b3
Você pode escrever na memória física usando o comando write:
$ ./physmem write 0x1000 0x1122334455667788
$ ./physmem read 0x1000
1122334455667788
Você pode executar um shell root usando o comando root:
$ ./physmem root
sh-3.2# whoami
root
O código do physmem é lançado em domínio público. Como cortesia, peço que, se você referenciar ou usar qualquer parte deste código, me atribua os créditos.