Santa 是 macOS 的二進位檔案存取授權系統。它由一個監視執行的系統擴展、一個根據本地資料庫內容做出執行決策的守護程序、一個在出現區塊決策時通知使用者的 GUI 代理以及一個用於管理系統和的命令列實用程式組成。伺服器同步。
它被命名為聖誕老人,因為它跟踪頑皮或友善的二進位。
Santa 文件儲存在 Docs 目錄中,並在 https://santa.dev 上發布。
這些文件包括部署選項、Santa 各部分如何運作的詳細資訊以及開發 Santa 本身的說明。
如果您有疑問或需要入門協助,聖誕老人發展小組是一個很好的地方。
如果您認為有錯誤,請隨時回報問題,我們會盡快回覆。
如果您認為自己發現了漏洞,請閱讀揭露報告的安全策略。
多種模式:在預設的 MONITOR 模式下,除了標記為阻止的二進位檔案之外的所有二進位檔案都將被允許運行,同時被記錄並記錄在事件資料庫中。在 LOCKDOWN 模式下,只允許運行列出的二進位。
事件日誌記錄:載入系統擴充功能時,將記錄所有二進位啟動。在任一模式下,所有未知或被拒絕的二進位檔案都儲存在資料庫中,以便以後進行聚合。
基於憑證的規則,具有覆蓋等級:可執行檔可以透過其簽章憑證來允許/阻止,而不是依賴二進位檔案的雜湊(或“指紋”)。因此,您可以允許/阻止給定發布者跨版本更新使用該憑證簽署的所有二進位檔案。只有當其簽章驗證正確時,二進位檔案才能被其憑證允許,但二進位檔案指紋的規則將覆蓋憑證的決定;即,您可以將憑證列入白名單,同時阻止使用該憑證簽署的二進位文件,反之亦然。
基於路徑的規則(透過 NSRegularExpression/ICU):這允許與託管客戶端(設定檔的前身,使用相同的實作機制)中的功能類似,透過 mcxalr 二進位檔案進行應用程式啟動限制。此實作帶來的額外好處是可以透過正規表示式進行配置,並且不依賴 LaunchServices。正如 wiki 中詳細介紹的,在評估規則時,這具有最低的優先順序。
故障安全性憑證規則:您不能放入拒絕規則來阻止用於簽署 launchd 的憑證(又稱 pid 1),從而阻止 macOS 中使用的所有元件。因此,每個作業系統更新(在某些情況下是整個新版本)中的二進位檔案都會自動允許。這不會影響 Apple App Store 中的二進位文件,它使用針對常見應用程式定期更改的各種憑證。同樣,您無法阻止聖誕老人本身,並且聖誕老人使用與其他 Google 應用程式不同的單獨證書。
使用者態元件相互驗證:每個使用者態元件(守護程式、GUI 代理程式和命令列公用程式)使用 XPC 相互通信,並在接受任何通訊之前檢查其簽章憑證是否相同。
快取:允許的二進位檔案被緩存,因此只有在二進位檔案尚未快取時才會執行發出請求所需的處理。
沒有任何一個系統或程序能夠阻止所有攻擊,或提供 100% 的安全性。編寫 Santa 的目的是幫助保護使用者免受自身傷害。人們經常下載惡意軟體並信任它,向惡意軟體提供憑證,或允許未知軟體竊取有關您系統的更多資料。作為集中管理的元件,Santa 可以幫助阻止惡意軟體在大量機器中傳播。聖誕老人可以獨立地幫助分析您的電腦上正在運行的內容。
聖誕老人是縱深防禦策略的一部分,您應該繼續以您認為合適的任何其他方式保護主機。
Santa 只阻止執行(execve 和變體),它不能防止使用 dlopen 載入的動態函式庫、已替換的磁碟上的函式庫或使用DYLD_INSERT_LIBRARIES
載入的函式庫。
腳本:Santa 目前被編寫為忽略任何非二進位檔案的執行。這是因為在權衡管理成本與效益之後,我們發現這是不值得的。此外,許多應用程式使用臨時生成的腳本,我們不可能將其列入許可名單,否則會導致問題。如果它對其他人有用,我們很樂意重新審視它(或至少將其作為選項)。
santactl
命令列用戶端包含一個與管理伺服器同步的標誌,該標誌上傳電腦上發生的事件並下載新規則。您可以與多種開源伺服器同步:
或者, santactl
可以在本地配置規則(無需同步伺服器)。
像聖誕老人這樣的工具不適合螢幕截圖,所以這裡有一個影片。
非常歡迎對該項目提供補丁。請參閱貢獻文件。
這不是Google 官方產品。