
Lokale Rechteausweitung unter macOS 10.12.1 über CVE-2016-1825 oder CVE-2016-7617.
physmem ist ein Tool zur Überprüfung des physikalischen Speichers und zur lokalen Privilegienausweitung, das auf macOS bis einschließlich 10.12.1 abzielt. Es nutzt entweder CVE-2016-1825 oder CVE-2016-7617 aus, abhängig vom Einsatzziel. Diese beiden Schwachstellen sind nahezu identisch und können auf genau die gleiche Weise ausgenutzt werden. Sie wurden in OS X El Capitan 10.11.5 bzw. macOS Sierra 10.12.2 behoben.
Da es sich um Logikfehler handelt, ist die Ausnutzung unglaublich zuverlässig. Ich habe noch keinen Kernel-Panic bei den zehntausenden von Durchläufen erlebt, bei denen ich ein Programm (korrekt) ausgeführt habe, das diese Schwachstellen ausnutzt.
CVE-2016-1825 ist ein Problem in IOHIDevice, das das Setzen beliebiger IOKit-Registry-Eigenschaften ermöglicht. Insbesondere kann die privilegierte Eigenschaft IOUserClientClass von einem unprivilegierten Prozess gesteuert werden. Ich habe Plattformen vor Yosemite nicht getestet, aber die Schwachstelle taucht im Quellcode bereits ab Mac OS X Leopard auf.
CVE-2016-7617 ist ein nahezu identisches Problem in AppleBroadcomBluetoothHostController. Diese Schwachstelle wurde anscheinend in OS X El Capitan eingeführt. Sie wurde von Ian Beer von Googles Project Zero (Issue 974) und Radu Motspan gemeldet.
Erstellen Sie physmem, indem Sie Ihr Einsatzziel in der Befehlszeile angeben:
$ make MACOSX_DEPLOYMENT_TARGET=10.10.5
Sie können ein Wort des physikalischen Speichers mit dem Befehl read lesen:
$ ./physmem read 0x1000
a69a04f2f59625b3
Sie können in den physikalischen Speicher mit dem Befehl write schreiben:
$ ./physmem write 0x1000 0x1122334455667788
$ ./physmem read 0x1000
1122334455667788
Sie können eine Root-Shell mit dem Befehl root ausführen:
$ ./physmem root
sh-3.2# whoami
root
Der physmem-Code ist als Public Domain freigegeben. Als Höflichkeit bitte ich darum, dass Sie mich nennen, falls Sie diesen Code referenzieren oder verwenden.