Santa est un système d'autorisation d'accès aux binaires et aux fichiers 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 basées sur le contenu d'une base de données locale, d'un agent GUI qui informe l'utilisateur en cas de décision de blocage et d'un utilitaire de ligne de commande pour gérer le système et synchroniser la base de données avec un serveur.
Il est nommé Père Noël car il garde une trace des binaires qui sont méchants ou gentils.
Les documents du Père Noël sont stockés dans le répertoire Docs et sont publiés sur https://santa.dev.
La documentation comprend des options de déploiement, des détails sur le fonctionnement de certaines parties du Père Noël et des instructions pour développer le Père Noël lui-même.
Si vous avez des questions ou avez besoin d'aide pour démarrer, le groupe santa-dev est un endroit idéal.
Si vous pensez avoir un bug, n'hésitez pas à signaler un problème et nous vous répondrons dès que possible.
Si vous pensez avoir trouvé une vulnérabilité, veuillez lire la politique de sécurité pour le rapport de divulgation.
Modes multiples : dans le mode MONITOR par défaut, tous les binaires, à l'exception de 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 des événements. En mode LOCKDOWN, seuls les binaires répertoriés sont autorisés à s'exécuter.
Journalisation des événements : lorsque l'extension système est chargée, tous les lancements binaires sont enregistrés. Dans l'un ou l'autre mode, 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 des certificats, avec niveaux de remplacement : au lieu de s'appuyer sur le hachage d'un binaire (ou « empreinte digitale »), 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 lors des mises à jour de version. Un binaire ne peut être autorisé par son certificat que si sa signature est correctement validée, mais une règle pour l'empreinte digitale d'un binaire prévaudra sur une décision pour un certificat ; c'est-à-dire que vous pouvez autoriser un certificat tout en bloquant un binaire signé avec ce certificat, ou vice versa.
Règles basées sur le chemin (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'application via le binaire mcxalr. Cette implémentation présente l'avantage supplémentaire d'être configurable via 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 de sécurité : vous ne pouvez pas insérer 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 de nouvelles 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 le Père Noël lui-même, et le Père Noël utilise un certificat distinct de celui des autres applications Google.
Les composants Userland se valident mutuellement : chacun des composants Userland (le démon, l'agent GUI et l'utilitaire de ligne de commande) communiquent entre eux à l'aide de 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, de sorte que le traitement requis pour effectuer une requête n'est effectué que si le binaire n'est pas déjà mis en cache.
Aucun système ou processus ne pourra arrêter toutes les attaques ni assurer une sécurité à 100 %. Le Père Noël a été écrit dans le but d'aider à protéger les utilisateurs d'eux-mêmes. Les gens téléchargent souvent des logiciels malveillants et leur font confiance, en donnant les informations d'identification du logiciel malveillant ou en permettant à un logiciel inconnu d'exfiltrer davantage de données sur votre système. En tant que composant géré de manière centralisée, Santa peut contribuer à stopper la propagation des logiciels malveillants parmi un vaste parc de machines. Indépendamment, le Père Noël peut vous aider à analyser ce qui s'exécute sur votre ordinateur.
Le Père Noël fait partie d'une stratégie de défense en profondeur et vous devez continuer à protéger vos hôtes de toutes les autres manières que vous jugez appropriées.
Le Père Noël bloque uniquement l'exécution (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 DYLD_INSERT_LIBRARIES
.
Scripts : Santa est actuellement écrit pour ignorer toute exécution qui n'est pas binaire. En effet, après avoir comparé les coûts administratifs et les avantages, nous avons constaté que cela n’en valait pas la peine. De plus, un certain nombre d'applications utilisent des scripts générés temporairement, que nous ne pouvons pas autoriser et que ne pas le faire entraînerait des problèmes. Nous sommes heureux de revoir cela (ou du moins d'en faire une option) si cela peut être utile à d'autres.
Le client de ligne de commande santactl
inclut un indicateur à synchroniser avec un serveur de gestion, qui télécharge les événements survenus sur la machine et télécharge les nouvelles règles. Il existe plusieurs serveurs open source avec lesquels vous pouvez synchroniser :
Alternativement, santactl
peut configurer les règles localement (sans serveur de synchronisation).
Un outil comme le Père Noël ne se prête pas vraiment aux captures d'écran, voici donc plutôt une vidéo.
Les correctifs de ce projet sont les bienvenus. Veuillez consulter le document CONTRIBUANT.
Ce n'est pas un produit Google officiel.