Informações do aviso
Título: Elevação de privilégio local no cliente Mullvad VPN para Windows 2020.3
Referência do aviso: BLAZE-03-2020
Produto: Mullvad 2020.3 para Windows
Referência CVE: CVE-2020-14197
Modo de divulgação: Coordenada
Descrição do produto
O Mullvad é um provedor de VPN sediado na Suécia com um forte foco em privacidade. A empresa atua há mais de 10 anos e possui um histórico de resolução rápida de problemas de segurança, como o Heartbleed, além de contratar regularmente auditorias independentes de terceiros para seu software.
O serviço fornecido pelo Mullvad é utilizado por clientes em todo o mundo e inclui parceiros como a Mozilla e a Malwarebytes.
Detalhes da vulnerabilidade
Sob certas condições, o Mullvad VPN para Windows é vulnerável a uma elevação de privilégio local, permitindo que usuários com poucos privilégios elevem seus acessos para SYSTEM.
O mullvad-daemon.exe é o serviço de daemon usado pelo Mullvad VPN para Windows. O serviço é executado com integridade de sistema, com privilégios efetivos de NT AUTHORITY\SYSTEM.
Ao configurar o Process Monitor (ProcMon) para registrar todas as ocorrências de atividades de serviços durante a inicialização e aplicar filtros como "PATH NOT FOUND" ou "NAME NOT FOUND" para detectar acessos malsucedidos a DLLs ou arquivos de configuração no sistema de arquivos.

Observou-se que o mullvad-daemon.exe tentava procurar um arquivo openssl.cnf no diretório C:\Users\build\mullvadvpn-app\dist-assets\binaries\msvc-openssl

Conforme documentado em PIA Windows Privilege Escalation: Malicious OpenSSL Engine [1], arquivos openssl.cnf podem permitir o carregamento de mecanismos externos, incluindo arquivos DLL.


O cenário de exploração não é muito trivial devido à restrição relacionada ao C:\Users\build. Uma máquina de desenvolvimento pode ter um nome de usuário chamado build, ao qual diferentes desenvolvedores têm acesso, permitindo assim a exploração.
Um usuário chamado build, com acesso ao seu próprio diretório, pode criar as subpastas necessárias e inserir um openssl.cnf malicioso que conterá um parâmetro dynamic_path apontando para uma DLL maliciosa.

A biblioteca dinâmica será carregada posteriormente pelo mullvad-daemon.exe usando Load Image como SYSTEM, sem personificação, permitindo a elevação de privilégio devido ao carregamento da DLL maliciosa na memória do serviço.

Correção e recomendações
A Mullvad resolveu o problema substituindo o OpenSSL pelo rusttls, melhorando a segurança geral do software ao abandonar bibliotecas escritas em linguagens sem segurança de memória.
Recomendamos que os usuários atualizem o Mullvad VPN para a versão 2020.4.
Créditos
Esta vulnerabilidade foi descoberta e pesquisada por Julio Cesar Fort, da Blaze Information Security (https://www.blazeinfosec.com)
Cronograma de divulgação
24/02/2020: Vulnerabilidade reportada para [email protected];
25/02/2020: Resposta inicial da Mullvad confirmando o recebimento do relatório;
22/04/2020: Acompanhamento realizado – a Mullvad informou que o problema seria resolvido na próxima versão;
13/05/2020: Versão 2020.4 lançada, corrigindo o problema;
16/06/2020: O MITRE atribuiu o CVE-2020-14197 a este problema;
22/06/2020: Comunicado de segurança divulgado.
Referências
[1] https://blog.mirch.io/2019/06/10/cve-2019-12572-pia-windows-privilege-escalation-malicious-openssl-engine/
[2] https://mullvad.net/en/blog/2020/5/13/latest-desktop-release-20204-packed-updates/
Sobre a Blaze Information Security
A Blaze Information Security é uma empresa independente e privada de segurança da informação, fruto de anos de experiência combinada. Com presença na América do Sul e na Europa, a Blaze conta com uma equipe de engenheiros de segurança seniores com experiência prévia nas principais empresas de consultoria em segurança da informação ao redor do mundo e um histórico comprovado de pesquisas de segurança publicadas.
E-mail: [email protected]
Blog Wildfire Labs: https://www.blazeinfosec.com/labs/
Twitter: https://www.twitter.com/blazeinfosec
Github: https://www.github.com/blazeinfosec
Impressão digital da chave PGP: DB53 D9D9 F0E1 E513 4F52 8219 C33B C7FA C5D0 E926




