O blog de segurança da FireAI

Por FireAI Security & Research Team · Publicado

Em quais aplicativos de Mac você pode confiar? Assinatura, notarização, permissões e comportamento de rede

Em quais aplicativos de Mac você pode confiar? Assinatura, notarização, permissões e comportamento de rede

Confiar em um aplicativo no Mac não é uma decisão única de sim ou não. São quatro perguntas separadas, cada uma respondida por um mecanismo diferente: quem o criou, se a Apple o verificou, o que ele tem permissão para acessar, e o que ele realmente faz depois de estar rodando. A Apple documenta as três primeiras em detalhe. A quarta é a que você precisa observar por conta própria, e é a que pega um aplicativo que passou nas três primeiras e depois saiu dos trilhos.

App Store ou download direto

A página de suporte da Apple Abrir aplicativos com segurança no Mac chama a App Store de o lugar mais seguro para obter software, por duas razões concretas: a Apple analisa cada aplicativo antes de aceitá-lo, e a Apple pode remover um aplicativo rapidamente se um problema for encontrado depois. Os aplicativos da App Store também precisam rodar dentro do App Sandbox, que a página da Apple sobre Gatekeeper e proteção em tempo de execução descreve como um limite aos dados que um aplicativo pode alcançar, obrigando-o a usar as APIs do macOS para conversar com outros aplicativos.

Isso não torna suspeito todo download direto. Uma grande quantidade de software legítimo para Mac é distribuída fora da loja porque o sandbox proíbe o que ele precisa fazer (utilitários de disco, ferramentas de desenvolvimento, firewalls inclusive). A diferença é que, em um download direto, a etapa de análise é substituída por duas verificações mais leves que a Apple descreve nas mesmas páginas: uma assinatura que diz quem criou o aplicativo, e uma varredura de notarização.

Developer ID e notarização: o que elas provam

Um certificado Developer ID é emitido pela Apple a um desenvolvedor inscrito no Apple Developer Program, e permite ao Gatekeeper confirmar que um aplicativo foi assinado por aquele desenvolvedor e não foi modificado desde então. É tudo o que uma assinatura prova: identidade e integridade. Ela não diz nada sobre intenção. Um aplicativo assinado ainda pode ser um aplicativo ruim; a assinatura só significa que a Apple sabe de quem é o nome que está nele e pode revogá-la.

A notarização é a segunda verificação. A documentação para desenvolvedores da Apple sobre notarizar software para macOS antes da distribuição a descreve como uma varredura automatizada do software assinado com Developer ID em busca de conteúdo hostil conhecido e de problemas de assinatura de código, após a qual a Apple emite um tíquete que o Gatekeeper consegue ler. A página de suporte da Apple é cuidadosa com as palavras: notarização significa que “a Apple o verificou em busca de software malicioso e nenhum foi detectado”. É uma varredura contra o que a Apple já conhece, não uma revisão do que o aplicativo faz, e a Apple pode revogar uma notarização mais tarde se descobrir algo novo.

O atributo de quarentena

O mecanismo que liga essas verificações a um download específico é um atributo estendido no arquivo, com.apple.quarantine, que o Safari e a maioria dos outros navegadores e aplicativos de mensagens colocam em tudo o que salvam. Quando você abre pela primeira vez um arquivo com esse atributo, o Gatekeeper faz suas verificações e pede sua aprovação. A página da Apple sobre o Gatekeeper descreve o padrão como a verificação de todo software em busca de conteúdo malicioso conhecido na primeira vez em que ele é aberto. Você mesmo pode ver o atributo com o comando do Terminal xattr -l em um arquivo baixado.

Se um aplicativo não está assinado ou não está notarizado, o macOS se recusa a abri-lo e oferece um caminho para forçar a abertura. A página de suporte da Apple Abrir um aplicativo de Mac de um desenvolvedor desconhecido explica os passos e depois acrescenta um aviso que vale citar em essência: forçar essas configurações é a forma mais comum de um Mac ser infectado, e a Apple recomenda procurar outro aplicativo em vez disso, mesmo quando o desenvolvedor parece estabelecido. A regra prática vem direto daí. Forçar a abertura deve ser um ato raro e deliberado, para software em que você tem um motivo específico para confiar, nunca um reflexo.

Permissões: o que um aplicativo pode acessar

A terceira pergunta é sobre alcance. Desde o macOS 10.15, explica a página do Guia de Segurança da Plataforma Apple sobre o controle do acesso de aplicativos a arquivos, os aplicativos precisam pedir antes de ler sua Mesa, Documentos, Downloads, iCloud Drive ou volumes de rede, e o acesso à câmera, ao microfone, à gravação de tela, ao monitoramento do teclado e ao Acesso Total ao Disco só é concedido por meio de solicitações explícitas ou de uma mudança manual em Ajustes do Sistema, Privacidade e Segurança. O sistema por trás dessas solicitações se chama TCC (Transparency, Consent and Control), e seu princípio, nas palavras da Apple, é que os usuários devem ter total transparência, consentimento e controle sobre o que os aplicativos fazem com seus dados.

As permissões são, por si só, um sinal de confiança. Um gerenciador de área de transferência que pede acesso de Acessibilidade tem um motivo. Um aplicativo de papéis de parede que pede Acesso Total ao Disco e Gravação de Tela não tem. O descompasso entre a finalidade de um aplicativo e o que ele pede costuma ficar visível antes de o aplicativo ter feito qualquer coisa, e não custa nada recusar e ver se o aplicativo continua funcionando.

