quinta-feira, 16 de setembro de 2010

Antigo bug de escalada de privilégios do kernel volta a ativa

Este é uma notícia tipo copy & paste do http://br-linux.org/2010/escalada-de-privilegios-no-kernel/ que estou reproduzindo abaixo:

Enviado por Nicolas Wildner[Ironmaniaco] (nicolasgauchoΘgmail·com):

“O kernel linux foi expurgado de um bug que gera privilégios de root – novamente. Tal vulnerabilidade era de 2007, em um componente do sistema operacional responsável pela tradução de valores 64 bits para 32 e vice versa, e foi corrigido em 2007 com o lançamento do kernel de versão 2.6.22.7. Porém, vários meses depois, desenvolvedores inadvertidamente fizeram “roll back” desta alteração, deixando assim o sistema operacional aberto a usuários desprivilegiados a ganhar acesso total root.

O bug foi originalmente descoberto pelo hacker Wojciech “cliph” Purczynski. Porém, Ben Hawkes, o desenvolvedor que descobriu tal regressão, pensou com seus botões se tal falha ainda estaria ativa, gerando uma segunda versão do exploit.

Complemento: Olhando pelos links de referência você pode achar o “proof of concept” de tal exploit, que só precisa de um “gcc” para compilar. O resultado na minha máquina foi:

nicolas@debian:~/Pacotes/Exp$ whoami
nicolas
nicolas@debian:~/Pacotes/Exp$ ./a.out
resolved symbol commit_creds to 0xffffffff81067fc5
resolved symbol prepare_kernel_cred to 0xffffffff81067ec8
mapping at 3f80000000
UID 0, EUID:0 GID:0, EGID:0
# whoami
root

E meu usuário não possui qualquer regra de SUDO, ou privilégios adicionais concedidos pelo PAM. Agora é esperar que os mirrors “SEC” de todas as distros, atualizem o ultimo patch que corrige tal situação.” [referência: uncompiled.com]

Bom, fiz o teste pegado o exploit em: http://sota.gen.nz/compat2/ e o resultado abaixo foi exatamente igual ao do post do br-linux.org

adilsond@yoda:~/Downloads/exploit$ whoami
adilsond
adilsond@yoda:~/Downloads/exploit$ gcc -o exploit robert_you_suck.c 
adilsond@yoda:~/Downloads/exploit$ ./exploit 
resolved symbol commit_creds to 0xffffffff8105ad66
resolved symbol prepare_kernel_cred to 0xffffffff8105ac60
mapping at 3f80000000
UID 0, EUID:0 GID:0, EGID:0
sh-4.1# whoami
root

Isso sim pode preocupar porque qualquer usuário sem privilégios em um sistema 64 bits pode ser afetado. Então peguei logo os patches em:


Apliquei no último kernel estável (2.6.35.4) e o resultado apresentado foi:

adilsond@yoda:~/Downloads/exploit$ whoami
adilsond
adilsond@yoda:~/Downloads/exploit$ ./exploit 
resolved symbol commit_creds to 0xffffffff8105ad86
resolved symbol prepare_kernel_cred to 0xffffffff8105ac80
mapping at 3f80000000
UID 1000, EUID:1000 GID:1000, EGID:1000
sh-4.1$ whoami
adilsond

Agora não tem mais acesso ao root.

Para aqueles que não querem esperar pela versão 2.6.35.5 ou 2.6.36 (O que vier primeiro, que deve acontecer a qualquer momento), podem pegar os patches dos dois links acima ou, de forma mais mastigada, em: http://www.4shared.com/file/KIXq30ui/patch-remove-exploittar.html 

Neste caso deve fazer o seguinte nos dois arquivos:

patch -p0 <patch64-01.diff
patch -p0 <patch64-02.diff

Se acontecer algum erro tente criar um link simbólico linux para o local aonde está as fontes do seu kernel. A partir daí é recompilar e instalar o kernel já corrigido.
Mas isso foi testado apenas com o kernel 2.6.35.4 que peguei do kernel.org. Pode ser que funcione no kernel da sua distribuição, bastando apenas pegar o pacote referente aos fontes e gerar os pacotes correspondentes. No Debian e Ubuntu existem os pacotes linux-sources mas pode tentar usar o comando 'apt-get source linux-image-[versao-do-kernel]' para obter os fontes e criar os seus próprios pacotes.

Uma boa quinta.

Nenhum comentário:

Postar um comentário