
Um sistema de autorização de acesso a binários e arquivos para macOS.
O Santa é um sistema de autorização de acesso a binários e arquivos para macOS. Ele é composto por uma extensão de sistema que monitora execuções e acessos a arquivos e toma decisões com base no conteúdo de um banco de dados local, um agente de interface gráfica que notifica o usuário em caso de decisão de bloqueio, um serviço em segundo plano para sincronizar a configuração com um servidor remoto e um utilitário de linha de comando para gerenciar o sistema.
Ele se chama Santa porque mantém o controle dos binários que são travessos ou bem-comportados.
A documentação do Santa está armazenada no diretório Docs e é publicada em https://northpole.dev.
A documentação inclui opções de implantação, detalhes sobre como as 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 canal #santa no slack do macadmins é um ótimo lugar para começar.
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.
Múltiplos modos: No modo MONITOR padrão, todos os binários, exceto aqueles marcados como bloqueados, poderão ser executados, sendo registrados e gravados no banco de dados de eventos. No modo LOCKDOWN, apenas os binários listados podem ser executados.
Registro de eventos: Quando a extensão do sistema é carregada, todas as execuções de binários são registradas. Em qualquer um dos modos, todos os binários desconhecidos ou negados são armazenados no banco de dados para permitir agregação posterior.
Regras baseadas em assinatura de código, com níveis de substituição: Em vez de depender do hash (ou 'impressão digital') de um binário, os executáveis podem ser permitidos/bloqueados pela assinatura de código (por meio de regras CDHash, Certificate, TeamID ou SigningID). Você pode, portanto, permitir/bloquear todos os binários assinados por um editor ou todas as versões de um binário assinado. As regras são aplicadas em ordem de mais específica para menos específica, o que permite permitir todos os binários de um determinado editor enquanto bloqueia um ID de assinatura ou binário específico (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 usava o mesmo mecanismo de implementação), Restrições de Lançamento de Aplicativos via 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 menor precedência.
Regras de certificado à prova de falhas: Você não pode criar 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 de todas as atualizações do sistema operacional (e em alguns casos versões inteiras novas) são, portanto, permitidos automaticamente. 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 próprio Santa.
Componentes de userland validam uns aos outros: cada um dos componentes de userland (o daemon, o agente de interface gráfica 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 que qualquer comunicação seja aceita.
Cache: os binários permitidos são armazenados em cache, de modo que o processamento necessário para fazer uma requisição só é feito se o binário ainda não estiver em cache.
Nenhum sistema ou processo isolado impedirá todos os ataques, nem 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, entregando 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 em uma grande frota de máquinas. De forma independente, 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 protegendo os hosts de todas as outras formas que achar adequadas.
O Santa bloqueia apenas a execução (execve e variantes); ele não protege
contra bibliotecas dinâmicas carregadas com dlopen, bibliotecas no disco que
foram substituídas ou bibliotecas carregadas usando DYLD_INSERT_LIBRARIES.
Outras partes do macOS geralmente protegem contra esses vetores, desde que o
SIP esteja ativado.
Scripts: o Santa atualmente é escrito para ignorar qualquer execução que não seja um binário. Isso porque, após ponderar o custo administrativo versus o benefício, descobrimos que não valia a pena. Além disso, vários aplicativos fazem uso de scripts temporários gerados dinamicamente, que não temos como colocar na lista de permitidos, e não fazê-lo causaria problemas. Ficaremos felizes em revisitar isso (ou pelo menos torná-lo uma opção) se for útil para outras pessoas.
O Santa pode sincronizar suas configurações e políticas com um servidor de gerenciamento, permitindo mudanças de configuração muito rápidas.
Existem vários servidores comerciais e de código aberto disponíveis:
Alternativamente, as regras podem ser configuradas localmente usando a chave
de configuração StaticRules
ou o comando santactl rule.
Uma ferramenta como o Santa não se presta muito a capturas de tela, então aqui está um vídeo.
Patches para este projeto são muito bem-vindos. Consulte o documento CONTRIBUTING.
A North Pole Security e o North Pole Security Santa não são afiliados ao Google.