macOS Kernel Extensions
Temel Bilgiler
Kernel uzantıları (Kexts), macOS çekirdek alanına doğrudan yüklenen ve ana işletim sistemine ek işlevsellik sağlayan .kext
uzantısına sahip paketlerdir.
Gereksinimler
Açıkça, bu kadar güçlü olduğu için bir kernel uzantısını yüklemek karmaşıktır. Bir kernel uzantısının yüklenebilmesi için karşılaması gereken gereksinimler şunlardır:
kurtarma moduna girerken, kernel uzantılarının yüklenmesine izin verilmelidir:
Kernel uzantısı, yalnızca Apple tarafından verilebilen bir kernel kod imzalama sertifikası ile imzalanmış olmalıdır. Şirketi ve neden gerekli olduğunu detaylı bir şekilde inceleyecek olan kimdir.
Kernel uzantısı ayrıca notarize edilmelidir, Apple bunu kötü amaçlı yazılım için kontrol edebilecektir.
Ardından, root kullanıcısı kernel uzantısını yükleyebilen kişidir ve paket içindeki dosyalar root'a ait olmalıdır.
Yükleme sürecinde, paket korumalı bir kök olmayan konumda hazırlanmalıdır:
/Library/StagedExtensions
(bu,com.apple.rootless.storage.KernelExtensionManagement
iznini gerektirir).Son olarak, yüklemeye çalışırken, kullanıcı bir onay isteği alacaktır ve kabul edilirse, bilgisayar yeniden başlatılmalıdır.
Yükleme süreci
Catalina'da böyleydi: doğrulama sürecinin kullanıcı alanında gerçekleştiğini belirtmek ilginçtir. Ancak, yalnızca com.apple.private.security.kext-management
iznine sahip uygulamalar kernel'den bir uzantıyı yüklemesini isteyebilir: kextcache
, kextload
, kextutil
, kextd
, syspolicyd
kextutil
cli bir uzantıyı yüklemek için doğrulama sürecini başlatır
kextd
ile Mach servisi kullanarak iletişim kuracaktır.
kextd
birkaç şeyi kontrol edecektir, örneğin imzayı
Uzantının yüklenip yüklenemeyeceğini kontrol etmek için
syspolicyd
ile iletişim kuracaktır.
syspolicyd
, uzantı daha önce yüklenmemişse kullanıcıya soracaktır.
syspolicyd
, sonucukextd
'ye bildirecektir.
kextd
nihayetinde kernel'e uzantıyı yüklemesini söyleyebilecektir.
Eğer kextd
mevcut değilse, kextutil
aynı kontrolleri gerçekleştirebilir.
Referanslar
Last updated