
CVE-2017-16995(Vulnerabilidade de escalonamento de privilégios local no Ubuntu)
Ubuntu é um sistema operacional GNU/Linux de código aberto focado em aplicações desktop, baseado no Debian GNU/Linux. Recentemente, um hacker de chapéu branco revelou que a versão mais recente do Ubuntu (Ubuntu 16.04) possui uma vulnerabilidade de escalada de privilégio local, identificada como CVE-2017-16995. Essa vulnerabilidade existe no subsistema de kernel Linux que lida com a chamada de sistema eBPF bpf(2). Quando um usuário fornece um programa BPF malicioso, o módulo verificador eBPF comete um erro de cálculo, resultando em leitura/escrita arbitrária de memória. Um usuário com baixos privilégios pode explorar essa vulnerabilidade para obter privilégios administrativos. Essa vulnerabilidade foi corrigida em versões antigas, no entanto, ainda é explorável na versão mais recente. O fornecedor ainda não lançou um patch oficial, e a vulnerabilidade permanece em estado de 0-day.
Linux Kernel Versão 4.14-4.4 Apenas afeta distribuições Ubuntu/Debian
Alta
bearcat@ubuntu:/opt$ lsb_release -a
<br>No LSB modules are available.
<br>Distributor ID: Ubuntu
<br>Description: Ubuntu 16.04.4 LTS
<br>Release: 16.04
<br>Codename: xenial
<br>bearcat@ubuntu:/opt$ uname -a
<br>Linux ubuntu 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
<br>bearcat@ubuntu:/opt$ id
<br>uid=1000(bearcat) gid=1000(bearcat) <br>groups=1000(bearcat),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare)
<br>bearcat@ubuntu:/opt$ ls
<br>exploit.c
<br>bearcat@ubuntu:/opt$ gcc exploit.c -o exploit
<br>bearcat@ubuntu:/opt$ ./exploit
<br>task_struct = ffff88003a0db800
<br>uidptr = ffff8800374b76c4
<br>spawning root shell
<br>root@ubuntu:/opt# id
<br>uid=0(root) gid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare),1000(bearcat)
<br>root@ubuntu:/opt#
Atualmente, não há uma solução clara de atualização de patch. No entanto, é recomendável que os usuários mitiguem a vulnerabilidade modificando parâmetros do kernel para restringir o uso da chamada de sistema bpf(2) por usuários comuns:
Defina o parâmetro “kernel.unprivileged_bpf_disabled = 1” para restringir o acesso à chamada de sistema bpf(2) e evitar essa escalada de privilégio.
root@Ubuntu# echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled
Atualize a versão do kernel Linux. É necessário reiniciar o servidor para que as alterações tenham efeito:
Esta etapa já foi descrita no processo de configuração do ambiente; o usuário só precisa alterar a versão do kernel!
Patch de código https://github.com/torvalds/linux/commit/95a762e2c8c942780948091f8f2a4f32fce1ac6f