macOSカーネル監視のためのオープンソースのPre/Postコールバックベースフレームワーク
[ 速報 - 2019年8月28日 ]
macOS Catalina 10.15 Beta 7 リリースノート
https://developer.apple.com/documentation/macos_release_notes/macos_catalina_10_15_beta_7_release_notes
エンドポイントセキュリティ
/* テストの結果、これらのKauthインターフェースは実際には削除されておらず、Kemonは引き続き動作することがわかりました。ただし、このリリースノートはmacOSカーネルへの扉が閉じつつあることを意味していると思います。(2019年8月28日) */
Kemonは、macOSカーネル監視[2]のためのオープンソースのPre/Postコールバックベースのフレームワーク[1]です。Kemonの力を借りれば、XPC/IPC通信監視[3]、強制アクセス制御(MAC)ポリシーフィルタリング、ネットワークトラフィックとカーネル拡張ファイアウォールなどを簡単に実装できます。一般的に、攻撃者の視点からは、このフレームワークはより強力なRootkitを実現するのに役立ちます。防御の視点からは、Kemonはより細かい監視機能を構築するのに役立ちます。
また、このフレームワークに基づいていくつかのカーネルファザー[4][7]を実装し、多くのカーネル脆弱性を発見するのに役立ちました。例えば:
Apple Silicon AGXベースのGPU、IOMobileFrameBufferおよびDisplay Co-processor (DCP) [10]:
CVE-2024-40854, CVE-2024-44197 [33], CVE-2024-44199 [34], CVE-2025-24106 [35], CVE-2025-24111 [38], CVE-2025-24257 [36], CVE-2025-24273 [37], CVE-2025-43326 [39] [40], etc.
AppleのAMDおよびIntelベースのGPU:
CVE-2017-7155, CVE-2017-7163, CVE-2017-13883 [11], CVE-2018-4350, CVE-2018-4396, CVE-2018-4418 [12], CVE-2019-8807 [13], CVE-2022-22631, CVE-2022-22661, CVE-2022-46706 [23], etc.
Wi-Fi IO80211FamilyV1/V2 [5] [9]:
CVE-2020-9832, CVE-2020-9833, CVE-2020-9834 [15], CVE-2020-9899 [16], CVE-2020-10013 [17] [18] [19], CVE-2022-26761 [24], CVE-2022-26762 [25], CVE-2022-32837, CVE-2022-32847, CVE-2022-32860 [26] [27] [28], CVE-2022-32925, CVE-2022-46709 [29] [30], CVE-2023-38610 [31] [32], CVE-2025-43373 [41], CVE-2026-20621 [42] [43], etc.
Bluetooth Host Controller Interface (HCI) [6]:
CVE-2020-3892, CVE-2020-3893, CVE-2020-3905, CVE-2020-3907, CVE-2020-3908, CVE-2020-3912, CVE-2020-9779, CVE-2020-9853 [14], CVE-2020-9831 [15], CVE-2020-9928, CVE-2020-9929 [16], etc.
カーネルメモリマッピング機構 [8]:
CVE-2020-27914, CVE-2020-27915, CVE-2020-27936 [20] [21], CVE-2021-30678 [22], etc.
Kemonの機能は以下を含みます:
さらに、Kemonプロジェクトは、任意のmacOSカーネル関数に対してPre/Postコールバックベースの監視インターフェースを拡張することもできます。
XcodeプロジェクトまたはMakefileを使用してKemon kextドライバをビルドしてください。
有効なカーネル証明書をお持ちでない場合は、macOS System Integrity Protection (SIP) チェックを無効にしてください。
コマンド "sudo chown -R root:wheel kemon.kext" を使用して、Kemonカーネル拡張の所有者を変更します。
コマンド "sudo kextload kemon.kext" を使用して、Kemonカーネル拡張をインストールします。
コマンド "sudo kextunload kemon.kext" を使用して、Kemonカーネル拡張をアンインストールします。
Issueを作成したり、プルリクエストを送信して貢献してください。ガイドラインについてはContributing Guideを参照してください。
KemonはApache License 2.0の下でライセンスされています。LICENSEファイルを参照してください。