O blog de segurança da FireAI

Por FireAI Security & Research Team · Publicado

Em que aplicações para Mac pode confiar? Assinatura, notarização, permissões e comportamento de rede

Em que aplicações para Mac pode confiar? Assinatura, notarização, permissões e comportamento de rede

Confiar numa aplicação num Mac não é uma decisão única de sim ou não. São quatro perguntas distintas, cada uma respondida por um mecanismo diferente: quem a construiu, se a Apple a verificou, a que é que pode aceder, e o que faz realmente quando está em execução. A Apple documenta as três primeiras em pormenor. A quarta é a que tem de observar por si próprio, e é a que apanha uma aplicação que passou nas três primeiras e depois correu mal.

App Store ou transferência directa

A página de suporte da Apple Abrir aplicações em segurança no Mac descreve a App Store como o local mais seguro para obter software, por duas razões concretas: a Apple analisa cada aplicação antes de a aceitar, e a Apple pode remover uma aplicação rapidamente se mais tarde for detectado um problema. As aplicações da App Store têm também de correr dentro da App Sandbox, que a página da Apple sobre Gatekeeper e protecção em tempo de execução descreve como um limite aos dados a que uma aplicação pode chegar, obrigando-a a usar as API do macOS para comunicar com outras aplicações.

Isto não torna suspeita toda e qualquer transferência directa. Uma grande parte do software legítimo para Mac é distribuída fora da loja porque a sandbox proíbe o que ele precisa de fazer (utilitários de disco, ferramentas de desenvolvimento, firewalls incluídas). A diferença é que, numa transferência directa, 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 construiu a aplicação, e uma análise de notarização.

Developer ID e notarização: o que provam

Um certificado Developer ID é emitido pela Apple a um programador inscrito no Apple Developer Program, e permite ao Gatekeeper confirmar que uma aplicação foi assinada por esse programador e não foi modificada desde então. É tudo o que uma assinatura prova: identidade e integridade. Nada diz sobre a intenção. Uma aplicação assinada pode continuar a ser uma má aplicação; a assinatura significa apenas que a Apple sabe de quem é o nome que ela traz e pode revogá-la.

A notarização é a segunda verificação. A documentação para programadores da Apple sobre notarizar software macOS antes da distribuição descreve-a como uma análise automatizada do software assinado com Developer ID, à procura de conteúdo hostil conhecido e de problemas de assinatura de código, após a qual a Apple emite um bilhete que o Gatekeeper consegue ler. A página de suporte da Apple é cuidadosa nas palavras: notarização significa que «a Apple verificou-a quanto a software malicioso e não foi detectado nenhum». É uma análise face ao que a Apple já conhece, não uma revisão do que a aplicação faz, e a Apple pode revogar uma notarização mais tarde se vier a saber mais.

O atributo de quarentena

O mecanismo que liga estas verificações a uma transferência específica é um atributo estendido no ficheiro, com.apple.quarantine, que o Safari e a maioria dos outros navegadores e aplicações de mensagens colocam em tudo o que guardam. Quando abre pela primeira vez um ficheiro com esse atributo, o Gatekeeper faz as suas verificações e pede a sua aprovação. A página da Apple sobre o Gatekeeper descreve a predefinição como a verificação de todo o software quanto a conteúdo malicioso conhecido na primeira vez que é aberto. Pode ver o atributo por si próprio com o comando do Terminal xattr -l num ficheiro transferido.

Se uma aplicação não estiver assinada ou não estiver notarizada, o macOS recusa-se a abri-la e oferece um caminho para contornar a recusa. A página de suporte da Apple Abrir uma aplicação para Mac de um programador desconhecido explica os passos e acrescenta depois um aviso que vale a pena citar em substância: contornar estas definições é a forma mais comum de um Mac ser infectado, e a Apple recomenda procurar outra aplicação em vez disso, mesmo quando o programador parece estabelecido. A regra prática decorre directamente daqui. Contornar deve ser um acto raro e deliberado, para software em que tem uma razão específica para confiar, nunca um reflexo.

Permissões: a que é que uma aplicação pode aceder

A terceira pergunta é a do âmbito. Desde o macOS 10.15, explica a página do Guia de Segurança da Plataforma Apple sobre o controlo do acesso das aplicações aos ficheiros, as aplicações têm de pedir antes de ler a Secretária, os Documentos, as Descargas, o iCloud Drive ou volumes de rede, e o acesso à câmara, ao microfone, à gravação do ecrã, à monitorização do teclado e ao Acesso total ao disco só é concedido através de pedidos explícitos ou de uma alteração manual em Definições do Sistema, Privacidade e Segurança. O sistema por detrás destes pedidos chama-se TCC (Transparency, Consent and Control), e o seu princípio, nas palavras da Apple, é que os utilizadores devem ter transparência, consentimento e controlo totais sobre o que as aplicações fazem com os seus dados.

As permissões são, por si só, um sinal de confiança. Um gestor da área de transferência que pede acesso de Acessibilidade tem uma razão. Uma aplicação de fundos de ecrã que pede Acesso total ao disco e Gravação do ecrã não tem. O desfasamento entre aquilo para que uma aplicação serve e aquilo que pede é muitas vezes visível antes de a aplicação ter feito o que quer que seja, e não custa nada recusar e ver se a aplicação continua a funcionar.

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

Assinatura, notarização e permissões são todas avaliadas antes ou no momento de um pedido. Nenhuma delas observa a aplicação ao longo do tempo, e nenhuma olha para a única actividade que transforma um problema de privacidade num problema de segurança: enviar dados para fora do Mac. Uma aplicação pode ser assinada por um programador real, notarizada pela Apple, ter apenas as permissões de que plausivelmente precisa, e mesmo assim enviar os seus contactos para um intermediário de análise de dados, consultar um ponto de rastreio de poucos em poucos minutos ou, depois de uma actualização de rotina substituir o seu código, começar a falar com um servidor que nunca antes tinha contactado.

Ler o comportamento de rede como sinal de confiança significa fazer algumas perguntas concretas sobre cada aplicação. Liga-se sequer à rede e, se sim, é isso de esperar para o que faz? Com que anfitriões fala, e são os do próprio programador, um serviço reconhecível, ou uma lista de domínios de publicidade e de análise? Usa ligações cifradas, ou sai alguma coisa em HTTP não cifrado? O seu comportamento muda depois de uma actualização? E liga-se a horas certas quando não a está a usar? Nenhuma destas exige perícia; exigem ver as ligações, o que o macOS não lhe mostra por predefinição.

É para isto que o FireAI serve. O seu mapa em directo mostra cada ligação que cada aplicação faz, com o destino, o país e a rede por detrás dela, e a sua análise Private AI, um modelo que corre no próprio dispositivo, avalia cada nova ligação de uma aplicação desconhecida com base na reputação do destino, em saber se o binário já foi visto antes, na porta e no protocolo, e em saber se a ligação é cifrada, explicando depois a sua razão em linguagem simples. A sua protecção de dados não cifrados impede que números de cartão, palavras-passe e chaves de API saiam em HTTP não cifrado, independentemente da aplicação que os envia. Cada decisão da IA torna-se uma regra visível que pode anular, e as regras podem ser escritas em inglês ou francês corrente («bloquear o Microsoft Teams») ou exportadas como ficheiro de texto.

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

Duas escolhas de concepção do FireAI vêm directamente do modelo da Apple descrito acima. Primeiro, os seus modos de segurança mais rigorosos, Paranóico e Sob ataque, impedem por completo as aplicações não assinadas de se ligarem, juntamente com a telemetria e os rastreadores, o que transforma a caixa de diálogo «tem a certeza?» da Apple numa predefinição ao nível da rede: um binário não assinado pode correr se insistiu, mas não pode telefonar a ninguém. Segundo, as regras por aplicação do FireAI seguem a assinatura de código da aplicação e não o seu nome ou caminho. Um impostor chamado «Slack.app» na pasta Descargas não herda a regra que escreveu para o verdadeiro Slack, porque a assinatura não corresponde; e quando a verdadeira aplicação é actualizada, a regra mantém-se, porque corresponde. É a mesma identidade que a Apple usa para o Gatekeeper, aplicada à rede.

O que isto não faz

O FireAI não analisa os ficheiros de uma aplicação, não inspecciona o seu código ou a sua memória, e não é um antivírus; não lhe pode dizer que uma transferência é hostil antes de a executar. Se autorizou uma aplicação, o tráfego que se esconde dentro dessa aplicação herda a sua permissão. O tráfego cifrado para um destino de boa reputação é avaliado pelo destino e pelo padrão, não pelo conteúdo. E nenhuma firewall substitui as três primeiras verificações: a decisão de confiança mais barata e mais fiável num Mac continua a ser preferir a App Store ou uma transferência assinada com Developer ID e notarizada, recusar a caixa de diálogo para contornar a recusa, e negar as permissões de que uma aplicação não tem nenhuma razão visível para precisar.

Juntas, as quatro perguntas dão uma definição prática de aplicação para Mac de confiança: assinada por um programador conhecido, notarizada pela Apple, a pedir apenas aquilo de que plausivelmente precisa, e a falar apenas com servidores que fazem sentido para o que faz. A Apple deixa-o verificar as três primeiras no momento da instalação. A quarta só a consegue ver observando, e é por isso que é a que vale a pena acrescentar.

O papel do FireAI e da HisnLabs

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

O FireAI é o produto da HisnLabs: uma firewall com IA que corre diretamente no seu Mac. Mostra, em linguagem clara, cada ligação que as suas aplicações fazem e deixa-o decidir o que sai do seu Mac — a IA funciona localmente, pelo que o seu tráfego nunca é enviado para nós nem para mais ninguém. A equipa de investigação em segurança da HisnLabs é quem mantém essas decisões fiáveis: cataloga que domínios são simples telemetria e quais são um serviço real, acompanha o país e a rede por detrás de uma ligação e treina o modelo local (a funcionalidade Autopilot) com padrões de tráfego reais, sem que nada disso saia do seu Mac.

Pode ler as decisões técnicas por detrás dele, ou experimentar o FireAI durante 17 dias, em FireAI, da HisnLabs.

Fontes