
[!NOTE] 2025年現在、SantaはGoogleによってメンテナンスされていません。 既存のユーザーは、Santaの活発にメンテナンスされているフォーク(例:https://github.com/northpolesec/santa)への移行を推奨します。
Santaは、macOS向けのバイナリおよびファイルアクセス認可システムです。これは、実行を監視するシステム拡張、ローカルデータベースの内容に基づいて実行の判断を行うデーモン、ブロック判断時にユーザーに通知するGUIエージェント、そしてシステムの管理やデータベースとサーバーの同期を行うコマンドラインユーティリティで構成されています。
名前がSanta(サンタ)なのは、いたずらか良い子かを追跡するからです。
SantaのドキュメントはDocsディレクトリに格納されており、https://santa.dev で公開されています。
ドキュメントには、導入オプション、Santaの各機能の詳細な仕組み、Santa自体の開発手順が含まれています。
質問がある場合や、その他の方法で始める際に助けが必要な場合は、santa-devグループが最適な場所です。
バグと思われる場合は、issueを報告していただければ、できるだけ早く対応します。
脆弱性を発見したと思われる場合は、開示報告に関するセキュリティポリシーをお読みください。
複数のモード:デフォルトのMONITORモードでは、ブロック対象としてマークされたものを除くすべてのバイナリの実行が許可され、イベントデータベースに記録・ログ保存されます。LOCKDOWNモードでは、リストに記載されたバイナリのみ実行が許可されます。
イベントログ:システム拡張が読み込まれている間、すべてのバイナリの起動がログに記録されます。いずれのモードでも、不明または拒否されたバイナリはデータベースに保存され、後で集計できるようになります。
証明書ベースのルール(オーバーライドレベル付き):バイナリのハッシュ(「フィンガープリント」)に依存する代わりに、署名証明書によって実行の許可/ブロックが可能です。したがって、特定の発行元がその証明書で署名したすべてのバイナリを、バージョンアップデートをまたいで許可/ブロックできます。バイナリが証明書で許可されるのは、その署名が正しく検証された場合のみですが、バイナリのフィンガープリントに対するルールは証明書の判断を上書きできます。つまり、証明書を許可リストに追加しながら、その証明書で署名されたバイナリをブロックする、またはその逆も可能です。
パスベースのルール(NSRegularExpression/ICU経由):Managed Client(構成プロファイルの前身で、同じ実装メカニズムを使用)にあった機能と同様の機能、およびmcxalrバイナリを介したアプリケーション起動制限が実現できます。この実装には、正規表現で設定可能であること、LaunchServicesに依存しないという追加の利点があります。Wikiで詳述されているように、ルール評価時には最も優先順位が低くなります。
フェイルセーフな証明書ルール:launchd(別名pid 1)、ひいてはmacOSで使用されるすべてのコンポーネントの署名に使用されている証明書をブロックする拒否ルールは設定できません。これにより、すべてのOSアップデート(場合によっては新しいバージョン全体)のバイナリが自動的に許可されます。これはAppleのApp Storeからのバイナリには影響しません。App Storeでは一般的なアプリの証明書が定期的に変更されるためです。同様に、Santa自体をブロックすることはできません。Santaは他のGoogleアプリとは異なる専用の証明書を使用しています。
ユーザーランドコンポーネントの相互検証:ユーザーランドコンポーネント(デーモン、GUIエージェント、コマンドラインユーティリティ)はXPCを使用して相互に通信し、通信が受け入れられる前に署名証明書が同一であることを確認します。
キャッシュ:許可されたバイナリはキャッシュされるため、リクエスト処理はバイナリがキャッシュされていない場合にのみ必要です。
単一のシステムやプロセスですべての攻撃を阻止したり、100%のセキュリティを提供することはできません。Santaは、ユーザーが自分自身を守るのを助けることを目的として作成されています。人々はしばしばマルウェアをダウンロードして信頼し、資格情報を与えたり、未知のソフトウェアにシステムに関するより多くのデータを外部に送信させたりします。中央管理されたコンポーネントとして、Santaは大規模なマシンフリート間でのマルウェアの拡散を防ぐのに役立ちます。独立して、Santaはコンピュータ上で何が実行されているかを分析するのに役立ちます。
Santaは多層防御戦略の一部であり、他に適切と思われる方法でホストを保護し続ける必要があります。
Santaは実行(execveおよびそのバリアント)のみをブロックし、dlopenで読み込まれた動的ライブラリ、ディスク上で置き換えられたライブラリ、またはDYLD_INSERT_LIBRARIESを使用して読み込まれたライブラリは保護しません。
スクリプト:Santaは現在、バイナリ以外の実行を無視するように記述されています。これは、管理コストとメリットを比較検討した結果、価値がないと判断したためです。さらに、多くのアプリケーションは一時的に生成されたスクリプトを使用しており、これらを許可リストに追加することは事実上不可能であり、許可しないと問題が発生します。他のユーザーにとって役立つのであれば、この点を再検討(または少なくともオプション化)する用意があります。
santactlコマンドラインクライアントには、管理サーバーと同期するフラグが含まれており、マシン上で発生したイベントをアップロードし、新しいルールをダウンロードします。同期可能なオープンソースサーバーがいくつかあります:
または、santactlは(同期サーバーなしで)ローカルにルールを設定することもできます。
Santaのようなツールはスクリーンショットにあまり適していないため、代わりに動画を用意しました。
このプロジェクトへのパッチは大歓迎です。詳細はCONTRIBUTINGドキュメントをご覧ください。
これは公式のGoogle製品ではありません。