
CVE-2016-1757에 대한 익스플로잇 코드
Mach Race OS X Local Privilege Escalation Exploit
(c) fG! 2015, 2016, [email protected] - https://reverse.put.as
SUID, SIP 및 바이너리 entitlements 범용 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 우회를 위해 entitlements 바이너리 사용법:
./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
참고: 서비스 이름이 수정되지 않았기 때문에 이 익스플로잇을 사용자에서 루트로 연결한 다음 SIP를 우회하는 데 사용할 수 없습니다. 두 번째 실행 시 bootstrap_register2가 실패하기 때문입니다 (서비스가 첫 번째 실행에서 이미 launchd에 등록되어 있습니다). 해결 방법은 예를 들어 다른 서비스 이름을 사용하도록 매개변수를 추가하는 것입니다.
참고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를 사용한 대체 구현이 가능합니다.