macOS Kernel Extensions
Temel Bilgiler
Kernel uzantıları (Kexts), ana işletim sistemine ek işlevsellik sağlayan .kext
uzantılı paketler olan ve doğrudan macOS çekirdek alanına yüklenen bileşenlerdir.
Gereksinimler
Bu kadar güçlü olduğundan açıkça bir çekirdek uzantısını yüklemek karmaşıktır. Bir çekirdek uzantısının yüklenmesi gereken gereksinimler şunlardır:
Kurtarma moduna girildiğinde, çekirdek uzantıların yüklenmesine izin verilmelidir:
Çekirdek uzantısı, yalnızca Apple tarafından verilebilen bir çekirdek kodu imzalama sertifikası ile imzalanmış olmalıdır. Şirketi ve neden gerekli olduğunu detaylı olarak inceleyecek olan Apple.
Çekirdek uzantısı ayrıca notarized olmalıdır, Apple tarafından kötü amaçlı yazılım açısından kontrol edilebilir.
Ardından, root kullanıcısı, çekirdek uzantısını yükleyebilen ve paket içindeki dosyaların root'a ait olması gereken kişidir.
Yükleme işlemi sırasında, paketin korunan bir kök olmayan konumda hazırlanmış olması gerekir:
/Library/StagedExtensions
(com.apple.rootless.storage.KernelExtensionManagement
iznini gerektirir).Son olarak, yüklemeye çalışıldığında, kullanıcı bir onay isteği alacaktır ve kabul edilirse, bilgisayarın yüklenmesi için yeniden başlatılması gerekir.
Yükleme işlemi
Catalina'da böyleydi: Doğrulama işlemi userland 'da gerçekleşir. Ancak, yalnızca com.apple.private.security.kext-management
iznine sahip uygulamalar, çekirdeğe bir uzantı yüklemesini istemek için çekirdeğe başvurabilir: kextcache
, kextload
, kextutil
, kextd
, syspolicyd
kextutil
cli, bir uzantının yüklenmesi için doğrulama işlemini başlatır
Bir Mach hizmeti kullanarak
kextd
ile iletişim kuracaktır.
kextd
, imza gibi birçok şeyi kontrol edecektir.
syspolicyd
ile iletişim kurarak uzantının yüklenip yüklenemeyeceğini kontrol edecektir.
syspolicyd
, uzantının daha önce yüklenmediyse kullanıcıya bir onay isteği gönderecektir.
syspolicyd
, sonucukextd
'ye bildirecektir**
kextd
, sonunda çekirdeğe uzantıyı yüklemesini söyleyebilecektir
kextd
mevcut değilse, kextutil
aynı kontrolleri yapabilir.
Referanslar
Last updated