
概念验证脚本,演示如何通过利用 CVE-2021-30853 绕过 macOS Gatekeeper、公证(notarization)和 XProtect 检查,从而无需用户提示即可执行任意 shell 载荷。
一个用于测试影响 MacOS 的 CVE-2021-30657 的简单 POC 脚本。
该 CVE 允许绕过 gatekeeper、notarization 和 xprotect 检查。
当你在可执行 bundle 的主脚本第一行(shebang)中未定义解释器(或指定一个本身是 shell 脚本的解释器)时,就会出现此漏洞。这将导致 xpcproxy 调用 posix_spawnp 来启动无解释器的基于脚本的应用程序。这最初会报错(无解释器 → ENOEXEC),但随后 posix_spawnp 会“恢复”并(重新)执行该脚本……这次直接通过 /bin/sh 执行。
之后,AppleSystemPolicy kext 会拦截进程启动以确保其合规(已签名、已公证等)。但它检查的是未设置任何变量的 /bin/sh,因此会在没有任何默认检查的情况下执行脚本。
基于推文:https://twitter.com/objective_see/status/1473741597368098819
macOS Big Sur < 11.6