
macOS Gatekeeper、公証、およびXProtectのチェックをバイパスすることを実証する概念実証スクリプトです。CVE-2021-30853を悪用し、ユーザープロンプトなしで任意のシェルペイロードの実行を可能にします。
macOS に影響する CVE-2021-30657 をテストするためのシンプルな POC スクリプト。
この CVE により、ゲートキーパー、ノータリゼーション、XProtect のチェックをバイパスできます。
この脆弱性は、実行可能バンドルのメインスクリプトの最初の行(シバン)にインタープリタを定義しない(または、それ自体がシェルスクリプトであるインタープリタを指定する)場合に発生します。これにより、xpcproxy が posix_spawnp を呼び出して、インタープリタなしのスクリプトベースのアプリケーションを起動します。これは最初にエラーになります(インタープリタなし → ENOEXEC)が、その後 posix_spawnp が「回復」してスクリプトを(再)実行します...今回は /bin/sh を直接経由します。
その後、AppleSystemPolicy kext がプロセスの起動を傍受して、それが準拠しているか(署名済み、ノータリゼーション済みなど)を確認します。しかし、/bin/sh を変数が設定されていない状態でチェックするため、デフォルトのチェックなしでスクリプトが実行されます。
スレッドに基づく: https://twitter.com/objective_see/status/1473741597368098819
macOS Big Sur < 11.6