Вредоносное ПО и подпись кода в macOS¶
Вредоносное ПО (malware, вирус, вредоносная программа) — это программное обеспечение, созданное с целью нанесения ущерба компьютеру, серверу, клиенту, компьютерной сети или пользователю, получения несанкционированного доступа к данным или скрытия наличия вредоносного кода в системе. В контексте операционной системы macOS компания Apple встроила несколько уровней защиты, призванных не допустить запуск непроверенного или потенциально опасного кода. Одним из ключевых механизмов является технология Gatekeeper, которая проверяет каждое приложение перед первым запуском на наличие валидной цифровой подписи разработчика, зарегистрированного в Apple Developer Program, и на соответствие требованиям безопасности.
¶Механизм Gatekeeper и подпись кода
В macOS все приложения, распространяемые вне Mac App Store, должны быть подписаны цифровым сертификатом Developer ID. При попытке открыть такое приложение впервые система запускает фоновый процесс проверки, который обращается к серверам Apple для подтверждения того, что сертификат действителен, не отозван и что приложение не входит в список известных вредоносных программ. Если подтверждение приходит, приложение запускается. Если подтверждения нет — например, из-за отсутствия интернет-соединения, сбоя серверов Apple или ошибки в самой подписи — пользователь видит системное сообщение о том, что «Apple не удалось подтвердить, что файл не содержит вредоносного ПО».
Это сообщение не означает, что в файле действительно обнаружен вирус. Оно лишь сигнализирует о невозможности провести проверку. Причины подобной ошибки многообразны:
- приложение подписано самоподписанным сертификатом, не зарегистрированным в Apple;
- разработчик не прошёл процедуру notarization (нотаризации) — специального сканирования пакета на наличие вредоносного кода;
- сертификат разработчика был отозван Apple после обнаружения нарушений;
- временная недоступность серверов проверки Apple;
- повреждение атрибутов файла при загрузке через браузеры или почтовые клиенты, не снимающие флаг «скачан из интернета» (quarantine).
¶Notarization: нотаризация приложений
С 2019 года, начиная с macOS Catalina, Apple обязала разработчиков, распространяющих приложения вне Mac App Store, проходить процедуру нотаризации. Для этого разработчик загружает подписанный пакет (.dmg, .zip или .pkg) в специальный сервис Apple, который автоматически сканирует его на наличие известных вредоносных программ, проверяет корректность подписи и выдаёт электронную «нотариальную отметку». Эта отметка встраивается в атрибуты файла и проверяется Gatekeeper при первом запуске.
Если нотаризация не пройдена, Gatekeeper блокирует запуск приложения с предупреждением о невозможности подтвердить безопасность файла. Пользователь вручную может обойти блокировку через контекстное меню (правый клик → «Открыть») или через настройки «Конфиденциальность и безопасность», где появляется кнопка «Всё равно открыть». Однако в последних версиях macOS (Ventura, Sonoma) Apple сделала этот обход более затруднённым, требуя явного подтверждения в настройках системы.
¶Типичные сценарии возникновения ошибки
Наиболее частая причина появления сообщения «Apple не удалось подтвердить, что файл не содержит вредоносного ПО» — загрузка приложений от независимых разработчиков, которые не имеют сертификата Apple Developer ID или не прошли нотаризацию. Это характерно для:
- бесплатных утилит и open-source проектов, распространяемых через GitHub или личные сайты;
- пиратского или взломанного программного обеспечения;
- устаревших версий программ, чей сертификат истёк;
- приложений, скомпилированных локально на компьютере пользователя.
Кроме того, ошибка может возникать при установке драйверов системных расширений (kext), для которых Apple установила отдельные ужесточённые требования, включая загрузку в особом режиме восстановления.
¶Техническая сторона проверки
Подпись кода в macOS основана на стандарте Authenticode, адаптированном Apple. Каждый исполняемый файл содержит встроенный криптографический блок с сертификатом разработчика, подписью и идентификатором приложения. Проверка включает:
- Целостность подписи — не изменялся ли бинарный файл после подписания.
- Действительность сертификата — не отозван ли он, не истёк ли срок.
- Цепочку доверия — корректно ли подписан сертификат Apple.
- Нотариальный тикет — присутствует ли электронная отметка Apple о сканировании.
Если любой из этапов не пройден, Gatekeeper выдаёт предупреждение. При этом в системном журнале (Console.app, подсистема syspolicyd) фиксируются подробные коды ошибок, позволяющие администратору определить точную причину отказа.
¶Критика механизма
Механизм Gatekeeper и обязательная нотаризация неоднократно критиковались со стороны сообщества open-source разработчиков. Процедура получения сертификата Developer ID требует годовой подписки стоимостью 99 долларов США, что создаёт барьер для некоммерческих проектов. Кроме того, централизованная модель проверки означает, что доверие полностью контролируется Apple: компания может отозвать сертификат у любого разработчика, заблокировав распространение его программ. Противники этой модели указывают на параллели с моделью «walled garden» и ограничением свободы пользователей в установке любого программного обеспечения по своему усмотрению.
Сторонники, включая саму Apple, аргументируют систему тем, что она значительно снизила распространение вредоносного ПО на macOS, которое в последние годы выросло вместе с популярностью платформы. По данным исследовательских компаний, доля атак на macOS увеличилась в несколько раз с 2019 года, и централизованная проверка кода рассматривается как одно из средств противодействия этому тренду.
¶См. также
- Цифровая подпись программного обеспечения
- Криптографическая стойкость
- Антивирусное программное обеспечение
¶Источники
- Apple Platform Security Guide — разделы о Gatekeeper, notarization и подписи кода.
- Документация Apple Developer — руководства по нотаризации и сертификатам Developer ID.
- macOS Release Notes (Catalina, Big Sur, Ventura, Sonoma) — описание изменений в политике безопасности.
