
Gatekeeper, notarization, XProtect 검사를 우회하여 사용자 프롬프트 없이 임의의 셸 페이로드를 실행할 수 있게 하는 CVE-2021-30853 취약점을 악용하는 개념 증명 스크립트입니다.
macOS에 영향을 미치는 CVE-2021-30657을 테스트하기 위한 간단한 POC 스크립트입니다.
이 CVE는 게이트키퍼(gatekeeper), 노타리제이션(notarization) 및 XProtect 검사를 우회할 수 있게 합니다.
이 취약점은 실행 가능한 번들의 메인 스크립트 첫 줄(shebang)에 인터프리터를 정의하지 않거나(또는 그 자체가 셸 스크립트인 인터프리터를 지정하는 경우) 발생합니다. 이로 인해 xpcproxy가 posix_spawnp를 호출하여 인터프리터가 없는 스크립트 기반 애플리케이션을 실행하게 됩니다. 처음에는 오류가 발생하지만(인터프리터 없음 → ENOEXEC), 이후 posix_spawnp가 "복구"하여 스크립트를 (다시)실행합니다... 이번에는 /bin/sh를 통해 직접 실행됩니다.
이후 AppleSystemPolicy kext가 프로세스 실행을 가로채 서명, 노타리제이션 등의 적합성을 확인합니다. 하지만 변수가 설정되지 않은 상태의 /bin/sh를 확인하므로 기본 검사 없이 스크립트가 실행됩니다.
스레드 참조: https://twitter.com/objective_see/status/1473741597368098819
macOS Big Sur < 11.6