Santa é um sistema de autorização de acesso binário e de arquivos para macOS. Consiste em uma extensão de 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.
É chamado de Papai Noel porque monitora binários que são travessos ou legais.
Os documentos do Papai Noel são armazenados no diretório Docs e publicados em https://santa.dev.
Os documentos incluem opções de implantação, detalhes sobre como funcionam as partes do Papai Noel e instruções para desenvolver o próprio Papai Noel.
Se você tiver dúvidas ou precisar de ajuda para começar, o grupo santa-dev é um ótimo lugar.
Se você acredita que tem um bug, sinta-se à vontade para relatar um problema e responderemos assim que possível.
Se você acredita ter encontrado uma vulnerabilidade, leia a política de segurança para relatórios de divulgação.
Modos múltiplos: No modo MONITOR padrão, todos os binários, exceto aqueles marcados como bloqueados, poderão ser executados, enquanto são registrados e registrados no banco de dados de eventos. No modo LOCKDOWN, apenas os binários listados podem ser executados.
Log de eventos: quando a extensão do sistema é carregada, todas as inicializações binárias são registradas. Quando 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 de um hash (ou 'impressão digital') de um binário, os executáveis podem ser permitidos/bloqueados por seu certificado de assinatura. Portanto, você pode permitir/bloquear todos os binários de um determinado editor que foram assinados com esse certificado nas atualizações de versão. Um binário só pode ser permitido pelo seu certificado se a sua assinatura for validada corretamente, mas uma regra para a impressão digital de um binário substituirá uma decisão para um certificado; ou seja, você pode colocar um certificado na lista de permissões enquanto bloqueia um binário assinado com esse certificado ou vice-versa.
Regras baseadas em caminho (via NSRegularExpression/ICU): Isso permite um recurso semelhante ao encontrado no Managed Client (o precursor dos perfis de configuração, que usavam o mesmo mecanismo de implementação), Restrições de inicialização de aplicativos por meio do binário mcxalr. Esta implementação traz o benefício adicional de ser configurável via regex e não depender de LaunchServices. Conforme detalhado no wiki, ao avaliar regras, esta tem a precedência mais baixa.
Regras de certificado à prova de falhas: você não pode definir uma regra de negação que bloqueie 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 operacional (e, em alguns casos, novas versões inteiras) são, portanto, automaticamente permitidos. Isso não afeta os 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 Papai Noel, e o Papai Noel usa um certificado separado e distinto de outros aplicativos do Google.
Os componentes da área de usuário validam uns aos outros: cada um dos componentes da área de usuário (o daemon, o agente GUI e o utilitário de linha de comando) se comunicam entre si usando XPC e verificam se seus certificados de assinatura são idênticos antes de qualquer comunicação ser aceita.
Cache: os binários permitidos são armazenados em cache, portanto o processamento necessário para fazer uma solicitação só é feito se o binário ainda não estiver armazenado em cache.
Nenhum sistema ou processo irá impedir todos os ataques ou fornecer 100% de segurança. O Papai Noel foi escrito com a intenção de ajudar a proteger os usuários deles mesmos. Muitas vezes as pessoas baixam malware e confiam nele, fornecendo credenciais ao malware ou permitindo que software desconhecido exfiltre mais dados sobre o 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. De forma independente, o Papai Noel pode auxiliar na análise do que está rodando no seu computador.
O Papai Noel faz parte de uma estratégia de defesa profunda, e você deve continuar a proteger os anfitriões de todas as outras maneiras que achar 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 Papai Noel foi escrito para ignorar qualquer execução que não seja binária. Isto porque depois de pesar o custo administrativo versus o benefício, descobrimos que não valia a pena. Além disso, vários aplicativos fazem uso de scripts gerados temporariamente, que não podemos permitir e não fazer isso causaria problemas. Ficaremos felizes em revisitar isso (ou pelo menos torná-lo uma opção) se for útil para outras pessoas.
O cliente de linha de comando santactl
inclui um sinalizador para sincronizar com um servidor de gerenciamento, que carrega 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 Papai Noel não se presta a capturas de tela, então aqui está um vídeo.
Patches para este projeto são muito bem-vindos. Por favor, consulte o documento CONTRIBUINDO.
Este não é um produto oficial do Google.