
macOS 10.12.1 を介した CVE-2016-1825 または CVE-2016-7617 によるローカル権限昇格
physmem は物理メモリ検査ツールであり、macOS 10.12.1 までのローカル特権昇格を標的としています。対象に応じて CVE-2016-1825 または CVE-2016-7617 を悪用します。これら2つの脆弱性はほぼ同一であり、全く同じ方法で悪用できます。それぞれ OS X El Capitan 10.11.5 および macOS Sierra 10.12.2 で修正されました。
これらはロジックバグであるため、非常に信頼性の高い悪用が可能です。これらの脆弱性を(正しく)悪用するプログラムを数万回実行しても、まだパニックを経験したことはありません。
CVE-2016-1825 は IOHIDevice の問題であり、任意の IOKit レジストリプロパティを設定できます。特に、特権プロパティ IOUserClientClass が非特権プロセスによって制御可能です。Yosemite より前のプラットフォームではテストしていませんが、この脆弱性は Mac OS X Leopard までのソースコードに存在します。
CVE-2016-7617 は AppleBroadcomBluetoothHostController におけるほぼ同一の問題です。この脆弱性は OS X El Capitan で導入されたと思われます。Google Project Zero の Ian Beer(問題 974)と Radu Motspan によって報告されました。
コマンドラインでデプロイターゲットを指定して physmem をビルドします。
$ make MACOSX_DEPLOYMENT_TARGET=10.10.5
read コマンドを使用して物理メモリのワードを読み取ることができます。
$ ./physmem read 0x1000
a69a04f2f59625b3
write コマンドを使用して物理メモリに書き込むことができます。
$ ./physmem write 0x1000 0x1122334455667788
$ ./physmem read 0x1000
1122334455667788
root コマンドを使用してルートシェルを実行できます。
$ ./physmem root
sh-3.2# whoami
root
physmem コードはパブリックドメインとしてリリースされています。配慮として、このコードを参照または使用する際は、私への帰属表示をお願いします。