Eles estão entre nós: explorando vulnerabilidades e códigos maliciosos no Zoom para Windows

Quem adicionou essa "passa" ao Zoom?


Recentemente, costuma-se ouvir os seguintes comentários:

“Não usamos o Zoom para conversas confidenciais”. E



se alguém que não seja a privacidade da sessão do Zoom se preocupa com a integridade dos dados em seu dispositivo? E não em vão, porque, como se viu, há razões para isso. Não apenas os dados da conferência Zoom estão em risco, mas também a integridade e a confidencialidade de tudo o que um participante da conferência salva em seu computador.

Portanto, passei duas noites (um total de cerca de 5-6 horas) dissecando o Zoom for Windows (versão 4.6.11 (20559.0413)). Eu estava envolvido apenas na análise estática, sem observar a aplicação em tempo real. Mas isso foi o suficiente para mim. Tudo o que encontrei está descrito neste artigo. Mas tenho certeza de que isso é apenas a ponta do iceberg. Imagine o que um analista de segurança com tempo e orçamento suficientes pode descobrir ... E eu procurei deliberadamente aquelas vulnerabilidades que poderiam ser usadas para divulgar informações confidenciais a terceiros (por exemplo, vazamento de informações no Facebook).

Realizei um estudo muito superficial e não entrei em detalhes. Fiz isso no meu tempo livre e não pretendo mais fazer isso. Estabeleci uma meta clara - avaliar a qualidade do código em termos de segurança e a presença (ou ausência) de suporte para o software incluído no aplicativo Zoom (o que é especialmente necessário ao usar um grande número de bibliotecas de terceiros).

Aplicativo arcaico de 32 bits


A sério? Mas por que?! A Microsoft adicionou suporte para aplicativos de 64 bits e vários aprimoramentos de segurança para processadores de 64 bits, começando no Windows 7. Isso ocorreu em 2009, onze anos atrás. E o próprio Windows 7 está desatualizado (desde 14 de janeiro de 2020, esse sistema operacional não é mais suportado). Mas não, em 2020 o Zoom ainda libera apenas aplicativos Windows de 32 bits.

zData.dll


O zData.dll usa um componente com vulnerabilidades. A biblioteca OpenSSL 1.0.2, obsoleta (datada de 27 de março de 2018) é conhecida por suas vulnerabilidades que ninguém corrigirá.

Desde dezembro de 2019, o trabalho no OpenSSL 1.0.2 foi descontinuado. Aqui está o que seus desenvolvedores escrevem :

“De acordo com os lançamentos atuais e futuros, o projeto OpenSSL tomou as seguintes decisões:

  • A próxima versão do OpenSSL será 3.0.0.
  • A versão 1.1.1 será suportada até 2023-09-11 (LTS).
  • A versão 1.0.2 não é mais suportada. Suporte pago aprimorado está disponível .
  • As versões 1.1.0, 1.0.1, 1.0.0 e 0.9.8 não são mais suportadas. "

Ou aqui :



Combinando instruções SQL


  • CWE-89 : Neutralização incorreta de elementos especiais de comandos SQL (injeção SQL)

No zData.dll, o back-end é usado para armazenar vários dados de sessão e configuração em um banco de dados SQLite criptografado. Em alguns casos, as instruções SQL no código parecem ser simplesmente concatenadas, como mostrado abaixo:

Exemplo 1:



Exemplo 2:



Dependendo da implementação do operador + =, o zData.dll pode potencialmente criar vulnerabilidades de injeção SQL que podem levar à divulgação de informações ou execução arbitrária de código nos dispositivos de usuário final Zoom.

Ah, com licença ... mas essa, por acaso, não é a chave para a descriptografia criptográfica de um banco de dados SQLite criptografado?



