
CVE-2016-1757 のエクスプロイトコード
Mach Race OS X Local Privilege Escalation Exploit
(c) fG! 2015, 2016, [email protected] - https://reverse.put.as
SUID、SIP、バイナリエンタイトルメントに対応した汎用OS Xエクスプロイト(CVE-2016-1757)。
SUIDバイナリに対する使用法:
./mach_race_server /bin/ps _compat_mode
for i in seq 0 1000000; do ./mach_race_client /bin/ps; done
エンタイトルメント付きバイナリでSIPをバイパスする場合:
./mach_race_server /System/Library/PrivateFrameworks/PackageKit.framework/Versions/A/Resources/system_shove _geteuid
for i in seq 0 1000000; do ./mach_race_client /System/Library/PrivateFrameworks/PackageKit.framework/Versions/A/Resources/system_shove; done
注意: サービス名が変更されないため、このエクスプロイトをユーザーからrootへ連鎖的に使用し、その後にSIPをバイパスするために使用することはできません。bootstrap_register2 が2回目に失敗するためです(最初の実行でサービスは既にlaunchdに登録されています)。解決策としては、例えば異なるサービス名を使用するパラメーターを追加することです。
注意2: これを2つの別々のアプリに分割する必要はありません。単一のバイナリで動作し、サーバーとクライアントをforkするだけです。
参照:
http://googleprojectzero.blogspot.pt/2016/03/race-you-to-kernel.html
Mavericks 10.10.5、Yosemite 10.10.5、El Capitan 10.11.2および10.11.3でテスト済み。
El Capitan 10.11.4で修正されました。
すべてのOS Xバージョンで動作するはずです(古いバージョンにbootstrap_register2が存在するかどうかによります)。
古いバージョンでは、bootstrap_create_serverを使用した代替実装も可能です。