Ubuntu, Arch e Fedora são afetados por vulnerabilidade no kernel

A vulnerabilidade com o código CVE-2013-1763 afeta várias distribuições, incluindo Fedora, Ubuntu e Arch Linux. Esta vulnerabilidade permite obter privilégios de root. Conheça como privilégios causados por falha no kernel são obtidos.

Essa vulnerabilidade afeta as versões do kernel 3.0-37.10 e está em ‘net/core/sock_diag.c‘ onde a função ‘__sock_diag_rcv_msg‘ não faz verificação ‘bound check‘ dos sock_diag_handles ‘ causando uma ‘out-of-bounds exception‘ “e permitindo que outros usuários obtenham privilégios de root.

Para entender a falha

Nos sistemas Linux de 32 bits, cada processo irá virtualizar 4 GB de espaço de memória, com 3 GB de espaço para usuários e 1 GB de espaço no kernel. Nesse caso, o intervalo espaço-usuário vai de 00000000 para 0xBFFFFFFF; e o espaço do kernel vai de 0xC0000000 a 0xFFFFFFFF. Assim, o espaço do kernel é compartilhado por todos os processos. Esses processos só deveriam ser acessados no modo kernel. Os processos no nível do usuário podem acessar o modo kernel através de `syscalls`. Se um processo em execução no modo kernel, os endereços gerados pertencem ao espaço do kernel.

Funções ‘commit_creds‘ e ‘prepare_kernel_cred‘ são funções do kernel e para executá-los teria que passar do modo kernel; por isso, se a função ‘__sock_diag_rcv_msg’ é executado em modo kernel, podemos usá-lo para ganhar privilégios de root.

Um mmap é aplicado ao intervalo de memória 0x10000-0x120000, incluindo uma série de NOPs. Daí deve aparecer corretamente a payload pertencente ao modo kernel. No Ubuntu,  não dá para obter o valor da variável ‘rehash_time‘ desse intervalo de memória, então somente o seguinte método é válido para obtê-lo:

sudo cat /boot/System.map-3.5.0-17-generic

Depois de obter todas essas informações, o usuário pode obter privilégios de root. Em contrapartida, para poder executar esta exploração mais de uma vez, é necessário reiniciar o sistema operacional. Veja:

Acesse a versão completa
Sair da versão mobile