Notarization

Процесс автоматической проверки программы серверами Apple перед распространением. Apple сканирует на вредоносный код и подписывает «штампом» - macOS доверяет таким программам.

📁 Безопасность 👁 82 просмотров 🔄 20 ч. назад

Notarization (нотаризация) - процедура автоматической проверки программы серверами Apple перед её распространением. Введена в macOS Catalina (2019) как дополнительный уровень защиты к Gatekeeper.

Как работает

Когда разработчик создаёт новую версию своей программы:

  1. Подписывает её своим Developer ID (платный аккаунт Apple Developer Program)
  2. Загружает на серверы Apple через xcrun notarytool или Xcode
  3. Apple автоматически сканирует код на:
  4. Если всё чисто - Apple возвращает notary ticket (нотариальный билет)
  5. Разработчик «прицепляет» этот билет к программе через xcrun stapler
  6. Готовый файл с билетом распространяется пользователям

Зачем нужна

  • Дополнительная защита: даже если разработчик-злоумышленник зарегистрировал Developer ID, Apple успеет обнаружить вредоносное ПО до распространения
  • Быстрый отзыв: если позже обнаружится проблема, Apple отзывает notary ticket - пользователи получат предупреждение
  • Доверие пользователей: нотаризованная программа запускается без предупреждений Gatekeeper
  • Антивирус как сервис: разработчик получает анализ Apple как часть workflow

Что проверяет автоматически

  • Известные сигнатуры вирусов из базы Apple
  • Использование Hardened Runtime (защита от инъекций кода)
  • Отсутствие Get-Task-Allow entitlement (запрет debug в production)
  • Корректность подписи всех бинарников в .app
  • Целостность Info.plist и других манифестов

НЕ проверяет:
- Реальное поведение программы во время выполнения
- Содержание данных (если программа что-то скачает после установки)
- Логику работы (это не code review)

Что видит пользователь

Программа нотаризована:
- Запускается без предупреждений (если скачана не из интернета)
- При запуске из интернета - быстрое уведомление «Apple подтвердила, что этот код не содержит известных вредоносных программ»

Программа подписана но не нотаризована:
- На macOS Catalina и новее - предупреждение Gatekeeper
- Можно разрешить через Системные настройки → Конфиденциальность и безопасность

Программа без подписи и без notary:
- Жёсткая блокировка
- Нужно либо разрешать через настройки, либо открывать через правый клик → Открыть

Как проверить, нотаризована ли программа

Терминал:

spctl -a -v /Applications/Имя.app

Вывод:
- accepted + source=Notarized Developer ID - нотаризована
- accepted + source=Developer ID - подписана, но не нотаризована
- rejected - подпись отозвана или отсутствует

Также можно посмотреть в Finder: правый клик по .app → «Свойства» → раздел «Где» показывает источник.

Если разработчик не нотаризует

Иногда это случается с:
- Очень старыми программами (до 2019)
- Open-source без активного автора
- Разработчиками без денег на Apple Developer Program ($99/год + время на нотаризацию)
- Программами от российских разработчиков, у которых заблокирован доступ к Apple Developer Program после 2022

В этом случае можно запустить через Open Anyway в Системных настройках, но проявите осторожность.

Связь с другими защитами

1. Скачали программу → стоит флаг com.apple.quarantine
2. Запустили → Gatekeeper проверяет:
   ├── Подпись → проверка
   ├── Notarization → проверка
   └── XProtect (антивирус Apple) → сканирование
3. Если всё ОК → запуск
4. Дальше работает SIP, App Sandbox, Hardened Runtime

Нотаризация - средний слой в этой цепочке. Без него и Gatekeeper'а защита была бы только на основе подписи - менее надёжно.

💻 Связанные программы из каталога

📰 Связанные статьи в блоге

📖 Связанные термины

← Все термины словаря