Урок 3 из 4 · 8 мин
Как macOS проверяет открываемые вами приложения
Подпись кода, Gatekeeper, нотаризация и XProtect: четыре проверки, которые выполняются до и после открытия приложения.
Каждый раз, когда вы впервые открываете приложение, macOS выполняет короткую серию проверок прежде, чем разрешить ему запуститься. Чаще всего вы их вообще не видите; вы замечаете их, только когда одна из них что-то останавливает. Этот урок прослеживает, что происходит на самом деле, опираясь на собственные описания Apple для каждого шага.
Подпись кода: доказательство того, кто его создал
Документация Apple по безопасности объясняет, что в macOS «подпись кода выполняется разработчиком с использованием его сертификата Developer ID (выдаваемого Apple). Проверка этой подписи доказывает пользователю, что программное обеспечение разработчика не было изменено с момента, когда разработчик его собрал и подписал» (code signing is performed by the developer using their Developer ID certificate (issued by Apple). Verification of this signature proves to the user that a developer’s software hasn’t been tampered with since the developer built and signed it). Подпись не говорит о том, что приложение безопасно; она говорит, что это именно тот файл, который создал разработчик, с тех пор не изменённый.
Нотаризация: собственная проверка Apple
Нотаризация — отдельный, дополнительный шаг. Apple объясняет, что она «может быть выполнена кем угодно в цепочке распространения программного обеспечения и доказывает, что Apple получила копию кода для проверки [на опасное содержимое], и [известного опасного программного обеспечения] обнаружено не было. Результатом нотаризации является билет, который хранится на серверах Apple и может быть по желанию прикреплён к приложению» (can be performed by anyone in the software distribution chain and proves that Apple has been provided a copy of the code to check, and no known harmful software was found. The output of Notarization is a ticket, which is stored on Apple servers and can be optionally stapled to the app). Начиная с macOS Catalina, эта проверка по умолчанию применяется почти ко всему, что вы открываете, независимо от того, каким путём это попало на ваш Mac.
Gatekeeper: проверка, которая запускается при открытии приложения
Gatekeeper — это то, что реально применяет результаты этих проверок в момент, когда вы дважды щёлкаете по чему-либо. Apple описывает его как созданный, «чтобы помочь гарантировать, что на Mac пользователя запускается только надёжное программное обеспечение. Когда пользователь загружает и открывает приложение, плагин или установочный пакет не из App Store, Gatekeeper проверяет, что программа от идентифицированного разработчика, нотаризована Apple как не содержащая [известного опасного содержимого] и не была изменена. Gatekeeper также запрашивает подтверждение пользователя перед первым открытием загруженного ПО, чтобы убедиться, что пользователя не обманули, заставив запустить исполняемый код, который он считал простым файлом данных» (to help ensure that only trusted software runs on a user’s Mac. When a user downloads and opens an app, a plug-in, or an installer package from outside the App Store, Gatekeeper verifies that the software is from an identified developer, is notarized by Apple to be free of known harmful content, and hasn’t been altered. Gatekeeper also requests user approval before opening downloaded software for the first time to make sure the user hasn’t been tricked into running executable code they believed to simply be a data file). Это то самое предупреждение, которое вы видите при первом открытии чего-то, загруженного из интернета.
- Вы загружаете приложение не из App Store и дважды щёлкаете по нему.
- Gatekeeper проверяет подпись разработчика и ищет для него билет нотаризации Apple.
- Если проверки пройдены, macOS всё равно просит подтвердить, что вы хотите открыть его в первый раз.
- Если Apple отозвала приложение или что-то не сходится, macOS отказывается его открывать и объясняет почему.
XProtect: наблюдение после запуска приложения
Последний уровень работает постфактум. Руководство Apple описывает XProtect как встроенную в macOS «технологию антивируса для обнаружения и удаления [известного опасного программного обеспечения] на основе сигнатур» (built-in antivirus technology for the signature-based detection and removal of known harmful software), которая «проверяет наличие известного [опасного] содержимого в следующих случаях: при первом запуске приложения, при изменении приложения, [или] при обновлении сигнатур XProtect» (checks for known harmful content whenever: an app is first launched, an app has been changed, or XProtect signatures are updated), при этом Apple обновляет эти сигнатуры автоматически, независимо от полных обновлений системы. Если обнаружена известная угроза, Apple поясняет, что система «блокирует её и перемещает в Корзину. Затем она уведомляет пользователя в Finder» (blocks it and moves it to the Trash. Then it alerts the user in the Finder).
Главное
- Подпись кода доказывает, что файл приложения не изменился с момента, когда разработчик его собрал и подписал; сама по себе она не означает, что приложение безопасно.
- Нотаризация — это проверка Apple копии кода приложения, прежде чем оно сможет по умолчанию запуститься в текущей macOS.
- Gatekeeper применяет обе проверки в момент открытия приложения и запрашивает ваше подтверждение в первый раз.
- XProtect продолжает проверку после запуска приложения, используя сигнатуры, которые Apple обновляет автоматически и независимо от полных обновлений системы.
- macOS позволяет переопределить эти проверки для конкретного приложения в Настройках, но это устраняет реальную защиту, поэтому делать это стоит редко и осознанно.
Проверьте себя
1. Что на самом деле доказывает действительная подпись кода?
- Что приложение свободно от любых возможных проблем
- Что файл приложения не изменился с момента, когда разработчик его подписал — Верно.
- Что приложение было проверено человеком в Apple
- Что приложение не может обращаться к интернету
Подпись кода подтверждает целостность и личность разработчика, а не то, что приложение в остальном безопасно или ведёт себя корректно.
2. Что означает нотаризация, согласно Apple?
- Apple написала приложение
- Apple проверила копию кода приложения и не нашла известных угроз — Верно.
- Приложение было куплено в App Store
- Приложение переведено на несколько языков
Нотаризация доказывает, что Apple получила код для проверки и не нашла в нём ничего заведомо опасного.
3. Когда Gatekeeper запрашивает ваше подтверждение на открытие приложения?
- Каждый раз, когда вы открываете любое приложение
- Только при первом открытии загруженного ПО — Верно.
- Только для приложений из App Store
- Никогда, он работает незаметно
Gatekeeper запрашивает подтверждение при первом открытии загруженного ПО, чтобы вас нельзя было обманом заставить запустить что-то неожиданное.
4. Как XProtect обновляет свои сигнатуры обнаружения?
- Только при установке крупного обновления macOS
- Автоматически, независимо от полных обновлений системы — Верно.
- Только когда вы вручную запускаете сканирование
- Никогда не обновляется после установки
Apple обновляет сигнатуры XProtect автоматически и отдельно от полных обновлений системы, часто ежедневно.
Примените на практике в FireAI
Примените этот урок на своём Mac.
- Ответьте на первый запрос о подключении и разберитесь, что означает каждый срок действия — Точно понимайте, что именно вы разрешаете, когда FireAI спрашивает в первый раз.
- Находите приложения с известными уязвимостями — Закройте известные бреши прежде, чем ими воспользуются: обновите то единственное приложение, которому это нужно.
- Узнайте, какое приложение включает вашу камеру или микрофон и куда уходит его трафик — Знайте, какое именно приложение может вас видеть или слышать, а не просто что кто-то может.
Источники
- Apple Platform Security: App code signing process in macOS
- Apple Platform Security: Gatekeeper and runtime protection in macOS
- Apple Platform Security: Protecting against malicious software in macOS
- Apple Support: Safely open apps on your Mac
Примените это на своём Mac
Все функции бесплатно на 17 дней, без банковской карты.