macOS’te çekirdeği güvenli bir şekilde genişletme
macOS 11’den itibaren üçüncü parti çekirdek genişletmeleri (kext’ler) etkinleştirilmişse çekirdeğe istendiğinde yüklenemez. Bunun yerine, bu genişletmeler başlatma işlemi sırasında yüklenen bir yardımcı çekirdek koleksiyonu (AuxKC) ile birleştirilir. Apple Silicon yongalı bir Mac için AuxKC ölçümü imzalanıp LocalPolicy’ye yerleştirilir (eski donanımlarda AuxKC veri disk bölümündedir). AuxKC’nin yeniden oluşturulması için kullanıcı onayı, değişikliklerin çekirdeğe yüklenmesi için macOS’in yeniden başlatılması ve güvenli başlatmanın Azaltılmış Güvenlik olarak ayarlanmasını gerekir.
Önemli: Kext’ler artık macOS için önerilmemektedir. Kext’ler, işletim sisteminin bütünlüğünü ve güvenilirliğini tehlikeye atmaktadır ve Apple, kullanıcılara çekirdeğin genişletilmesini gerektirmeyen çözümleri seçmelerini önerir.
Apple Silicon yongalı Mac’te çekirdek genişletmeleri
Kext’lerin Apple Silicon yongalı Mac için açıkça etkinleştirilmesi gerekir. Bunun için başlangıçta açma/kapama düğmesi basılı tutularak One True Recovery (1TR) moduna geçilir, sonra Azaltılmış Güvenlik moduna düşürülür ve çekirdek genişletmelerini etkinleştirme onay kutusu işaretlenir. Bu işlem, mod düşürmeyi yetkilendirmek için bir yönetici parolasının girilmesini de gerektirir. 1TR ile parola gereksinimleri birleşimi, macOS’in içinden başlamış, yalnızca yazılım kullanan saldırganların macOS’e daha sonra çekirdek ayrıcalıklarını bozabilecek kext eklemesini zorlaştırır.
Kullanıcı kext’lerin yüklenmesini yetkilendirdikten sonra, yukarıdaki Kullanıcı Onaylı Çekirdek Genişletmesi Yükleme akışı kullanılarak kext’leri sisteme yükleme işlemi yetkilendirilir. Yukarıdaki akışta kullanılan yetkilendirme, LocalPolicy’deki kullanıcı yetkili kext listesinin (UAKL) bir SHA384 özetini almak için de kullanılır. Bundan sonra, yalnızca UAKL’de bulunan kext’lerin AuxKC’ye dahil edilmesini onaylamaktan çekirdek yönetimi arka plan programı (kmd
) sorumludur.
Sistem Bütünlük Koruması (SIP) etkinse AuxKC’ye dahil edilmeden önce her kext’in imzası doğrulanır.
SIP etkin değilse kext imzası zorunlu tutulmaz.
Bu yaklaşım, Apple Geliştirici Programı’nın parçası olmayan geliştiriciler veya kullanıcılar için Sıkı Olmayan Güvenlik akışlarının imzalanmadan önce kext’lerini test etmelerine olanak tanır.
AuxKC yaratıldıktan sonra, ölçümü imzalanmak ve başlangıçta iBoot tarafından değerlendirilebilecek bir Image4 veri yapısına dahil edilmek üzere Secure Enclave’e gönderilir. AuxKC yapısının bir parçası olarak kext alındısı da oluşturulur. Bu alındı, gerçekten AuxKC’ye dahil edilen kext’lerin listesini içerir. Yasaklı kext’lerle karşılaşılmışsa bu küme, UAKL’nin bir alt kümesi olabilir. AuxKC Image4 veri yapısının ve kext alındısının bir SHA384 özeti LocalPolicy’ye dahil edilir. Secure Enclave imzalı daha eski bir AuxKC Image4 dosyası ile daha yeni bir LocalPolicy kullanarak başlatmanın mümkün olmamasını sağlamak üzere başlangıçta iBoot tarafından ek doğrulama için AuxKC Image4 özeti kullanılır. Kext alındısı, ApplePay gibi alt sistemler tarafından macOS’in güvenilirliğini engelleyebilecek bir kext’in yüklü olup olmadığını belirlemek için kullanılır. Varsa bu yüzden Apple Pay özellikleri etkisizleştirilebilir.
Sistem genişletmeleri
macOS 10.15, geliştiricilerin çekirdek düzeyi yerine kullanıcı alanında çalışan sistem genişletmeleri yükleyip yöneterek macOS’in yeteneklerini genişletmelerini sağlar. Sistem genişletmeleri kullanıcı alanında çalışarak macOS’in kararlılığını ve güvenliğini artırır. Kext’lerin doğaları gereği işletim sisteminin tamamına tam erişimi olmasına rağmen kullanıcı alanında çalışan genişletmelere yalnızca kendi belirtilen işlevlerini gerçekleştirmeleri için gereken ayrıcalıklar verilir.
Geliştiriciler; USB ve kullanıcı arayüzü sürücüleri, uç nokta güvenliği araçları (veri kaybı önleme veya diğer uç nokta aracıları gibi), VPN ve ağ araçları yazmak için DriverKit, EndpointSecurity ve NetworkExtension da dahil olmak üzere yazılım çerçeveleri (framework) kullanabilir ve bunların tümünü kext yazmaları gerekmeden yapabilirler. Üçüncü parti güvenlik aracıları yalnızca bu API’lerden yararlanabiliyorlarsa veya çekirdek genişletmelerini bırakıp bu API’lere geçiş için sağlam bir yol haritasına sahiplerse kullanılmalıdır.
Kullanıcı Onaylı Çekirdek Genişletmesi Yükleme
Güvenliği artırmak amacıyla macOS 10.13 ile birlikte veya ondan sonra yüklenen çekirdek genişletmelerini yüklemek için kullanıcı onayı gerekir. Bu işlem, Kullanıcı Onaylı Çekirdek Genişletmesi Yükleme olarak bilinir. Çekirdek genişletmesini onaylamak için yönetici yetkilendirmesi gerekir. Çekirdek genişletmeleri şu koşullarda yetkilendirme gerektirmez:
macOS 10.12 veya daha eskisini çalıştıran bir Mac’e yüklenmişse
Daha önce onaylanmış genişletmelerin yerine geçiyorsa
Mac recoveryOS’ten başlatıldığında kullanılabilen
spctl
komut satırı aracıyla kullanıcı onayı olmadan yüklenmesine izin veriliyorsaMobil aygıt yönetimi (MDM) konfigürasyonu kullanılarak yüklenmesine izin veriliyorsa
macOS 10.13.2’den itibaren kullanıcılar, kullanıcı onayı olmadan yüklenen çekirdek genişletmelerinin listesini belirtmek için MDM kullanabilir. Bu seçenek; bir MDM’ye kaydolmuş (Apple Okul Yönetimi, Apple İşletme Yönetimi veya kullanıcı tarafından yapılan MDM kaydı aracılığıyla) macOS 10.13.2 yüklü bir Mac gerektirir.