Tempest Security
Aug 20 · 4 min read

O analista de segurança da Tempest, Silton Santos, descobriu recentemente uma vulnerabilidade nos softwares Trend Micro Premium Security, Maximum Security, Internet Security e Antivirus + Security em suas versões para o Windows; a falha está relacionada com uma má implementação na função CreateProcess a partir da execução da funcionalidade PC Health Checkup presente nestes softwares e pode, caso explorada, levar à obtenção de privilégios elevados.

Responsável pela criação de novos processos, a função CreateProcess é representada pelo seguinte código:

BOOL CreateProcessA(

LPCSTR lpApplicationName,

LPSTR lpCommandLine,

LPSECURITY_ATTRIBUTES lpProcessAttributes,

LPSECURITY_ATTRIBUTES lpThreadAttributes,

BOOL bInheritHandles,

DWORD dwCreationFlags,

LPVOID lpEnvironment,

LPCSTR lpCurrentDirectory,

LPSTARTUPINFOA lpStartupInfo,

LPPROCESS_INFORMATION lpProcessInformation

);

Para implementar essa função, um dos parâmetros requeridos é o lpApplicationName, no qual é fornecido o nome ou caminho do módulo a ser executado; no entanto, de acordo com documentação da Microsoft, caso o valor inserido neste parâmetro contenha espaços, será necessário o uso de aspas (“) para indicar o ponto onde termina o nome do arquivo e onde iniciam os argumentos para a sua execução.

Isso significa que, durante a criação de um processo hipotético, um diretório C:\Program Files\Diretorio abc\Diretorio def\exemplo.exe seria interpretado na ordem a seguir, até um executável válido ser encontrado

• C:\Program.exe

• C:\Program Files\Diretorio.exe

• C:\Program Files\Diretorio abc\Diretorio.exe

• C:\Program Files\Diretorio abc\Diretorio def\exemplo.exe

Esta recursividade se deve à falta das aspas (“) no caminho definido no referido parâmetro, o que levará o sistema operacional a tentar definir o início do caminho do arquivo a ser executado e quais são os argumentos deste arquivo. Isso se dá ao executar a ferramenta PC Health Checkup, uma das funcionalidades das soluções de segurança.

Ao executar a ferramenta, o processo coreServiceShell tenta carregar o executável PwmConsole de forma recursiva. Na imagem 01 é possível observar que o coreServiceShell tenta executar os arquivos C:\Program.exe e C:\Program Files\Trend.exe antes de executar o C:\Program Files\Trend\TMIDS\PwmConsole.exe. Observa-se também que essas tentativas de execução são realizadas por um processo do usuário NT AUTHORITY\SYSTEM.

Imagem 01 — Captura com Procmon, durante o monitoramento das operações com arquivos.

Paralelamente a esta execução, a DLL plugServiceBundle.dll foi carregada pelo processo coreServiceShell (Imagem 02); entre as funções desta DLL está a função CreateProcessW (Imagem 03).

Imagem 02 — DLL plugServiceBundle.dll carregada no processo coreServiceShell
Imagem 03 — Função CreateProcessW instanciada na DLL plugServiceBundle.dll

Partindo do pressuposto que um atacante possui permissão de escrita em C:\ ou em C:\Program Files\, ele poderia inserir um executável arbitrário chamado de Program.exe ou Trend.exe e esses seriam executados pelo processo coreServiceShell, herdando seu privilégio de usuário NT AUTHORITY\SYSTEM.

Para provar o conceito, foi desenvolvido um executável malicioso que posteriormente foi copiado no caminho C:\Program.exe, conforme ilustrado na Imagem 04:

Imagem 04 — Arquivo malicioso em C:\

Ao executar a ferramenta PC Helth Checkup (Imagem 05) um processo é criado com privilégio SYSTEM (Imagem 06) a partir da execução do programa malicioso.

Imagem 05 — Botão Start para iniciar a funcionalidade com a vulnerabilidade
Imagem 06 — Program.exe em execução

O sucesso da exploração pode ser verificado a partir do servidor externo que aguardava a shell reversa, conforme demonstrado na imagem 7.

Imagem 07: Shell reversa com permissão System

A vulnerabilidade foi reconhecida e registrada pela própria Trend Micro através do CVE-2019–14685. Segundo o boletim de segurança liberado no último dia 14, patches de correção já foram liberados e devem ser instalados através da ferramenta ActiveUpdate.

Report Timeline

  • 24/04/2019 — Início do Responsible Disclosure com a Trend;
  • 25/04/2019 — Trend iniciou a análise da issue;
  • 10/05/2019 — Trend solicitou mais informações sobre a PoC realizada. E-mail enviado com as informações solicitadas;
  • 22/05/2019 — Trend enviou um update e solicitou um teste de correção;
  • 27/05/2019 — Respondido e-mail dizendo que o update solucionado o problema;
  • 28/05/2019 — Trend agradeceu a confirmação e avisou que estava providenciando o release público e após a finalização, iria providenciar o CVE, liberar a divulgação pública e inserir o nome na sessão de Acknowledgment na página de Vulnerability Responses;
  • 04/06/2019 — Trend comunica que o release está previsto para ser liberado em Julho e somente após o lançamento do release seria fornecido o CVE;
  • 31/07/2019 — Vendor comunica que existe um release público e solicita a validação da correção novamente. E-mail enviado confirmando a validação e solicitando o CVE;
  • 13/08/2019 — Foi reservado o CVE e a URL para o security advisory (a publicação ocorreu no dia seguinte [14/08])

SideChannel-BR

Notícias e análises sobre segurança da informação produzidas pela equipe e por amigos da Tempest Security Intelligence

Tempest Security

Written by

Empresa líder no mercado brasileiro de segurança da informação e combate a fraudes digitais, atuando desde o ano 2000.

SideChannel-BR

Notícias e análises sobre segurança da informação produzidas pela equipe e por amigos da Tempest Security Intelligence

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade