
Un système d'autorisation et de surveillance binaire pour macOS
[!NOTE] À partir de 2025, Santa n'est plus maintenu par Google. Nous encourageons les utilisateurs existants à migrer vers un fork activement maintenu de Santa, tel que https://github.com/northpolesec/santa.
Santa est un système d'autorisation d'accès aux fichiers et aux binaires pour macOS. Il se compose d'une extension système qui surveille les exécutions, d'un démon qui prend des décisions d'exécution en fonction du contenu d'une base de données locale, d'un agent GUI qui notifie l'utilisateur en cas de blocage et d'un utilitaire en ligne de commande pour gérer le système et synchroniser la base de données avec un serveur.
Il est nommé Santa car il suit les binaires qui sont sages ou méchants.
La documentation de Santa est stockée dans le répertoire Docs et est publiée sur https://santa.dev.
La documentation comprend les options de déploiement, des détails sur le fonctionnement de certaines parties de Santa et des instructions pour développer Santa lui-même.
Si vous avez des questions ou si vous avez besoin d'aide pour démarrer, le groupe santa-dev est un excellent endroit.
Si vous pensez avoir trouvé un bug, n'hésitez pas à signaler un problème et nous répondrons dès que possible.
Si vous pensez avoir trouvé une vulnérabilité, veuillez lire la politique de sécurité pour le signalement des divulgations.
Plusieurs modes : En mode MONITEUR par défaut, tous les binaires sauf ceux marqués comme bloqués seront autorisés à s'exécuter, tout en étant journalisés et enregistrés dans la base de données d'événements. En mode VERROUILLÉ, seuls les binaires listés sont autorisés à s'exécuter.
Journalisation des événements : Lorsque l'extension système est chargée, tous les lancements de binaires sont journalisés. Dans les deux modes, tous les binaires inconnus ou refusés sont stockés dans la base de données pour permettre une agrégation ultérieure.
Règles basées sur les certificats, avec niveaux de priorité : Au lieu de se baser sur le hachage (ou 'empreinte') d'un binaire, les exécutables peuvent être autorisés/bloqués par leur certificat de signature. Vous pouvez donc autoriser/bloquer tous les binaires d'un éditeur donné qui ont été signés avec ce certificat, y compris lors des mises à jour de version. Un binaire ne peut être autorisé par son certificat que si sa signature est valide, mais une règle basée sur l'empreinte d'un binaire remplacera une décision basée sur un certificat ; c'est-à-dire que vous pouvez mettre sur liste blanche un certificat tout en bloquant un binaire signé avec ce certificat, ou vice versa.
Règles basées sur les chemins (via NSRegularExpression/ICU) : Cela permet une fonctionnalité similaire à celle trouvée dans Managed Client (le précurseur des profils de configuration, qui utilisait le même mécanisme d'implémentation), les restrictions de lancement d'applications via le binaire mcxalr. Cette implémentation apporte l'avantage supplémentaire d'être configurable par regex, et de ne pas dépendre de LaunchServices. Comme détaillé dans le wiki, lors de l'évaluation des règles, cela a la priorité la plus basse.
Règles de certificat sécurisées : Vous ne pouvez pas créer de règle de refus qui bloquerait le certificat utilisé pour signer launchd, alias pid 1, et donc tous les composants utilisés dans macOS. Les binaires de chaque mise à jour du système d'exploitation (et dans certains cas, des versions entières) sont donc automatiquement autorisés. Cela n'affecte pas les binaires de l'App Store d'Apple, qui utilisent divers certificats qui changent régulièrement pour les applications courantes. De même, vous ne pouvez pas bloquer Santa lui-même, et Santa utilise un certificat distinct différent des autres applications Google.
Les composants en espace utilisateur se valident mutuellement : chacun des composants en espace utilisateur (le démon, l'agent GUI et l'utilitaire en ligne de commande) communiquent entre eux via XPC et vérifient que leurs certificats de signature sont identiques avant que toute communication ne soit acceptée.
Mise en cache : les binaires autorisés sont mis en cache afin que le traitement nécessaire pour effectuer une requête ne soit effectué que si le binaire n'est pas déjà dans le cache.
Aucun système ou processus unique n'arrêtera toutes les attaques, ni ne fournira une sécurité à 100 %. Santa a été écrit avec l'intention d'aider à protéger les utilisateurs contre eux-mêmes. Les gens téléchargent souvent des logiciels malveillants et leur font confiance, donnant ainsi les identifiants au logiciel malveillant, ou permettant à des logiciels inconnus d'exfiltrer davantage de données sur votre système. En tant que composant géré de manière centralisée, Santa peut aider à arrêter la propagation des logiciels malveillants au sein d'un grand parc de machines. Indépendamment, Santa peut aider à analyser ce qui s'exécute sur votre ordinateur.
Santa fait partie d'une stratégie de défense en profondeur, et vous devez continuer à protéger les hôtes par tous les autres moyens que vous jugez appropriés.
Santa ne bloque que les exécutions (execve et variantes), il ne protège pas contre
les bibliothèques dynamiques chargées avec dlopen, les bibliothèques sur disque qui ont été
remplacées, ou les bibliothèques chargées à l'aide de DYLD_INSERT_LIBRARIES.
Scripts : Santa ignore actuellement toute exécution qui n'est pas un binaire. Cela parce qu'après avoir pesé le coût d'administration par rapport au bénéfice, nous avons estimé que cela n'en valait pas la peine. De plus, un certain nombre d'applications utilisent des scripts temporaires générés, que nous ne pouvons pas mettre sur liste blanche et ne pas le faire causerait des problèmes. Nous sommes heureux de revoir cette décision (ou du moins d'en faire une option) si cela s'avère utile pour d'autres.
Le client en ligne de commande santactl inclut un drapeau pour se synchroniser avec un
serveur de gestion, qui télécharge les événements survenus sur la machine et
télécharge de nouvelles règles. Il existe plusieurs serveurs open source avec lesquels vous pouvez synchroniser :
Alternativement, santactl peut configurer des règles localement (sans serveur de
synchronisation).
Un outil comme Santa ne se prête pas vraiment aux captures d'écran, voici donc une vidéo à la place.
Les correctifs pour ce projet sont les bienvenus. Veuillez consulter le document CONTRIBUTING.
Ce n'est pas un produit officiel de Google.