macOS Gatekeeper / Quarantine / XProtect
Gatekeeper
Gatekeeper, Mac işletim sistemleri için geliştirilen bir güvenlik özelliğidir ve kullanıcıların sistemlerinde yalnızca güvenilir yazılımları çalıştırmalarını sağlamak amacıyla tasarlanmıştır. Kullanıcıların App Store dışındaki kaynaklardan (uygulama, eklenti veya yükleyici paketi gibi) indirdikleri ve açmaya çalıştıkları yazılımları doğrulayarak çalışmasını sağlar.
Gatekeeper'ın ana mekanizması, doğrulama sürecinde yatar. İndirilen yazılımın tanınmış bir geliştirici tarafından imzalandığını kontrol eder, yazılımın gerçekliğini sağlar. Ayrıca yazılımın Apple tarafından noterleme işleminden geçip geçmediğini de kontrol eder, bu da yazılımın bilinen kötü amaçlı içerikten yoksun olduğunu ve noterlemeden sonra değiştirilmediğini doğrular.
Ayrıca, Gatekeeper, kullanıcıların indirdikleri yazılımın ilk kez açılmasını onaylamalarını isteyerek kullanıcı kontrolünü ve güvenliğini güçlendirir. Bu koruma, kullanıcıların zararlı olabilecek yürütülebilir kodları yanlışlıkla zararsız veri dosyası olarak algılayabileceği durumları önlemeye yardımcı olur.
Uygulama İmzaları
Uygulama imzaları, Apple'ın güvenlik altyapısının kritik bir bileşenidir. Bunlar, yazılım yazarının (geliştiricinin) kimliğini doğrulamak ve kodun son imzalandığından bu yana değiştirilmediğinden emin olmak için kullanılır.
İşleyiş şu şekildedir:
Uygulamanın İmzalanması: Bir geliştirici uygulamasını dağıtmaya hazır olduğunda, uygulamayı özel bir anahtar kullanarak imzalar. Bu özel anahtar, geliştiricinin Apple Geliştirici Programı'na kaydolduğunda Apple'ın geliştiriciye verdiği bir sertifika ile ilişkilidir. İmzalama işlemi, uygulamanın tüm parçalarının kriptografik bir özetini oluşturmayı ve bu özeti geliştiricinin özel anahtarıyla şifrelemeyi içerir.
Uygulamanın Dağıtılması: İmzalanan uygulama, kullanıcılara geliştiricinin sertifikasını içeren ve karşılık gelen genel anahtarı içeren birlikte dağıtılır.
Uygulamanın Doğrulanması: Bir kullanıcı uygulamayı indirip çalıştırmaya çalıştığında, Mac işletim sistemi geliştiricinin sertifikasındaki genel anahtarı kullanarak özeti şifreler. Daha sonra uygulamanın mevcut durumuna dayanarak özeti yeniden hesaplar ve bunu şifrelenmiş özetiyle karşılaştırır. Eşleşirse, bu, uygulamanın geliştirici tarafından imzalandığından beri değiştirilmediği anlamına gelir ve sistem uygulamanın çalışmasına izin verir.
Uygulama imzaları, Apple'ın Gatekeeper teknolojisinin önemli 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 Apple tarafından bilinen 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 noterleme işleminden geçip geçmediğini de kontrol eder, ek bir güvenlik katmanı ekler. Noterleme işlemi, uygulamayı bilinen güvenlik sorunları ve kötü amaçlı kodlar açısından kontrol eder ve bu kontrolleri geçerse, Apple uygulamaya Gatekeeper'ın doğrulayabileceği bir bilet ekler.
İmzaları Kontrol Etme
Bazı kötü amaçlı yazılım örneğini kontrol ederken her zaman binary'nin imzasını kontrol etmelisiniz, çünkü imzayı atan geliştirici zaten kötü amaçlı yazılımla ilişkili olabilir.
Notarizasyon
Apple'ın notarizasyon süreci, kullanıcıları potansiyel olarak zararlı yazılımlardan korumak için ek bir güvenlik önlemi olarak hizmet verir. Bu, geliştiricinin uygulamasını Apple'ın Notary Service tarafından incelenmesi için sunmasıyla gerçekleşir, bu da App Review ile karıştırılmamalıdır. Bu hizmet, gönderilen yazılımı zararlı içerik ve kod imzalama ile ilgili olası sorunlar açısından inceleyen otomatik bir sistemdir.
Eğer yazılım bu incelemeyi sorunsuz bir şekilde geçerse, Notary Service bir notarizasyon bileti oluşturur. Geliştiricinin daha sonra bu bileti yazılımlarına eklemesi gerekir, bu işlem 'stapling' olarak bilinir. Ayrıca, notarizasyon bileti de çevrimiçi olarak yayınlanır ve Gatekeeper, Apple'ın güvenlik teknolojisi, buna erişebilir.
Kullanıcının yazılımı ilk kez yüklediğinde veya çalıştırdığında, yürütülebilir dosyaya eklenmiş veya çevrimiçi bulunan notarizasyon bileti - Gatekeeper'a yazılımın Apple tarafından notarize edildiğini bildirir. Sonuç olarak, Gatekeeper, kullanıcıya yazılımın Apple tarafından zararlı içerik açısından kontrol edildiğini belirten açıklayıcı bir mesaj gösterir. Bu süreç, kullanıcıların sistemlerine yükledikleri veya çalıştırdıkları yazılımların güvenliği konusundaki güvenlerini artırır.
GateKeeper'ı Sıralama
GateKeeper, güvenilmeyen uygulamaların yürütülmesini engelleyen birkaç güvenlik bileşeni ve aynı zamanda bileşenlerden biridir.
GateKeeper'ın durumunu görmek mümkündür:
GateKeeper imza kontrollerinin yalnızca Karantina özniteliğine sahip dosyalara uygulandığını unutmayın.
GateKeeper, bir ikili dosyanın yürütülebilir olup olmadığını tercihlere ve imzaya göre kontrol eder:
Bu yapılandırmayı tutan veritabanı /var/db/SystemPolicy
konumundadır. Bu veritabanını kök olarak şu şekilde kontrol edebilirsiniz:
Not: İlk kuralın "App Store" ile bittiğine ve ikincisinin "Developer ID" ile bittiğine dikkat edin ve önceki görüntüde App Store ve tanımlanmış geliştiricilerden uygulamaları çalıştırmaya izin verildiği unutulmamalıdır. Eğer o ayarı App Store olarak değiştirirseniz, "Notarized Developer ID" kuralları kaybolacaktır.
Ayrıca binlerce GKE türünde kural bulunmaktadır:
Bu, /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 karma değerlerdir.
Ya da önceki bilgileri şu şekilde listeleyebilirsiniz:
spctl
'ın --master-disable
ve --global-disable
seçenekleri bu imza kontrollerini tamamen devre dışı bırakacaktır:
Tamamen etkinleştirildiğinde, yeni bir seçenek görünecektir:
GateKeeper tarafından izin verilip verilmeyeceğini kontrol etmek mümkündür:
GateKeeper'a belirli uygulamaların yürütülmesine izin vermek için yeni kurallar eklemek mümkündür:
Karantina Dosyaları
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 genişletilmiş dosya özniteliği ekler. Bu öznitelik, dosyayı güvenilmeyen bir kaynaktan (internet) geldiği ve potansiyel riskler taşıdığı şeklinde işaretlemek için bir güvenlik önlemi olarak hareket eder. Ancak, tüm uygulamalar bu özniteliği eklemeyebilir, ö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'in Gatekeeper güvenlik özelliğine sinyal verir.
Karantina bayrağının bulunmadığı durumda (bazı BitTorrent istemcileri aracılığıyla indirilen dosyalar gibi), Gatekeeper'ın kontrolleri gerçekleştirilmeyebilir. Bu nedenle, kullanıcılar, güvenli olmayan veya bilinmeyen kaynaklardan indirilen dosyaları açarken dikkatli olmalıdır.
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, sertifikanın verildikten sonra iptal edilip edilmediğini görmek için Apple'ın sunucularına çevrimiçi bir kontrol yapmayı içerir. Bu nedenlerden dolayı, tam bir kod imzası ve noterlik kontrolü her uygulama başlatıldığında her seferinde çalıştırılması pratik değildir.
Bu nedenle, bu kontroller yalnızca karantina özniteliğine sahip uygulamalar çalıştırıldığında çalıştırılır.
Bu öznitelik, dosyayı oluşturan/indiren uygulama tarafından ayarlanmalıdır.
Ancak, kumlanmış dosyalar bu özniteliğe her oluşturdukları dosyada ayarlanmış olacaktır. Ve kumlanmamış uygulamalar kendileri ayarlayabilir veya Info.plist içinde LSFileQuarantineEnabled anahtarını belirleyebilirler, bu da sistemin oluşturulan dosyalara com.apple.quarantine
genişletilmiş özniteliğini eklemesini sağlar,
Ayrıca, qtn_proc_apply_to_self
çağrısını yapan bir işlem tarafından oluşturulan tüm dosyalar karantinaya alınır. Veya qtn_file_apply_to_path
API'si belirtilen dosya yoluna karantina özniteliğini ekler.
Durumunu kontrol etmek ve etkinleştirmek/devre dışı bırakmak (kök gerekli) mümkündür:
Ayrıca, bir dosyanın karantina uzatılmış özniteliğe sahip olup olmadığını şu şekilde bulabilirsiniz:
Genişletilmiş özniteliklerin değerini kontrol edin ve karantina özniteliğini yazan uygulamayı bulun:
Gerçekte bir işlem "oluşturduğu dosyalara karantina bayrakları ayarlayabilir" (oluşturulan bir dosyaya USER_APPROVED bayrağını uygulamayı denedim ancak uygulanmadı):
Last updated