Comportamento de rede: a pergunta que as outras verificações não conseguem responder

Assinatura, notarização e permissões são todas avaliadas antes ou no momento de uma solicitação. Nenhuma delas observa o aplicativo ao longo do tempo, e nenhuma olha para a única atividade que transforma um problema de privacidade em um problema de segurança: enviar dados para fora do Mac. Um aplicativo pode ser assinado por um desenvolvedor real, notarizado pela Apple, receber apenas as permissões de que plausivelmente precisa, e ainda assim enviar seus contatos para um intermediário de analytics, consultar um endpoint de rastreamento a cada poucos minutos ou, depois que uma atualização de rotina substitui seu código, começar a conversar com um servidor que ele nunca contatou antes.

Ler o comportamento de rede como sinal de confiança significa fazer algumas perguntas concretas sobre cada aplicativo. Ele se conecta à rede e, se sim, isso é esperado para o que ele faz? Com quais hosts ele conversa, e eles são do próprio desenvolvedor, um serviço reconhecível, ou uma lista de domínios de publicidade e analytics? Ele usa conexões criptografadas, ou algo sai em HTTP sem criptografia? O comportamento muda depois de uma atualização? E ele se conecta em horários programados quando você não está usando? Nenhuma dessas perguntas exige conhecimento especializado; elas exigem ver as conexões, o que o macOS não mostra a você por padrão.

É para isso que o FireAI existe. Seu mapa ao vivo mostra cada conexão que cada aplicativo faz, com o destino, o país e a rede por trás dela, e sua análise Private AI, um modelo que roda no próprio dispositivo, julga cada nova conexão de um aplicativo desconhecido usando a reputação do destino, se o binário já foi visto antes, porta e protocolo, e se o link é criptografado, e então explica o motivo em linguagem simples. Sua proteção de dados não criptografados impede que números de cartão, senhas e chaves de API saiam em HTTP sem criptografia, independentemente de qual aplicativo esteja enviando. Cada decisão da IA vira uma regra visível que você pode desfazer, e as regras podem ser escritas em inglês ou francês simples (“bloquear o Microsoft Teams”) ou exportadas como arquivo de texto.

Bloquear o que não está assinado, e seguir a assinatura

Duas escolhas de design do FireAI vêm direto do modelo da Apple descrito acima. Primeiro, seus modos de segurança mais rígidos, Paranoico e Sob ataque, impedem completamente que aplicativos não assinados se conectem, junto com telemetria e rastreadores, o que transforma a caixa de diálogo “tem certeza?” da Apple em um padrão no nível da rede: um binário não assinado pode rodar se você insistiu, mas não pode ligar para ninguém. Segundo, as regras por aplicativo do FireAI seguem a assinatura de código do aplicativo, e não seu nome ou caminho. Um impostor chamado “Slack.app” na pasta Downloads não herda a regra que você escreveu para o Slack verdadeiro, porque a assinatura não bate; e quando o aplicativo verdadeiro é atualizado, a regra é mantida, porque bate. É a mesma identidade que a Apple usa para o Gatekeeper, aplicada à rede.

O que isso não faz

O FireAI não faz varredura nos arquivos de um aplicativo, não inspeciona seu código ou sua memória, e não é um antivírus; ele não consegue dizer a você que um download é hostil antes de você executá-lo. Se você permitiu um aplicativo, o tráfego que se esconde dentro dele herda essa permissão. O tráfego criptografado para um destino de boa reputação é julgado pelo destino e pelo padrão, não pelo conteúdo. E nenhum firewall substitui as três primeiras verificações: a decisão de confiança mais barata e mais confiável em um Mac continua sendo preferir a App Store ou um download assinado com Developer ID e notarizado, recusar a caixa de diálogo para forçar a abertura, e negar permissões que um aplicativo não tem nenhum motivo visível para precisar.

Juntas, as quatro perguntas dão uma definição prática de aplicativo de Mac confiável: assinado por um desenvolvedor conhecido, notarizado pela Apple, pedindo apenas o que plausivelmente precisa, e conversando apenas com servidores que fazem sentido para o que ele faz. A Apple deixa você verificar as três primeiras na hora da instalação. A quarta você só consegue ver observando, e é por isso que ela é a que vale a pena acrescentar.

Onde FireAI e HisnLabs entram nessa história

A Apple responde às três primeiras perguntas de confiança na hora da instalação; o FireAI existe para a quarta, mostrando o que cada aplicativo realmente faz na rede e vinculando cada regra à mesma assinatura de código em que o Gatekeeper já se baseia.

O FireAI é o produto da HisnLabs: um firewall com IA que roda direto no seu Mac. Ele mostra, em linguagem simples, cada conexão que seus aplicativos fazem e deixa você decidir o que sai do seu Mac — a IA roda localmente, então seu tráfego nunca é enviado para nós nem para ninguém. A equipe de pesquisa em segurança da HisnLabs é quem mantém essas decisões confiáveis: cataloga quais domínios são telemetria comum e quais são um serviço de verdade, rastreia o país e a rede por trás de uma conexão e treina o modelo local (o recurso Autopilot) com padrões reais de tráfego, sem que nada disso saia do seu Mac.

Você pode ler as decisões técnicas por trás dele, ou testar o FireAI por 17 dias, em FireAI, da HisnLabs.

Fontes