macOS Gatekeeper / Quarantine / XProtect
Gatekeeper
Gatekeeper, Mac işletim sistemleri için geliştirilmiş bir güvenlik özelliğidir ve kullanıcıların sistemlerinde yalnızca güvenilir yazılımları çalıştırmalarını sağlamak için tasarlanmıştır. Kullanıcıların App Store dışındaki kaynaklardan indirdiği ve açmaya çalıştığı yazılımları doğrulayarak çalışır; bu kaynaklar arasında bir uygulama, eklenti veya yükleyici paketi bulunur.
Gatekeeper'ın ana mekanizması, doğrulama sürecindedir. İndirilen yazılımın tanınmış bir geliştirici tarafından imzalanıp imzalanmadığını kontrol eder ve yazılımın özgünlüğünü sağlar. Ayrıca, yazılımın Apple tarafından noterlenip noterlenmediğini belirler; bu, yazılımın bilinen kötü amaçlı içerikten arındırıldığını ve noterlikten sonra değiştirilmediğini doğrular.
Ayrıca, Gatekeeper, kullanıcıların indirdikleri yazılımları ilk kez açmalarını onaylamaları için kullanıcılara onay istemi göndererek kullanıcı kontrolünü ve güvenliğini güçlendirir. Bu koruma, kullanıcıların yanlışlıkla zararlı olabilecek çalıştırılabilir kodları, zararsız bir veri dosyası olarak yanlış anlamalarını önlemeye yardımcı olur.
Uygulama İmzaları
Uygulama imzaları, kod imzaları olarak da bilinir ve Apple'ın güvenlik altyapısının kritik bir bileşenidir. Yazılım yazarının (geliştiricinin) kimliğini doğrulamak ve kodun en son imzalandığı tarihten bu yana değiştirilmediğini sağlamak için kullanılır.
İşte nasıl çalıştığı:
Uygulamayı İmzalama: Bir geliştirici uygulamasını dağıtmaya hazır olduğunda, uygulamayı özel bir anahtar kullanarak imzalar. Bu özel anahtar, geliştirici Apple Geliştirici Programı'na kaydolduğunda Apple tarafından kendisine verilen bir sertifika ile ilişkilidir. İmzalama süreci, uygulamanın tüm parçalarının kriptografik bir hash'ini oluşturmayı ve bu hash'i geliştiricinin özel anahtarıyla şifrelemeyi içerir.
Uygulamayı Dağıtma: İmzalanmış uygulama, geliştiricinin sertifikasıyla birlikte kullanıcılara dağıtılır; bu sertifika, ilgili genel anahtarı içerir.
Uygulamayı Doğrulama: Bir kullanıcı uygulamayı indirip çalıştırmaya çalıştığında, Mac işletim sistemi geliştiricinin sertifikasından genel anahtarı kullanarak hash'i çözer. Ardından, uygulamanın mevcut durumu temelinde hash'i yeniden hesaplar ve bu değeri çözülen hash ile karşılaştırır. Eğer eşleşiyorsa, bu, uygulamanın geliştirici tarafından imzalandığı tarihten bu yana değiştirilmediği anlamına gelir ve sistem uygulamanın çalışmasına izin verir.
Uygulama imzaları, Apple'ın Gatekeeper teknolojisinin temel bir parçasıdır. Bir kullanıcı internetten indirilen bir uygulamayı açmaya çalıştığında, Gatekeeper uygulama imzasını doğrular. Eğer imza, Apple tarafından tanınmış bir geliştiriciye verilen bir sertifika ile imzalanmışsa ve kod değiştirilmemişse, Gatekeeper uygulamanın çalışmasına izin verir. Aksi takdirde, uygulamayı engeller ve kullanıcıyı uyarır.
macOS Catalina'dan itibaren, Gatekeeper ayrıca uygulamanın Apple tarafından noterlenip noterlenmediğini kontrol eder ve bu, ek bir güvenlik katmanı ekler. Noterlik süreci, uygulamayı bilinen güvenlik sorunları ve kötü amaçlı kod için kontrol eder ve bu kontroller geçerse, Apple uygulamaya Gatekeeper'ın doğrulayabileceği bir bilet ekler.
İmzaları Kontrol Etme
Bazı kötü amaçlı yazılım örneklerini kontrol ederken, her zaman ikili dosyanın imzasını kontrol etmelisiniz çünkü imzayı atan geliştirici zaten kötü amaçlı yazılımla ilişkili olabilir.
Notarization
Apple'ın notarizasyon süreci, kullanıcıları potansiyel olarak zararlı yazılımlardan korumak için ek bir güvenlik önlemi olarak hizmet eder. Bu süreç, geliştiricinin uygulamasını Apple'ın Noter Servisi tarafından incelenmek üzere göndermesini içerir; bu, App Review ile karıştırılmamalıdır. Bu hizmet, kötü amaçlı içerik ve kod imzalama ile ilgili olası sorunlar için gönderilen yazılımı inceleyen otomatik bir sistemdir.
Eğer yazılım, herhangi bir endişe yaratmadan bu incelemeyi geçerse, Noter Servisi bir notarizasyon belgesi oluşturur. Geliştiricinin, bu belgeyi yazılımlarına eklemesi gerekmektedir; bu işleme 'stapling' denir. Ayrıca, notarizasyon belgesi çevrimiçi olarak da yayınlanır ve Gatekeeper, Apple'ın güvenlik teknolojisi, buna erişebilir.
Kullanıcının yazılımı ilk yüklemesi veya çalıştırması sırasında, notarizasyon belgesinin varlığı - ister çalıştırılabilir dosyaya eklenmiş olsun, ister çevrimiçi bulunsun - Gatekeeper'a yazılımın Apple tarafından notarize edildiğini bildirir. Sonuç olarak, Gatekeeper, yazılımın Apple tarafından kötü amaçlı içerik için kontrol edildiğini belirten açıklayıcı bir mesajı ilk başlatma iletişim kutusunda gösterir. Bu süreç, kullanıcıların sistemlerine yükledikleri veya çalıştırdıkları yazılımların güvenliğine olan güvenini artırır.
Enumerating GateKeeper
GateKeeper, güvenilmeyen uygulamaların çalıştırılmasını engelleyen birkaç güvenlik bileşeni ve ayrıca bileşenlerden biridir.
GateKeeper'ın durumunu görmek mümkündür:
GateKeeper imza kontrollerinin yalnızca Quarantine niteliğine sahip dosyalar için yapıldığını, her dosya için yapılmadığını unutmayın.
GateKeeper, tercihler ve imza doğrultusunda bir ikili dosyanın çalıştırılıp çalıştırılamayacağını kontrol edecektir:
Bu yapılandırmayı saklayan veritabanı /var/db/SystemPolicy
konumundadır. Bu veritabanını root olarak kontrol edebilirsiniz:
Not edin ki ilk kural "App Store" ile bitti ve ikincisi "Developer ID" ile bitti ve önceki görüntüde App Store ve tanımlanmış geliştiricilerden uygulama çalıştırmak için etkinleştirildi. Eğer o ayarı App Store olarak değiştirirseniz, "Notarized Developer ID" kuralları kaybolacaktır.
Ayrıca tip GKE olan binlerce kural da bulunmaktadır:
Bunlar /var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth
, /var/db/gke.bundle/Contents/Resources/gk.db
ve /var/db/gkopaque.bundle/Contents/Resources/gkopaque.db
dosyalarından gelen hash'lerdir.
Ya da önceki bilgiyi şu şekilde listeleyebilirsiniz:
The options --master-disable
and --global-disable
of spctl
will completely devre dışı bırakmak these signature checks:
Tamamen etkinleştirildiğinde, yeni bir seçenek görünecektir:
GateKeeper tarafından bir Uygulamanın izin verilip verilmeyeceğini kontrol etmek mümkündür:
GateKeeper'da belirli uygulamaların çalıştırılmasına izin vermek için yeni kurallar eklemek mümkündür:
Quarantine Files
Bir uygulama veya dosya indirildiğinde, web tarayıcıları veya e-posta istemcileri gibi belirli macOS uygulamaları, indirilen dosyaya genellikle "karantina bayrağı" olarak bilinen bir uzatılmış dosya niteliği ekler. Bu nitelik, dosyayı güvenilmeyen bir kaynaktan (internet) geldiği ve potansiyel olarak risk taşıdığı için işaretlemek amacıyla bir güvenlik önlemi olarak işlev görür. Ancak, tüm uygulamalar bu niteliği eklemez; örneğin, yaygın BitTorrent istemci yazılımları genellikle bu süreci atlar.
Karantina bayrağının varlığı, bir kullanıcının dosyayı çalıştırmaya çalıştığında macOS'un Gatekeeper güvenlik özelliğine sinyal verir.
Karantina bayrağı mevcut değilse (bazı BitTorrent istemcileri aracılığıyla indirilen dosyalar gibi), Gatekeeper'ın kontrolleri yapılmayabilir. Bu nedenle, kullanıcıların daha az güvenli veya bilinmeyen kaynaklardan indirilen dosyaları açarken dikkatli olmaları gerekir.
Kod imzalarının geçerliliğini kontrol etmek, kodun ve tüm paketlenmiş kaynaklarının kriptografik hash'lerini oluşturmayı içeren kaynak yoğun bir süreçtir. Ayrıca, sertifika geçerliliğini kontrol etmek, verilmesinden sonra iptal edilip edilmediğini görmek için Apple'ın sunucularında bir çevrimiçi kontrol yapmayı gerektirir. Bu nedenlerden dolayı, tam bir kod imzası ve notlandırma kontrolü, her uygulama başlatıldığında çalıştırmak pratik değildir.
Bu nedenle, bu kontroller yalnızca karantina niteliğine sahip uygulamalar çalıştırıldığında yapılır.
Bu nitelik, dosyayı oluşturan/indiren uygulama tarafından ayarlanmalıdır.
Ancak, sandbox'lanmış dosyalar, oluşturdukları her dosya için bu niteliği alacaktır. Sandbox'lanmamış uygulamalar ise bunu kendileri ayarlayabilir veya sistemin oluşturulan dosyalara com.apple.quarantine
uzatılmış niteliğini ayarlamasını sağlayacak LSFileQuarantineEnabled anahtarını Info.plist dosyasında belirtebilirler.
Ayrıca, qtn_proc_apply_to_self
çağrısı yapan bir süreç tarafından oluşturulan tüm dosyalar karantinaya alınır. Veya API qtn_file_apply_to_path
, belirtilen bir dosya yoluna karantina niteliğini ekler.
Durumunu kontrol etmek ve etkinleştirmek/devre dışı bırakmak (root gereklidir) mümkündür:
You can also find if a file has the quarantine extended attribute with:
Genişletilmiş özelliklerin değerini kontrol edin ve karantina özelliğini yazan uygulamayı bulun:
Aslında bir süreç "oluşturduğu dosyalara karantina bayrakları ayarlayabilir" (oluşturulan bir dosyada USER_APPROVED bayrağını uygulamaya çalıştım ama uygulayamadım):
Last updated