{"id":13528078,"url":"https://github.com/google/santa","last_synced_at":"2025-12-16T23:20:59.678Z","repository":{"id":21687736,"uuid":"25009012","full_name":"google/santa","owner":"google","description":"A binary authorization and monitoring system for macOS","archived":false,"fork":false,"pushed_at":"2024-12-10T16:08:33.000Z","size":12746,"stargazers_count":4468,"open_issues_count":74,"forks_count":297,"subscribers_count":134,"default_branch":"main","last_synced_at":"2025-01-07T16:08:59.650Z","etag":null,"topics":["allowlist","authorization","blocklist","endpoint-security","macos","santa","security","system-extension"],"latest_commit_sha":null,"homepage":"https://santa.dev","language":"Objective-C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-10-09T21:18:31.000Z","updated_at":"2025-01-06T09:44:43.000Z","dependencies_parsed_at":"2023-02-19T11:46:04.176Z","dependency_job_id":"8989cae9-aa80-4745-8944-5fcfe1269ffa","html_url":"https://github.com/google/santa","commit_stats":{"total_commits":1464,"total_committers":57,"mean_commits":25.68421052631579,"dds":0.5887978142076502,"last_synced_commit":"f4ad76b974a2e8cc77f64d35d967234baf68cb79"},"previous_names":[],"tags_count":101,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fsanta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fsanta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fsanta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fsanta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/santa/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244313926,"owners_count":20433014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["allowlist","authorization","blocklist","endpoint-security","macos","santa","security","system-extension"],"created_at":"2024-08-01T06:02:12.056Z","updated_at":"2025-12-16T23:20:59.626Z","avatar_url":"https://github.com/google.png","language":"Objective-C++","readme":"# Santa\n\n\u003e [!NOTE]\n\u003e **As of 2025, Santa is no longer maintained by Google.**  We encourage\n\u003e existing users to migrate to an actively maintained fork of Santa, such as\n\u003e https://github.com/northpolesec/santa.\n\n---\n\n[![license](https://img.shields.io/github/license/google/santa)](https://github.com/google/santa/blob/main/LICENSE)\n[![CI](https://github.com/google/santa/actions/workflows/ci.yml/badge.svg)](https://github.com/google/santa/actions/workflows/ci.yml)\n[![latest release](https://img.shields.io/github/v/release/google/santa.svg)](https://github.com/google/santa/releases/latest)\n[![latest release date](https://img.shields.io/github/release-date/google/santa.svg)](https://github.com/google/santa/releases/latest)\n[![downloads](https://img.shields.io/github/downloads/google/santa/latest/total)](https://github.com/google/santa/releases/latest)\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./docs/images/santa-sleigh-256.png\" height=\"128\" alt=\"Santa Icon\" /\u003e\n\u003c/p\u003e\n\nSanta is a binary and file access authorization system for macOS. It consists of a system\nextension that monitors for executions, a daemon that makes execution decisions\nbased on the contents of a local database, a GUI agent that notifies the user in\ncase of a block decision and a command-line utility for managing the system and\nsynchronizing the database with a server.\n\nIt is named Santa because it keeps track of binaries that are naughty or nice.\n\n# Docs\n\nThe Santa docs are stored in the\n[Docs](https://github.com/google/santa/blob/main/docs) directory and are published\nat https://santa.dev.\n\nThe docs include deployment options, details on how parts of Santa work and\ninstructions for developing Santa itself.\n\n# Get Help\n\nIf you have questions or otherwise need help getting started,\nthe [santa-dev](https://groups.google.com/forum/#!forum/santa-dev) group is a\ngreat place.\n\nIf you believe you have a bug, feel free to report [an\nissue](https://github.com/google/santa/issues) and we'll respond as soon as we\ncan.\n\nIf you believe you've found a vulnerability, please read the\n[security policy](https://github.com/google/santa/security/policy) for\ndisclosure reporting.\n\n# Features\n\n* Multiple modes: In the default MONITOR mode, all binaries except those marked\n  as blocked will be allowed to run, whilst being logged and recorded in\n  the events database. In LOCKDOWN mode, only listed binaries are allowed to\n  run.\n\n* Event logging: When the system extension is loaded, all binary launches are logged. When in either mode, all unknown or denied binaries are stored in the database to enable later aggregation.\n\n* Certificate-based rules, with override levels: Instead of relying on a\n  binary's hash (or 'fingerprint'), executables can be allowed/blocked by their\n  signing certificate. You can therefore allow/block all binaries by a\n  given publisher that were signed with that cert across version updates. A\n  binary can only be allowed by its certificate if its signature validates\n  correctly but a rule for a binary's fingerprint will override a decision for\n  a certificate; i.e. you can allowlist a certificate while blocking a binary\n  signed with that certificate, or vice-versa.\n\n* Path-based rules (via NSRegularExpression/ICU): This allows a similar feature\n  to that found in Managed Client (the precursor to configuration profiles,\n  which used the same implementation mechanism), Application Launch\n  Restrictions via the mcxalr binary. This implementation carries the added\n  benefit of being configurable via regex, and not relying on LaunchServices.\n  As detailed in the wiki, when evaluating rules this holds the lowest\n  precedence.\n\n* Failsafe cert rules: You cannot put in a deny rule that would block the\n  certificate used to sign launchd, a.k.a. pid 1, and therefore all components\n  used in macOS. The binaries in every OS update (and in some cases entire new\n  versions) are therefore automatically allowed. This does not affect binaries\n  from Apple's App Store, which use various certs that change regularly for\n  common apps. Likewise, you cannot block Santa itself, and Santa uses a\n  distinct separate cert than other Google apps.\n\n* Userland components validate each other: each of the userland components (the\n  daemon, the GUI agent and the command-line utility) communicate with each\n  other using XPC and check that their signing certificates are identical\n  before any communication is accepted.\n\n* Caching: allowed binaries are cached so the processing required to make a\n  request is only done if the binary isn't already cached.\n\n# Intentions and Expectations\n\nNo single system or process will stop *all* attacks, or provide 100% security.\nSanta is written with the intention of helping protect users from themselves.\nPeople often download malware and trust it, giving the malware credentials, or\nallowing unknown software to exfiltrate more data about your system. As a\ncentrally managed component, Santa can help stop the spread of malware among a\nlarge fleet of machines. Independently, Santa can aid in analyzing what is\nrunning on your computer.\n\nSanta is part of a defense-in-depth strategy, and you should continue to\nprotect hosts in whatever other ways you see fit.\n\n# Security and Performance-Related Features\n\n# Known Issues\n\n* Santa only blocks execution (execve and variants), it doesn't protect against\n  dynamic libraries loaded with dlopen, libraries on disk that have been\n  replaced, or libraries loaded using `DYLD_INSERT_LIBRARIES`.\n\n* Scripts: Santa is currently written to ignore any execution that isn't a\n  binary. This is because after weighing the administration cost vs the\n  benefit, we found it wasn't worthwhile. Additionally, a number of\n  applications make use of temporary generated scripts, which we can't possibly\n  allowlist and not doing so would cause problems. We're happy to revisit this\n  (or at least make it an option) if it would be useful to others.\n\n# Sync Servers\n\n* The `santactl` command-line client includes a flag to synchronize with a\n  management server, which uploads events that have occurred on the machine and\n  downloads new rules. There are several open-source servers you can sync with:\n\n    * [Moroz](https://github.com/groob/moroz) - A simple golang server that\n      serves hardcoded rules from simple configuration files.\n    * [Rudolph](https://github.com/airbnb/rudolph) - An AWS-based serverless sync service\n      primarily built on API GW, DynamoDB, and Lambda components to reduce operational burden.\n      Rudolph is designed to be fast, easy-to-use, and cost-efficient.\n    * [Zentral](https://github.com/zentralopensource/zentral/wiki) - A\n      centralized service that pulls data from multiple sources and deploy\n      configurations to multiple services.\n    * [Zercurity](https://github.com/zercurity/zercurity) - A dockerized service\n      for managing and monitoring applications across a large fleet utilizing\n      Santa + Osquery.\n\n* Alternatively, `santactl` can configure rules locally (without a sync\n  server).\n\n# Screenshots\n\nA tool like Santa doesn't really lend itself to screenshots, so here's a video\ninstead.\n\n\n\u003cp align=\"center\"\u003e \u003cimg src=\"./docs/images/santa-block.gif\" alt=\"Santa Block Video\" /\u003e \u003c/p\u003e\n\n# Contributing\nPatches to this project are very much welcome. Please see the\n[CONTRIBUTING](https://santa.dev/development/contributing) doc.\n\n# Disclaimer\nThis is **not** an official Google product.\n","funding_links":[],"categories":["Objective-C++","Objective-C","macOS Security","Objective-C (6)","Build techniques","Objective-C  Stars 1000以内排名整理","Objective-C (33)","Complimentary software","Uncategorized","Security","基于macOS的防护","\u003ca id=\"1d9dec1320a5d774dc8e0e7604edfcd3\"\u003e\u003c/a\u003e工具-新添加的","macOS-based defenses"],"sub_categories":["Supply chain beyond libraries","Uncategorized","macOS 10.15 Catalina Setup","威胁狩猎","\u003ca id=\"8f1b9c5c2737493524809684b934d49a\"\u003e\u003c/a\u003e文章\u0026\u0026视频","Overlay and Virtual Private Networks (VPNs)"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fsanta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogle%2Fsanta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fsanta/lists"}