Por Silton Santos
O time de consultoria da Tempest detectou uma vulnerabilidade no Trend Micro Password Manager. Ela viabiliza uma escalação de privilégio que concede NT AUTHORITY\SYSTEM (usuário que possui total privilégio local) a quem a explorar através de uma DLL Hijacking.
Na sequência, apresentaremos, resumidamente, alguns conceitos básicos sobre o assunto, bem como a demonstração dessa vulnerabilidade.
DLL (Dynamic Link Library)
Segundo a documentação da Microsoft, um Dynamic Link Library é um módulo binário que possui um conjunto de funções e dados que podem ser utilizados por outros módulos binários — ou seja, um conjunto de funções e dados que podem ser utilizados por outra DLL ou por um executável.
Uma característica das funções de DLLs, é que as mesmas, ao serem importadas, não herdam as permissões definidas nas ACLs (Access Control List) dos arquivos carregados. Entretanto, elas, geralmente, herdam as permissões do processo que as importou.
A importação de uma DLL pode ser realizada através das funções LoadLibrary() e LoadLibraryEx(). Caso não seja fornecido o caminho absoluto do arquivo, o Windows irá utilizar, por padrão, o recurso natural da ordem de procura de DLL, a fim de encontrar o módulo não carregado. Essa ordem de procura é realizada nos seguintes diretórios, consecutivamente:
- O diretório a partir do qual a aplicação foi carregada;
- O diretório do sistema;
- O diretório do sistema de 16 bits;
- O diretório do Windows;
- O diretório de trabalho atual (CWD);
- Os diretórios que aparecem listados na variável de ambiente PATH.
Todavia, existem diversas formas de modificar a ordem de busca de uma DLL. A documentação da Microsoft, Load Library Safely, pode ser consultada para maiores detalhes sobre o tópico.
O fato é que, se o carregamento de uma DLL for implementado de forma insegura, um atacante poderá se aproveitar da ordem de busca, para realizar um ataque conhecido como DLL Hijacking. Para isso, basta que o atacante insira uma DLL maliciosa com o mesmo nome da solicitada, em um diretório anterior na ordem de busca.
Trend Micro Password Manager
O Trend Micro Password Manager é um software que pode ser instalado junto com o Trend Micro Maximum Security.
Durante uma análise nas operações realizadas durante a inicialização do sistema operacional, foi possível detectar que o serviço Trend Micro Password Manager Central Control Service, através do seu processo principal PwmSvc.exe, é responsável por criar um novo processo denominado certutil.exe, que tem por finalidade manipular os certificados do navegador Firefox. A imagem seguinte ilustra a criação deste processo:
Logo após essa criação, certutil.exe herda as permissões de usuário privilegiado e tenta carregar diversas DLLs, dentre elas, a nssckbi.dll localizada dentro da pasta do perfil do navegador Firefox:
O problema de segurança dessa importação realizada pelo processo certutil.exe concentra-se justamente nas permissões excessivas do diretório, tendo em vista que ele se encontra dentro da pasta de perfil do usuário em uso (C:\Users\usertest). Para testar se o processo iria realmente importar uma DLL no diretório indicado, mesmo ela não sendo assinada, uma DLL foi projetada a fim de escrever o autor da ação — nome do usuário — em um arquivo de texto. Como pode ser visto na imagem abaixo, a DLL possui alto privilégio na máquina:
Assim, pode-se concluir a existência de duas vulnerabilidades através das ações descritas acima:
1) A DLL estava sendo importada de um local indevido;
2) A verificação de assinatura não estava sendo realizada.
Ao ser contactada, a Trend Micro alegou que a vulnerabilidade em questão estava presente no módulo NSS tools do navegador Firefox. Já a Firefox, por sua vez, respondeu-nos que não recomendava o uso comercial de seu navegador; afirmando tratar-se de uma ferramenta de teste. Entretanto, depois de uma análise mais apurada, a Trend Micro não apenas aceitou a vulnerabilidade, corrigindo-a, como gerou uma nota de agradecimento e uma atribuição para CVE. Além disso, mais recentemente, a empresa lançou outra nota, onde informa a alteração na atribuição da severidade do Common Vulnerability Scoring System — CVSS. A vulnerabilidade em questão havia sido considerada por eles como de severidade média; mas, terminou sendo reconhecida como de alta severidade.