Na verdade, não tenho certeza :-) No entanto, a criptografia do banco de dados, em princípio, não interfere no acesso aos dados confidenciais armazenados lá. O zoom parece estar usando um banco de dados SQLite para armazenar registros de histórico, logs e possivelmente também para armazenar dados confidenciais, como senhas e / ou chaves criptográficas. Eu não me aprofundava no uso do SQLite como um contêiner de dados; deixo isso divertido para leitores mais curiosos.

Zzhost.dll


Ameaça de estouro de buffer


Examinando as tabelas de importação binária, deparei-me com a chamada sprintf (). Mas você sabe que o sprintf () é uma função potencialmente perigosa e os compiladores dão avisos se você o usar. Parece que esses avisos não incomodam os desenvolvedores do Zoom.

  • CWE-120 : copiando o conteúdo do buffer sem primeiro verificar o tamanho dos dados de entrada (na função de registro)
  • CWE-676 : Usando funções potencialmente perigosas (sprintf)



Para explorar com êxito essa vulnerabilidade, é necessário controlar o conteúdo do buffer de origem. Eu não tentei fazer isso sozinho. No entanto, como essa é uma função de log (ou seja, log), os invasores teoricamente podem afetar o conteúdo do buffer original. Mais uma vez, eu próprio não verifiquei se isso é realmente possível. Mas mesmo o fato de ocorrer essa oportunidade e ignorar avisos sobre os perigos do uso de funções é uma prática muito ruim. Desenvolvedores! Não faça isso!

zCrashReport.exe


Salvando chaves de registro do Windows


O registro do Windows contém informações bastante importantes - especialmente quando as acessamos através de um processo com direitos privilegiados.

Eu descobri o seguinte:



“Despejar chaves do registro” parece uma função maliciosa para mim, então tentei descobrir se ele realmente salva as chaves e os valores do registro do Windows. Sim, encontrei o fragmento correspondente no código:



Captura de tela no Crash Reporter


O zCrashReport.dll oferece as seguintes funções:



No crashReport.exe, as funções da API do Windows são usadas para capturar a tela e o Windows.



Você acha que o Zoom envia os dados capturados da tela para seus servidores? Nesse caso, isso pode ser considerado como código malicioso.

Airhost.exe


Componentes com vulnerabilidades


O Airhost.exe usa a libcurl 7.36.0 (lançada em 26 de março de 2014), na qual foram encontradas 52 vulnerabilidades. Bem, o curl, por sua vez, inclui a libssh2, que também foi observada por várias vulnerabilidades:




Felizmente, essas vulnerabilidades não representam uma ameaça específica para os usuários do Zoom. No entanto, por que usar bibliotecas desatualizadas e vulneráveis ​​se você se importa com o seu código? É mais fácil usar a versão mais recente do que adivinhar se a próxima vulnerabilidade encontrada afetará seu aplicativo, não é?

Criptografia / descriptografia de chave virtual


Airhost.exe usa a constante como chave de criptografia simétrica: A linha de saída SHA256 "0123425234234fsdfsdr3242" é usada para criptografar / descriptografar AES-256 via OpenSSL.



E a linha "3423423432325249" é usada como vetor de inicialização IV.



Vulnerabilidades zWebService.dll e tp.dll


zWebService.dll e tp.dll usam libcurl 7.55.1. Embora essa biblioteca não seja tão antiga quanto a libcurl 7.36.0 (que é usada no airhost.exe), ela ainda está um pouco desatualizada. Se a segurança do usuário final fosse realmente importante para os desenvolvedores, eles examinariam esta lista de vulnerabilidades:



Vulnerabilidades turbojpeg.dll


O Turbojpeg.dll usa o libjpeg-turbo 2.0.0 (compilação 20190715). Aqui está uma lista de vulnerabilidades na classe de execução remota de código turbojpeg / libjpeg-turbo:



Qual é o próximo?


Nesse ponto, parei de me aprofundar no interior do Zoom para Windows. Para aqueles que querem continuar, fico feliz em passar o bastão:

sha256 checksums dos arquivos executáveis ​​do Zoom 4.6.11 (20559.0413)


All Articles