macOS Gatekeeper / Quarantine / XProtect
Gatekeeper
Gatekeeper - це функція безпеки, розроблена для операційних систем Mac, яка призначена для того, щоб користувачі запускали лише довірене програмне забезпечення на своїх системах. Вона працює, перевіряючи програмне забезпечення, яке користувач завантажує та намагається відкрити з джерел поза App Store, таких як додаток, плагін або пакет встановлення.
Основний механізм Gatekeeper полягає в його перевірці. Він перевіряє, чи програмне забезпечення, яке завантажується, підписане визнаним розробником, що гарантує автентичність програмного забезпечення. Крім того, він переконується, що програмне забезпечення пройшло процедуру нотаріальної перевірки від Apple, підтверджуючи, що воно не містить відомого шкідливого вмісту і не було змінено після нотаріальної перевірки.
Крім того, Gatekeeper посилює контроль користувача та безпеку, просить користувачів схвалити відкриття завантаженого програмного забезпечення вперше. Цей захист допомагає запобігти користувачам ненавмисному запуску потенційно шкідливого виконавчого коду, який вони могли помилково вважати безпечним файлом даних.
Підписи програм
Підписи програм, також відомі як кодові підписи, є важливою складовою інфраструктури безпеки Apple. Вони використовуються для перевірки ідентичності автора програмного забезпечення (розробника) та для забезпечення того, що код не був змінений з моменту останнього підпису.
Ось як це працює:
Підписання програми: Коли розробник готовий поширити свою програму, він підписує програму за допомогою приватного ключа. Цей приватний ключ пов'язаний з сертифікатом, який Apple видає розробнику при вступі до програми розробника Apple. Процес підпису включає створення криптографічного хешу всіх частин програми та шифрування цього хешу приватним ключем розробника.
Поширення програми: Підписана програма потім поширюється користувачам разом з сертифікатом розробника, який містить відповідний публічний ключ.
Перевірка програми: Коли користувач завантажує та намагається запустити програму, їх операційна система Mac використовує публічний ключ з сертифіката розробника для розшифрування хешу. Потім вона повторно обчислює хеш на основі поточного стану програми та порівнює його з розшифрованим хешем. Якщо вони співпадають, це означає, що програма не була змінена з моменту підпису розробника, і система дозволяє програмі запуститися.
Підписи програм є важливою частиною технології Gatekeeper від Apple. Коли користувач намагається відкрити програму, завантажену з Інтернету, Gatekeeper перевіряє підпис програми. Якщо вона підписана сертифікатом, виданим Apple відомому розробнику, і код не був змінений, Gatekeeper дозволяє програмі запуститися. В іншому випадку він блокує програму та повідомляє користувача.
Починаючи з macOS Catalina, Gatekeeper також перевіряє, чи програма пройшла процедуру нотаріальної перевірки від Apple, додавши додатковий рівень безпеки. Процес нотаріальної перевірки перевіряє програму на відомі проблеми безпеки та шкідливий код, і якщо ці перевірки пройдуть успішно, Apple додає квиток до програми, який може перевірити Gatekeeper.
Перевірка підписів
При перевірці деякого зразка шкідливого програмного забезпечення ви завжди повинні перевіряти підпис бінарного файлу, оскільки розробник, який його підписав, може вже бути пов'язаний з шкідливим програмним забезпеченням.
Нотаризація
Процес нотаризації Apple служить додатковим заходом для захисту користувачів від потенційно шкідливого програмного забезпечення. Це включає розробника, який подає свою заявку на розгляд до Служби нотаріату Apple, яку не слід плутати з оглядом додатків. Ця служба є автоматизованою системою, яка аналізує подане програмне забезпечення на наявність шкідливого вмісту та будь-яких потенційних проблем з підписуванням коду.
Якщо програмне забезпечення пройшло цю перевірку без підняття будь-яких побоїв, Служба нотаріату генерує нотаріальний квиток. Після цього розробнику потрібно долучити цей квиток до свого програмного забезпечення, процес відомий як 'шиття'. Крім того, нотаріальний квиток також публікується в Інтернеті, де Gatekeeper, технологія безпеки Apple, може отримати до нього доступ.
При першій установці або запуску програмного забезпечення користувача, наявність нотаріального квитка - чи то пришитого до виконавчого файлу, чи знайденого в Інтернеті - повідомляє Gatekeeper, що програмне забезпечення було нотаріально засвідчено Apple. У результаті Gatekeeper відображає описове повідомлення в діалозі першого запуску, вказуючи, що програмне забезпечення пройшло перевірку на наявність шкідливого вмісту від Apple. Цей процес підвищує довіру користувачів до безпеки програмного забезпечення, яке вони встановлюють або запускають на своїх системах.
Перелік GateKeeper
GateKeeper - це кілька компонентів безпеки, які запобігають запуску ненадійних додатків та також один з компонентів.
Можливо переглянути стан GateKeeper за допомогою:
Зверніть увагу, що перевірки підпису GateKeeper виконуються лише для файлів з атрибутом Quarantine, а не для кожного файлу.
GateKeeper перевірить, чи згідно з налаштуваннями та підписом бінарний файл може бути виконаний:
База даних, яка зберігає цю конфігурацію, розташована в /var/db/SystemPolicy
. Ви можете перевірити цю базу даних як root за допомогою:
Зверніть увагу, як перше правило закінчилося на "App Store", а друге на "Developer ID", і що на попередньому зображенні було увімкнено виконання додатків з App Store та ідентифікованих розробників. Якщо ви зміните цей параметр на App Store, то правила "Notarized Developer ID" зникнуть.
Також існує тисячі правил типу GKE:
Це хеші, які походять з /var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth
, /var/db/gke.bundle/Contents/Resources/gk.db
та /var/db/gkopaque.bundle/Contents/Resources/gkopaque.db
Або ви можете перелічити попередню інформацію за допомогою:
Опції --master-disable
та --global-disable
команди spctl
повністю вимкнуть перевірку цих підписів:
Коли повністю увімкнено, з'явиться нова опція:
Можливо перевірити, чи дозволить GateKeeper використання додатку за допомогою:
Можливо додати нові правила в GateKeeper для дозволу виконання певних додатків за допомогою:
Файли карантину
Після завантаження додатку або файлу, певні додатки macOS, такі як веб-браузери або поштові клієнти, додають розширений атрибут файлу, відомий як "прапор карантину", до завантаженого файлу. Цей атрибут діє як захисний захід, щоб позначити файл як походять з ненадійного джерела (інтернету) і, можливо, нести ризики. Однак не всі додатки додають цей атрибут, наприклад, звичайне програмне забезпечення клієнта BitTorrent зазвичай обходить цей процес.
Наявність прапорця карантину сигналізує про функцію безпеки Gatekeeper macOS, коли користувач намагається виконати файл.
У випадку, коли прапорець карантину відсутній (як у випадку файлів, завантажених через деякі клієнти BitTorrent), перевірки Gatekeeper можуть не виконуватися. Таким чином, користувачам слід бути обережними при відкритті файлів, завантажених з менш безпечних або невідомих джерел.
Перевірка валідності підписів коду - це ресурсоємний процес, який включає генерацію криптографічних хешів коду та всіх його пакетованих ресурсів. Крім того, перевірка валідності сертифіката передбачає виконання онлайн-перевірки на серверах Apple, щоб переконатися, чи був він скасований після видачі. З цих причин повна перевірка підпису коду та його підтвердження є непрактичною для запуску кожного разу при запуску додатка.
Тому ці перевірки виконуються лише при виконанні додатків з атрибутом карантину.
Цей атрибут повинен бути встановлений додатком, який створює/завантажує файл.
Однак файли, які знаходяться в пісочниці, матимуть цей атрибут встановленим для кожного файлу, який вони створюють. І непісочні додатки можуть встановити його самостійно або вказати ключ LSFileQuarantineEnabled в Info.plist, що змусить систему встановити розширений атрибут com.apple.quarantine
на створені файли.
Можливо перевірити його статус та увімкнути/вимкнути (потрібні права адміністратора) за допомогою:
Ви також можете знайти, чи має файл розширений атрибут карантину за допомогою:
Перевірте значення розширених атрибутів та дізнайтеся, яка програма записала атрибут карантину за допомогою:
Фактично процес може встановлювати прапори карантину для створених ним файлів (я намагався застосувати прапор USER_APPROVED до створеного файлу, але він не застосовується):
Last updated