macOS Gatekeeper / Quarantine / XProtect
Gatekeeper
Gatekeeper to funkcja zabezpieczeń opracowana dla systemów operacyjnych Mac, zaprojektowana w celu zapewnienia, że użytkownicy uruchamiają tylko zaufane oprogramowanie na swoich systemach. Działa poprzez weryfikację oprogramowania, które użytkownik pobiera i próbuje otworzyć z źródeł spoza App Store, takich jak aplikacja, wtyczka lub pakiet instalacyjny.
Kluczowym mechanizmem Gatekeepera jest jego proces weryfikacji. Sprawdza, czy pobrane oprogramowanie jest podpisane przez uznawanego dewelopera, zapewniając autentyczność oprogramowania. Ponadto sprawdza, czy oprogramowanie jest znotaryzowane przez Apple, potwierdzając, że jest wolne od znanych treści złośliwych i nie zostało naruszone po znotaryzowaniu.
Dodatkowo, Gatekeeper wzmacnia kontrolę użytkownika i bezpieczeństwo, prosząc użytkowników o zatwierdzenie otwarcia pobranego oprogramowania po raz pierwszy. Ta ochrona pomaga zapobiec przypadkowemu uruchomieniu potencjalnie szkodliwego kodu wykonywalnego, który użytkownik mógł pomylić z nieszkodliwym plikiem danych.
Podpisy Aplikacji
Podpisy aplikacji, znane również jako podpisy kodu, są kluczowym elementem infrastruktury bezpieczeństwa Apple. Służą one do weryfikacji tożsamości autora oprogramowania (dewelopera) oraz zapewnienia, że kod nie był modyfikowany od czasu ostatniego podpisania.
Oto jak to działa:
Podpisanie Aplikacji: Gdy deweloper jest gotowy do dystrybucji swojej aplikacji, podpisuje aplikację przy użyciu klucza prywatnego. Ten klucz prywatny jest powiązany z certyfikatem, który Apple wydaje deweloperowi podczas zapisywania się do programu Apple Developer Program. Proces podpisywania polega na utworzeniu kryptograficznego skrótu wszystkich części aplikacji i zaszyfrowaniu tego skrótu kluczem prywatnym dewelopera.
Dystrybucja Aplikacji: Podpisana aplikacja jest następnie dystrybuowana do użytkowników wraz z certyfikatem dewelopera, który zawiera odpowiadający klucz publiczny.
Weryfikacja Aplikacji: Gdy użytkownik pobiera i próbuje uruchomić aplikację, ich system operacyjny Mac używa klucza publicznego z certyfikatu dewelopera do odszyfrowania skrótu. Następnie ponownie oblicza skrót na podstawie bieżącego stanu aplikacji i porównuje go z odszyfrowanym skrótem. Jeśli się zgadzają, oznacza to, że aplikacja nie została zmodyfikowana od czasu podpisania przez dewelopera, i system zezwala na uruchomienie aplikacji.
Podpisy aplikacji są istotną częścią technologii Gatekeeper firmy Apple. Gdy użytkownik próbuje otworzyć aplikację pobraną z internetu, Gatekeeper weryfikuje podpis aplikacji. Jeśli jest on podpisany certyfikatem wydanym przez znanego dewelopera Apple i kod nie został naruszony, Gatekeeper zezwala na uruchomienie aplikacji. W przeciwnym razie blokuje aplikację i informuje użytkownika.
Począwszy od macOS Catalina, Gatekeeper sprawdza również, czy aplikacja została znotaryzowana przez Apple, dodając dodatkową warstwę zabezpieczeń. Proces znotaryzowania sprawdza aplikację pod kątem znanych problemów związanych z bezpieczeństwem i kodem złośliwym, a jeśli te kontrole zostaną zaliczone, Apple dodaje bilet do aplikacji, który Gatekeeper może zweryfikować.
Sprawdzanie Podpisów
Podczas sprawdzania niektórych próbek złośliwego oprogramowania zawsze należy sprawdzić podpis binarny, ponieważ deweloper, który go podpisał, może być już powiązany z złośliwym oprogramowaniem.
Notaryzacja
Proces notaryzacji firmy Apple stanowi dodatkowe zabezpieczenie mające na celu ochronę użytkowników przed potencjalnie szkodliwym oprogramowaniem. Polega on na deweloperze przekazującym swoją aplikację do zbadania przez Usługę Notarialną Apple, która nie powinna być mylona z Recenzją Aplikacji. Ta usługa to zautomatyzowany system, który analizuje przesłane oprogramowanie pod kątem zawartości szkodliwej oraz ewentualnych problemów z podpisem kodu.
Jeśli oprogramowanie zda tę kontrolę bez wywoływania żadnych obaw, Usługa Notarialna generuje bilet notaryzacyjny. Następnie deweloper jest zobowiązany do dołączenia tego biletu do swojego oprogramowania, proces ten nazywa się 'zszywanie'. Ponadto bilet notaryzacyjny jest również publikowany online, gdzie Gatekeeper, technologia bezpieczeństwa Apple, może uzyskać do niego dostęp.
Podczas pierwszej instalacji lub uruchomienia oprogramowania przez użytkownika, istnienie biletu notaryzacyjnego - czy to zszytego z plikiem wykonywalnym, czy znalezionego online - informuje Gatekeepera, że oprogramowanie zostało notaryzowane przez Apple. W rezultacie Gatekeeper wyświetla opisową wiadomość w początkowym oknie uruchamiania, informującą, że oprogramowanie zostało poddane kontroli pod kątem zawartości szkodliwej przez Apple. Ten proces zwiększa zaufanie użytkowników do bezpieczeństwa oprogramowania, które instalują lub uruchamiają na swoich systemach.
Wyliczanie GateKeeper
GateKeeper to zarówno kilka komponentów zabezpieczeń, które zapobiegają uruchamianiu niezaufanych aplikacji, jak i jeden z komponentów.
Można sprawdzić status GateKeepera za pomocą:
Należy zauważyć, że sprawdzanie sygnatury GateKeeper jest wykonywane tylko dla plików z atrybutem kwarantanny, a nie dla każdego pliku.
GateKeeper sprawdzi, czy zgodnie z preferencjami i sygnaturą można uruchomić binarny plik:
Baza danych przechowująca tę konfigurację znajduje się w /var/db/SystemPolicy
. Możesz sprawdzić tę bazę danych jako root za pomocą:
Zauważ, że pierwsza reguła kończy się na "App Store", a druga na "Developer ID", a w poprzednim obrazie było włączone wykonywanie aplikacji ze sklepu App Store i zidentyfikowanych deweloperów. Jeśli zmienisz to ustawienie na App Store, reguły "Notarized Developer ID" znikną.
Istnieje także tysiące reguł typu GKE:
To są hashe pochodzące z /var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth
, /var/db/gke.bundle/Contents/Resources/gk.db
oraz /var/db/gkopaque.bundle/Contents/Resources/gkopaque.db
Lub możesz wyświetlić poprzednie informacje za pomocą:
Opcje --master-disable
i --global-disable
polecenia spctl
całkowicie wyłączą te kontrole podpisów:
Gdy jest całkowicie włączony, pojawi się nowa opcja:
Możliwe jest sprawdzenie, czy aplikacja zostanie zezwolona przez GateKeeper za pomocą:
Możliwe jest dodanie nowych reguł w GateKeeperze, aby zezwolić na wykonanie określonych aplikacji za pomocą:
Pliki kwarantanny
Po pobraniu aplikacji lub pliku, określone aplikacje macOS, takie jak przeglądarki internetowe lub programy pocztowe, dołączają rozszerzony atrybut pliku, powszechnie znany jako "flaga kwarantanny", do pobranego pliku. Ten atrybut działa jako środek bezpieczeństwa, aby oznaczyć plik jako pochodzący z niezaufanego źródła (internetu) i potencjalnie niosący ryzyko. Jednak nie wszystkie aplikacje dołączają ten atrybut, na przykład popularne oprogramowanie klientów BitTorrent zazwyczaj omija ten proces.
Obecność flagi kwarantanny sygnalizuje funkcję bezpieczeństwa Gatekeeper macOS, gdy użytkownik próbuje uruchomić plik.
W przypadku gdy flaga kwarantanny nie jest obecna (jak w przypadku plików pobranych za pomocą niektórych klientów BitTorrent), sprawdzenia Gatekeepera mogą nie zostać wykonane. Dlatego użytkownicy powinni zachować ostrożność przy otwieraniu plików pobranych z mniej bezpiecznych lub nieznanych źródeł.
Sprawdzanie ważności podpisów kodu to proces wymagający dużych zasobów, który obejmuje generowanie kryptograficznych skrótów kodu i wszystkich jego pakietowanych zasobów. Ponadto, sprawdzenie ważności certyfikatu polega na sprawdzeniu online u serwerów Apple, czy został on unieważniony po wydaniu. Z tych powodów pełne sprawdzenie podpisu kodu i notyfikacji jest niepraktyczne do uruchamiania za każdym razem, gdy aplikacja jest uruchamiana.
Dlatego te sprawdzenia są wykonywane tylko podczas uruchamiania aplikacji z atrybutem kwarantanny.
Ten atrybut musi być ustawiony przez aplikację tworzącą/pobierającą plik.
Jednak pliki, które są zabezpieczone piaskownicą, będą miały ten atrybut ustawiony dla każdego pliku, który tworzą. Aplikacje niebędące w piaskownicy mogą samodzielnie go ustawić lub określić klucz LSFileQuarantineEnabled w pliku Info.plist, co spowoduje, że system ustawia rozszerzony atrybut com.apple.quarantine
na utworzonych plikach.
Ponadto, wszystkie pliki utworzone przez proces wywołujący qtn_proc_apply_to_self
są kwarantannowane. Lub interfejs API qtn_file_apply_to_path
dodaje atrybut kwarantanny do określonej ścieżki pliku.
Możliwe jest sprawdzenie jego statusu i włączenie/wyłączenie (wymagane uprawnienia roota) za pomocą:
Możesz również sprawdzić, czy plik ma atrybut rozszerzonej kwarantanny za pomocą:
Sprawdź wartość rozszerzonych atrybutów i dowiedz się, która aplikacja napisała atrybut kwarantanny za pomocą:
Rzeczywiście proces "może ustawić flagi kwarantanny dla plików, które tworzy" (próbowałem zastosować flagę USER_APPROVED w utworzonym pliku, ale nie została ona zastosowana):
Last updated