ASA-2018-00029 – LiquidVPN: Carregamento de extensões arbitrárias de kernel


For the English version of this alert, click here.

Allele Security Alert

ASA-2018-00029

Identificador(es)

ASA-2018-00029, CVE-2018-18859

Título

Carregamento de extensões arbitrárias de kernel

Produto(s)

LiquidVPN para macOS

Versão(ões) afetada(s)

1.37, 1.36 e anterior

Versão(ões) corrigida(s)

Desconhecido

Prova de conceito

Desconhecido

Descrição

LiquidVPN instala a ferramenta auxiliar “com.smr.liquidvpn.OVPNHelper” para realizar ações privilegiadas (root). Para permitir que outros componentes LiquidVPN envie mensagens para a ferramenta auxiliar, ele implementa um serviço XPC. Análise de código estática mostrou que o serviço XPC não filtra mensagens recebidas. Isto significa que usuários regulares (atacantes locais) possam criar mensagens XPC arbitrárias e enviar para o serviço. Isto leva ao seguinte problema:

Se o serviço detectar o parâmetro “openvpn” na mensagem, ele também checa se os parâmetros “tun_path” e “tap_path” existem. Se um deles (ou ambos) são encontrados, os valores são usados como caminhos de origem para um processo de cópia usando a função system(). Contudo, os caminhos não são validados antes de serem passados para a função system().

Esta vulnerabilidade pode ser usada para instalar diretamente um extensão arbitrária no kernel ou execução de código arbitrário.

Criando uma mensagem XPC contendo caminhos de extensão do kernel controlados por um atacante, a ferramenta auxiliar instala as extensões do kernel usando uma chamada para a função do sistema kextload(). Nota: Desde MacOS 10.13, um Kext precisa ser assinado. Em adição a isso, Apple introduziu a aprovação do usuário para instalação de extensões de kernel de terceiros. Contudo, como um atacante tem acesso local ao sistema e aprovação do usuário não precisa que o usuário entre como usuário privilegiado ou senha do administrador, isto não é um problema.

A seguinte prova de conceito pode ser usada para executar comandos arbitrários no sistema:

---
... 
xpc_dictionary_set_string(message, "cmd", "openvpn"); 
xpc_dictionary_set_string(message, "path_tun", "[CAMINHO PARA O KEXT]"); 
...
---

Referência(s)

Multiple Privilege Escalation Vulnerabilities in LiquidVPN for MacOS (CVE-2018-18856, CVE-2018-18857, CVE-2018-18858, CVE-2018-18859)
https://seclists.org/fulldisclosure/2018/Nov/1

CVE-2018-18859
https://nvd.nist.gov/vuln/detail/CVE-2018-18859

CVE-2018-18859
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-18859


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

Última modificação: 7 de novembro de 2018