Publicado em 26 junho 2019 26 junho 2019 por Allele Security Intelligence em Alertas
Private Internet Access (PIA) VPN Client para macOS v82
Uma vulnerabilidade no Private Internet Access (PIA) VPN Client para macOS v82 pode permitir que um atacante local autenticado execute código arbitrário com privilégios elevados.
O binário PIA macOS openvpn_launcher.64 é setuid root. Esse binário cria /tmp/pia_upscript.sh quando executado. Como a máscara de criação de arquivo (umask) não é redefinida, o valor umask é herdado do processo de chamada. Esse valor pode ser manipulado para fazer com que o binário privilegiado crie arquivos com permissões de escrita para todos. Um usuário local sem privilégios pode modificar /tmp/pia_upscript.sh durante o processo de conexão para executar código arbitrário como o usuário root.
Todas as etapas são executadas como um usuário com poucos privilégios.
Passo 1 – defina umask para 0000.
Etapa 2 – Verifique se a máscara é 0000.
Etapa 3 – Execute o openvpn_launcher.64. Isto irá criar /tmp/pia_upscript.sh com permissões de 777.
Passo 4 – Verifique se /tmp/pia_upscript.sh tem permissão de escrita para todos.
Etapa 5 – Crie uma cópia do /tmp/pia_upscript.sh.
Passo 6 – Inserir código arbitrário em /tmp/pia_upscript.sh.woot.
Para este PoC, vamos executar o comando id e enviar a saída para o wall. Isto irá mostrar o uid/gid através de uma mensagem de broadcast do sistema.
Passo 7 – Vença o race condition sobregravando continuamente /tmp/pia_upscript.sh. Coloque o trabalho em segundo plano. Isso é necessário porque, durante o processo de conexão, o script será sobrescrito.
Passo 8 – Execute o run.sh para abrir o cliente da GUI da PIA
Etapa 9 – Faça o login e conecte-se à VPN
Durante o processo de conexão /tmp/pia_upscript.sh será executado como root e você deverá ver uma mensagem do wall mostrando a saída do comando id com uid=0.
Com a tag ASA-2019-00383, CVE-2019-12577, Insecure umask, London Trust Media, macOS, Private Internet Access (PIA), VPN Client