macOS Kernel Extensions
基本情報
カーネル拡張機能(Kexts)は、.kext
拡張子を持つパッケージであり、macOSカーネルスペースに直接ロードされ、メインオペレーティングシステムに追加機能を提供します。
要件
明らかに、これは非常に強力なため、カーネル拡張機能をロードするのは複雑です。カーネル拡張機能をロードするために満たす必要がある要件は次のとおりです:
リカバリモードに入るとき、カーネル拡張機能をロードすることが許可されている必要があります:
カーネル拡張機能は、Appleによってのみ付与されるカーネルコード署名証明書で署名されている必要があります。Appleは、会社やその必要性を詳細に検討します。
カーネル拡張機能はまた、ノータライズされている必要があり、Appleはマルウェアをチェックできます。
その後、rootユーザーがカーネル拡張機能をロードできるユーザーであり、パッケージ内のファイルはrootに属している必要があります。
アップロードプロセス中、パッケージは保護された非rootの場所に準備されなければなりません:
/Library/StagedExtensions
(com.apple.rootless.storage.KernelExtensionManagement
権限が必要)。最後に、ユーザーはそれをロードしようとすると、確認リクエストを受け取ります そして、承認された場合、コンピュータを再起動してそれをロードする必要があります。
ロードプロセス
Catalinaでは、次のようになりました:検証プロセスがユーザーランドで発生することに注目することが興味深いです。ただし、com.apple.private.security.kext-management
権限を持つアプリケーションのみがカーネルに拡張機能のロードを要求できます:kextcache
、kextload
、kextutil
、kextd
、syspolicyd
kextutil
cliは、拡張機能のロードの検証プロセスを開始します
Machサービスを使用して**
kextd
**に送信して話します。
**
kextd
**は、署名など、いくつかのことをチェックします
拡張機能をロードできるかどうかをチェックするために**
syspolicyd
**に話します。
**
syspolicyd
**は、拡張機能が以前にロードされていない場合、ユーザーにプロンプトを表示します。
**
syspolicyd
は結果をkextd
**に報告します
kextd
は最終的にカーネルに拡張機能をロードするよう指示できます
**kextd
が利用できない場合、kextutil
**は同じチェックを実行できます。
参考文献
Last updated