
Um sistema de autorização e monitoramento de binários para macOS
[!NOTE] A partir de 2025, o Santa não é mais mantido pelo Google. Incentivamos os usuários existentes a migrar para um fork do Santa mantido ativamente, como https://github.com/northpolesec/santa.
Santa é um sistema de autorização de acesso a binários e arquivos para macOS. Consiste em uma extensão do sistema que monitora execuções, um daemon que toma decisões de execução com base no conteúdo de um banco de dados local, um agente GUI que notifica o usuário em caso de decisão de bloqueio e um utilitário de linha de comando para gerenciar o sistema e sincronizar o banco de dados com um servidor.
Ele é chamado de Santa porque mantém registro de binários que são travessos ou bonzinhos.
Os documentos do Santa estão armazenados no diretório Docs e são publicados em https://santa.dev.
Os documentos incluem opções de implantação, detalhes sobre como partes do Santa funcionam e instruções para desenvolver o próprio Santa.
Se você tiver dúvidas ou precisar de ajuda para começar, o grupo santa-dev é um ótimo lugar.
Se você acredita que encontrou um bug, sinta-se à vontade para relatar um problema e responderemos o mais rápido possível.
Se você acredita que encontrou uma vulnerabilidade, leia a política de segurança para relatar a divulgação.
Vários modos: No modo MONITOR padrão, todos os binários, exceto aqueles marcados como bloqueados, podem ser executados, enquanto são registrados e armazenados no banco de dados de eventos. No modo LOCKDOWN, apenas binários listados podem ser executados.
Registro de eventos: Quando a extensão do sistema é carregada, todas as inicializações de binários são registradas. Em qualquer modo, todos os binários desconhecidos ou negados são armazenados no banco de dados para permitir agregação posterior.
Regras baseadas em certificados, com níveis de substituição: Em vez de depender do hash (ou 'impressão digital') de um binário, executáveis podem ser permitidos/bloqueados pelo seu certificado de assinatura. Você pode, portanto, permitir/bloquear todos os binários de um determinado editor que foram assinados com esse certificado em todas as versões. Um binário só pode ser permitido pelo seu certificado se sua assinatura validar corretamente, mas uma regra para a impressão digital de um binário substituirá uma decisão para um certificado; ou seja, você pode permitir um certificado enquanto bloqueia um binário assinado com esse certificado, ou vice-versa.
Regras baseadas em caminho (via NSRegularExpression/ICU): Isso oferece um recurso semelhante ao encontrado no Managed Client (o precursor dos perfis de configuração, que usava o mesmo mecanismo de implementação), Restrições de Lançamento de Aplicativos através do binário mcxalr. Esta implementação traz o benefício adicional de ser configurável via regex, e não depender do LaunchServices. Conforme detalhado na wiki, ao avaliar regras, isso tem a precedência mais baixa.
Regras de certificado à prova de falhas: Você não pode colocar uma regra de negação que bloquearia o certificado usado para assinar o launchd, também conhecido como pid 1, e portanto todos os componentes usados no macOS. Os binários em cada atualização do sistema (e em alguns casos versões inteiras novas) são automaticamente permitidos. Isso não afeta binários da App Store da Apple, que usam vários certificados que mudam regularmente para aplicativos comuns. Da mesma forma, você não pode bloquear o próprio Santa, e o Santa usa um certificado separado e distinto de outros aplicativos do Google.
Componentes do espaço do usuário validam uns aos outros: cada um dos componentes do espaço do usuário (o daemon, o agente GUI e o utilitário de linha de comando) comunicam-se entre si usando XPC e verificam se seus certificados de assinatura são idênticos antes que qualquer comunicação seja aceita.
Cache: binários permitidos são armazenados em cache para que o processamento necessário para fazer uma requisição seja feito apenas se o binário ainda não estiver em cache.
Nenhum sistema ou processo único impedirá todos os ataques, ou fornecerá 100% de segurança. O Santa foi escrito com a intenção de ajudar a proteger os usuários de si mesmos. As pessoas frequentemente baixam malware e confiam nele, fornecendo credenciais ao malware, ou permitindo que software desconhecido exfiltre mais dados do seu sistema. Como um componente gerenciado centralmente, o Santa pode ajudar a impedir a propagação de malware entre uma grande frota de máquinas. Independentemente, o Santa pode auxiliar na análise do que está sendo executado no seu computador.
O Santa faz parte de uma estratégia de defesa em profundidade, e você deve continuar a proteger as máquinas de todas as outras formas que considerar adequadas.
O Santa bloqueia apenas a execução (execve e variantes), não protege contra
bibliotecas dinâmicas carregadas com dlopen, bibliotecas em disco que foram
substituídas, ou bibliotecas carregadas usando DYLD_INSERT_LIBRARIES.
Scripts: Atualmente, o Santa é programado para ignorar qualquer execução que não seja um binário. Isso porque, após pesar o custo administrativo versus o benefício, concluímos que não valia a pena. Além disso, vários aplicativos fazem uso de scripts temporários gerados, que não podemos de forma alguma colocar na lista de permissões, e não fazer isso causaria problemas. Estamos felizes em reavaliar isso (ou pelo menos torná-lo uma opção) se for útil para outros.
O cliente de linha de comando santactl inclui uma flag para sincronizar com um
servidor de gerenciamento, que faz upload de eventos que ocorreram na máquina e
baixa novas regras. Existem vários servidores de código aberto com os quais você pode
sincronizar:
Alternativamente, santactl pode configurar regras localmente (sem um servidor
de sincronização).
Uma ferramenta como o Santa não se presta muito a capturas de tela, então aqui está um vídeo no lugar.
Contribuições para este projeto são muito bem-vindas. Consulte o documento CONTRIBUTING.
Este não é um produto oficial do Google.