macOS Uygulamaları Nasıl Koruyor? Gatekeeper ve Codesigning Nedir?

macOS ekosisteminde güvenlik, işletim sisteminin çekirdeğinden son kullanıcı uygulamasına kadar uzanan çok katmanlı bir yapıdan oluşur. Bu yapının en kritik iki ayağı Codesigning (Kod İmzalama) ve Gatekeeper mekanizmalarıdır.


1. Codesigning (Kod İmzalama) Nedir?

Kod imzalama, bir yazılımın kimin tarafından geliştirildiğini (Yazar Kimliği) ve yayınlandıktan sonra üzerinde herhangi bir değişiklik yapılıp yapılmadığını (Bütünlük) garanti altına alan kriptografik bir süreçtir.

Temel Bileşenler

  • Digital Signature (Dijital İmza): Geliştiricinin Apple'dan aldığı sertifika ile oluşturulur.

  • Entitlements (Yetkiler): Uygulamanın hangi sistem kaynaklarına (kamera, mikrofon, dosya sistemi) erişebileceğini belirten bir listedir.

  • Designated Requirement (DR): İşletim sisteminin, uygulamanın gelecekteki güncellemelerinin de aynı kaynaktan geldiğini anlamasını sağlayan kurallar dizisidir.

Nasıl Çalışır?

Geliştirici uygulamayı derlediğinde, Apple tarafından sağlanan özel bir anahtar kullanılır. Uygulamanın her bir parçası (ikili dosyalar, kaynaklar, kütüphaneler) hashlenir ve bu hash değerleri mühürlenir. Eğer kötü amaçlı bir yazılım, imzalanmış bir uygulamanın içindeki tek bir biti bile değiştirirse, imza geçersiz kalır ve sistem uygulamayı çalıştırmayı reddeder.


2. Gatekeeper: macOS'in Koruma Kalkanı

Gatekeeper, kullanıcının internetten indirdiği uygulamaları çalıştırmadan önce denetleyen bir kontrol noktasıdır. Amacı, sisteme sızmaya çalışan zararlı yazılımları (malware) engellemektir.

Gatekeeper'ın Kontrol Aşamaları

  1. Quarantine Bit (Karantina Özniteliği): Bir dosya Safari veya Chrome üzerinden indirildiğinde, macOS bu dosyaya bir "karantina" bayrağı ekler.

  2. İmza Kontrolü: Gatekeeper, dosyanın Apple tarafından onaylanmış bir geliştirici sertifikasıyla imzalanıp imzalanmadığına bakar.

  3. Notarization (Noter Onayı) Kontrolü: macOS 10.15 (Catalina) ve sonrasında, sadece kod imzalamak yeterli değildir. Yazılımın Apple sunucularına gönderilip otomatik bir güvenlik taramasından geçmesi (Notarization) gerekir.


3. Notarization: Apple'ın Güvenlik Onayı

Notarization, Apple'ın yazılımınızı kullanıcılara sunmadan önce yaptığı bir tür "ön inceleme"dir. Apple yazılımı tarar, içinde bilinen bir malware olup olmadığını kontrol eder ve ardından yazılıma bir "ticket" (onay belgesi) atar.

  • Stapling (Zımbalama): Geliştirici, Apple'dan gelen bu onay biletini uygulamanın içine "zımbalar". Böylece kullanıcı internete bağlı olmasa bile Gatekeeper uygulamanın onaylı olduğunu anlayabilir.


4. Geliştiriciler ve Yöneticiler İçin Kritik Komutlar

Sistem yöneticileri veya geliştiriciler için uçbirim (Terminal) üzerinden bu süreçleri yönetmek oldukça önemlidir.

Bir Uygulamanın İmzasını Kontrol Etme

Bir uygulamanın geçerli bir imzaya sahip olup olmadığını ve notarize edilip edilmediğini şu komutla görebilirsiniz:

Bash:
codesign --verify --verbose --deep /Applications/OrnekUygulama.app

Gatekeeper Durumunu Sorgulama

Sistem genelinde Gatekeeper'ın aktif olup olmadığını kontrol etmek için:

Bash:
spctl --status

Karantina Özniteliğini Manuel Kaldırma

Bazen güvenilir kaynaklardan gelen ancak Gatekeeper engeline takılan dosyalar için (dikkatli olunmalıdır) şu komut kullanılır:

Bash:
xattr -d com.apple.quarantine /dosya/yolu/uygulama.zip

Özet: Güvenlik Zinciri Nasıl Tamamlanır?

  1. Geliştirici: Kodu yazar ve sertifikasıyla imzalar.

  2. Apple Sunucuları: Kodu tarar ve Notarize eder.

  3. Kullanıcı: Dosyayı indirir (Quarantine bit atanır).

  4. Gatekeeper: İmzayı ve noter onayını kontrol eder. Her şey geçerliyse uygulamanın çalışmasına izin verir.

Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu