Em março de 2020, quando o mundo inteiro estava apenas começando a lidar com o trabalho remoto, uma vulnerabilidade foi descoberta no pacote de instalação do Zoom — uma das principais ferramentas de comunicação remota do mundo — permitindo a execução arbitrária de código nos computadores da Apple. O Zoom corrigiu a vulnerabilidade… mais ou menos.
Ao avançarmos no tempo, agora em agosto de 2022, uma brecha semelhante foi encontrada (em termos de consequências de localização e exploração). Este post examina este último problema de segurança, e explica por que vulnerabilidades nos softwares às vezes aparecem repetidamente no mesmo lugar. E, claro, encerramos esse texto com umas dicas para manter seus dispositivos protegidos.
Qual é a última vulnerabilidade?
O novo problema no aplicativo de videoconferência Zoom foi destacado pelo renomado pesquisador Patrick Wardle na DEF CON 30 no início de agosto deste ano. Resumindo, alguns bugs foram encontrados no sistema de atualização automática do Zoom para usuários Apple. Esses bugs, em teoria, possibilitaram a obtenção dos chamados direitos de superusuário, que permitem que um suposto invasor faça o que quiser no computador da vítima.
Para explorar a vulnerabilidade, no entanto, a pessoa mal-intencionada precisava ter acesso físico ao computador, ainda que sem direitos especiais. Mas este não é um cenário totalmente irrealista: por exemplo, o usuário pode ir almoçar e esquecer de bloquear o computador. Teoricamente, a vulnerabilidade também poderia ser explorada por malware, o que de outra forma não causaria danos graves ao usuário.
Mais detalhes, por favor.
Entrega oportuna e fácil instalação de atualizações são requisitos importantes para qualquer software nos dias de hoje. Idealmente, as correções de bugs devem ser instaladas sem que o usuário perceba, mas isso nem sempre é possível. Para concluir uma atualização, muitas vezes você tem que reiniciar um programa, fazer login ou até mesmo reiniciar.
Todos nós ficamos irritados com mensagens pop-up nos lembrando de atualizar um programa, sistema operacional, smartphone ou firmware de tablet. Mas é vital fazê-lo: atualizações corrigem brechas de segurança que poderiam ser usadas contra você. Em alguns casos particularmente graves, você precisa proteger softwares vulneráveis contra-ataques cibernéticos ativos imediatamente: um dia de atraso pode custar dados.
A maneira padrão de atualizar um aplicativo macOS não é diferente de sua primeira instalação: baixe a nova versão, execute o arquivo e digite uma senha de usuário. O Zoom tentou simplificar esse procedimento: o cliente acessa o servidor, baixa a nova versão e instala sozinho sem exigir que o usuário digite uma senha. Infelizmente, esse processo de comunicação com o servidor, após o download e a instalação da atualização, nem sempre é implementado corretamente.
Dez anos atrás, acessar servidores sem criptografia de dados era uma prática comum, permitindo que um invasor em potencial simplesmente substituísse o arquivo de atualização por malware. A criptografia foi implementada, tornando isso mais complicado, mas ainda é possível substituir o arquivo após o download quando ele já está salvo, mas ainda não está instalado.
Na versão mais recente (no final do ano passado, quando Patrick começou sua pesquisa) versão do Zoom, tudo parecia estar bem. O cliente acessava um servidor de atualização especial por meio de um canal seguro, baixava o arquivo, validava sua autenticidade (verificando se está assinado pelo certificado do fornecedor) e o instalava. Para instalação, o SW solicita direitos temporários de superusuários do sistema, mas de tal forma que o usuário não precise digitar uma senha.
A assinatura digital é importante. Afinal, o programa é baixado para o computador do usuário de algum canto da internet e executado com privilégios máximos. Então você precisa ter certeza que é o programa certo. E a simples falsificação do arquivo baixado não funcionará: como mostrado acima no slide da apresentação de Patrick, substituir o arquivo resulta em uma mensagem de erro — a atualização falsa não tem assinatura digital e é extremamente difícil falsificar um.
Infelizmente, o processo de validação de assinaturas digitais em si foi falho. Funcionou executando um utilitário do sistema. Isso exibiu os parâmetros de assinatura digital da atualização baixada, incluindo uma linha indicando qual empresa recebeu o certificado:
Zoom Video Communications, Inc. Autoridade de Certificação de ID do desenvolvedor Apple Root CA
A saída do utilitário foi processada, e se esta linha estava presente, a instalação começou. O problema era que o nome do arquivo também apareceu na saída. Assim, teoricamente, um invasor poderia criar uma atualização maliciosa chamada “Zoom Video Communications, Inc. Developer ID Certification Authority Apple Root CA.pkg” em vez do padrão “ZoomUpdate.pkg”.
E isso seria suficiente para enganar o procedimento de validação: a linha necessária está lá, então o arquivo deve ser legítimo – mesmo que seja o arquivo errado e as palavras mágicas estejam no lugar errado!
Ou seja, um ataque poderia ser assim: o procedimento de validação da atualização é iniciado (não difícil de fazer), então a atualização legítima é baixada, substituída por malware e renomeada de modo a enganar o processo de validação de certificados. O arquivo malicioso é executado com privilégios do sistema e o computador é hackeado!
Mas em 20 de dezembro de 2021, uma atualização do Zoom foi lançada, o que pôs fim a este vetor de ataque. A mudança foi simples: um renome de arquivo foi forçado após o download. Mas Patrick Wardle foi capaz de modificar o ataque: se o Zoom está seguro desde 5.9.0, e se “atualizarmos” o cliente para uma versão mais antiga? E funcionou: a atualização antiga tinha um certificado digital legítimo, e a versão não foi verificada durante a instalação.
Qual é o problema?
A pesquisa de Patrick Wardle mostra como é importante garantir a entrega e instalação de atualizações. Além disso, a história deste bug demonstra claramente como os desenvolvedores de software muitas vezes tentam resolver um problema por meio de alguma simples mudança sem entendê-lo em detalhes. No início (mesmo antes de Wardle relatar o problema ao Zoom), em dezembro de 2021, eles venceram uma versão mais simples de um ataque usando substituição trivial de arquivos e ignorando a validação do certificado.
Depois que a vulnerabilidade foi relatada, em abril de 2022, eles impossibilitaram a opção “downgrade” — a instalação de uma versão mais antiga e vulnerável do Zoom por meio do mecanismo de entrega de atualização padrão. Mas foi só em julho de 2022, seis meses após o relatório de Wardle, que o mecanismo de validação do certificado digital foi reparado.
Isso, no entanto, não resolveu completamente o problema. Claro, os dois métodos de ataque mais simples foram removidos do arsenal disponível para invasão: substituir o arquivo de atualização por malware e fazer downgrade para uma versão vulnerável.
Mas havia outro problema: um arquivo de atualização executado com privilégios de superusuário poderia ser modificado por qualquer pessoa com acesso ao computador! Um invasor só precisava encontrar uma maneira de colocar um arquivo malicioso no instalador zoom no momento certo: depois que a assinatura digital foi validada, mas antes da instalação começar. E funcionou.
Consequentemente, quando Patrick Wardle entregou suas descobertas no DEF CON 30 em agosto de 2022 — oito meses depois de relatar o problema ao Zoom — a vulnerabilidade ainda não estava completamente corrigida! Apenas em 17 de agosto, cinco dias após o relatório de Patrick, os desenvolvedores finalmente resolveram o problema. No entanto, esta declaração precisa ser verificada.
Hackers e desenvolvedores lutam de lados opostos
Ao ler o relatório de Patrick Wardle não podemos deixar de nos perguntar por que tem que ser assim. Como essas vulnerabilidades muitas vezes simples surgem em partes críticas do software, e por que, mesmo após um problema ser relatado, elas são fechadas apenas oito meses depois e na terceira tentativa? Não queremos acusar injustamente os desenvolvedores de incompetência.
Em todos os programas, bugs e erros aparecem de tempos em tempos. E se todos os programadores que cometerem erros forem alvos de julgamento, certamente o problema não resolverá o: eles são os únicos desenvolvedores que o mundo tem.
Talvez a razão seja que hackers de white-hat (que relatam suas descobertas para fornecedores) e cibercriminosos (que exploram bugs para atacar usuários e lucrar) têm prioridades diferentes em comparação com desenvolvedores de software. Quando você desenvolve um programa, é vital que ele realize centenas de tarefas diferentes corretamente.
Sua prioridade é colocar os usuários em sua zona de conforto, o que significa, no caso do Zoom, boa qualidade de comunicação e compatibilidade com diferentes sistemas operacionais e milhares de dispositivos, antigos e novos. Enquanto o hacker precisa é encontrar um bug que pode ser usado para truques malicioso. Agora imagine que alguém te informa de uma vulnerabilidade.
Sim, você precisa corrigi-la, mas sem destruir o delicado sistema de software que está em funcionamento. Você tem que testá-lo em centenas de configurações diferentes. Naturalmente, o desenvolvedor quer resolver o problema com modificações mínimas. E isso muitas vezes não é suficiente.
Os programas se mais seguros incrementalmente, a cada pequena patch. Você não pode resolver absolutamente todos os problemas e criar um aplicativo ideal de forma simples. Ou melhor, você pode, mas só começando do zero. Mas alguns elementos críticos devem ser mantidos da melhor maneira possível, e o sistema de entrega de atualizações é definitivamente um deles.
Nós, usuários, precisamos confiar nos programas que instalamos em nossos computadores. E nesse sentido, a história das vulnerabilidades do Zoom é um exemplo positivo de um pesquisador independente e desenvolvedores trabalhando juntos para resolver um problema. Isso demonstra claramente a atitude responsável dos especialistas em tecnologia.
Encerramos essa história com um lembrete importante: o malware geralmente entra em um computador durante a primeira instalação de software. Portanto, é importante verificar se as aplicações foram baixadas de fontes oficiais, como pelas lojas de aplicativos, e em nenhuma circunstância os downloads de programas tenham sido feitos de sites suspeitos. Caso contrário, há uma chance de seus dados serem roubados por meio de métodos muito simples – sem a necessidade de explorar vulnerabilidades sofisticadas no software oficial.