В Gatekeeper для macOS нашли сценарий обхода. Уже запущенное легитимное приложение можно заменить вредоносным пакетом, и проверка Apple не сработает повторно.
Об этом заявили исследователи безопасности Talal Haj Barky и Tommy Mysk. Apple получила отчёт, но закрыла проблему: компания считает такие локально пересобранные app bundle зоной вне ответственности Gatekeeper.
Gatekeeper проверяет загрузку, но не повторную замену
Gatekeeper проверяет приложения, которые пользователь скачал не из App Store. macOS смотрит, подписал ли программу известный разработчик, и прошла ли она notarization у Apple.
Если проверка не сходится, система не даёт запустить приложение. В обычной жизни это один из главных фильтров macOS против мусорного софта. Особенно для тех, кто ставит утилиты с сайтов разработчиков, GitHub или корпоративных порталов.
Сценарий Barky и Mysk бьёт не по первой проверке. Исследователи утверждают, что после первого запуска доверенного приложения злоумышленник может заменить его вредоносной версией. Gatekeeper при этом не запускает повторную авторизацию.
Здесь нет магии уровня «кликнул по картинке — получил заражение». Атакующему сначала нужен запуск кода с правами обычного пользователя. Это может быть вредоносное приложение, скомпрометированный пакет в менеджере пакетов или prompt injection против AI-агента.
Apple считает локальные app bundle другой зоной риска
Логика Apple простая: если пакет приложения перезаписали локально, Gatekeeper уже не должен вести себя как охранник на входе. Компания трактует такой bundle как локально собранный, а не как изменённый подписанный исполняемый файл.
Для пользователя разница тонкая, но неприятная. Иконка и название знакомого приложения могут остаться прежними. Доверие уже появилось после первого запуска, а вредоносная замена пользуется этим доверием.
При этом macOS не отдаёт всё без вопросов. Доступ к Keychain и каталогам, защищённым TCC, всё равно требует системных запросов. TCC отвечает за разрешения к камере, микрофону, файлам и другим чувствительным зонам.
Проблема в последнем метре. Если вредоносная версия убедит пользователя нажать «Разрешить», защита упрётся не в подпись кода, а в социальную инженерию. Apple как раз и считает эту часть атаки вне зоны Gatekeeper.
Подробности кейса опубликовал The Register. По словам Mysk, Apple объяснила отказ так: «архивация и восстановление app bundle перезаписывают весь пакет, делая его локально собранным; такие app bundle не покрываются защитой macOS».