
PoC-скрипт, демонстрирующий обход проверок macOS Gatekeeper, нотаризации и XProtect путем эксплуатации CVE-2021-30853, позволяющий выполнение произвольных shell-нагрузок без запросов пользователя.
Простой POC-скрипт для проверки CVE-2021-30657, затрагивающей MacOS.
Эта CVE позволяет обойти gatekeeper, notarization и проверки xprotect.
Эта уязвимость возникает, когда вы не определяете интерпретатор (или указываете интерпретатор, который сам является shell-скриптом) в первой строке (shebang) основного скрипта вашего исполняемого бандла. Это приводит к тому, что xpcproxy вызывает posix_spawnp для запуска приложения на основе скрипта без интерпретатора. Сначала возникает ошибка (нет интерпретатора → ENOEXEC), но затем posix_spawnp «восстанавливается» и (повторно) выполняет скрипт... на этот раз напрямую через /bin/sh.
Позже kext AppleSystemPolicy перехватывает запуск процесса, чтобы убедиться в его соответствии требованиям (подписан, нотаризован и т. д.). Но он проверяет /bin/sh без каких-либо установленных переменных, поэтому скрипт выполняется без каких-либо проверок по умолчанию.
На основе твита: https://twitter.com/objective_see/status/1473741597368098819
macOS Big Sur < 11.6