O que é o Stack Clash e o que posso fazer sobre isso?

27

Eu ouvi falar sobre uma nova vulnerabilidade chamada Stack Clash, que aparentemente afeta vários sistemas do tipo Unix (não apenas Linux, mas também os BSDs, Solaris).

  • O que é isso? Como surgiu um bug multi-OS?
  • Como protejo meus sistemas?
por muru 20.06.2017 / 03:39

2 respostas

29

Stack Clash é um exploit baseado em uma técnica bastante antiga. A memória usada por um processo é dividida em duas regiões - a pilha e o heap . Geralmente, imagina-se a pilha crescendo para baixo e a pilha crescendo para cima. O que acontece quando o quer crescer o suficiente para colidir com o outro? Mais geralmente, o que acontece quando a pilha cresce o suficiente para invadir espaços de memória não relacionados? A vulnerabilidade original é de 12 anos e os desenvolvedores de kernel do Linux a corrigiram temporariamente usando uma página de guarda . No entanto, os pesquisadores da Qualys conseguiram explorar isso, apesar da página de guarda.

Relatórios da Ars Technica :

  

As vulnerabilidades do Stack Clash ganharam lentamente reconhecimento generalizado,   primeiro em 2005 com as descobertas do pesquisador de segurança Gaël   Delalleau e cinco anos depois com o lançamento de um Linux   vulnerabilidade pelo pesquisador Rafal Wojtczuk. Desenvolvedores Linux    introduziu uma proteção que se destinava a impedir o empilhamento   confrontos, mas a pesquisa de hoje demonstra que é relativamente fácil   para invasores contornarem essa medida.

     

O principal ataque de prova de conceito desenvolvido pela Qualys explora uma   vulnerabilidade indexada como CVE-2017-1000364. Pesquisadores Qualys também   ataques desenvolvidos que usam o Stack Clash para explorar   vulnerabilidades, incluindo CVE-2017-1000365 e CVE-2017-1000367. Para   exemplo, quando combinado com o CVE-2017-1000367, uma falha recentemente   Sudo também descoberto pela Qualys, os usuários locais podem explorar o Sudo para obter   privilégios de root completos em uma faixa muito maior de sistemas operacionais. Qualys tem até agora   foi incapaz de fazer as explorações executar remotamente o código. O único   aplicação remota que eles investigaram foi o servidor de correio Exim, que   coincidentemente acabou por ser inexplorável. Qualys disse que não pode   excluir a possibilidade de que tais execuções remotas de execução de código   existir. A Qualys disse que lançará as explorações de prova de conceito em um   data posterior, uma vez que as pessoas tiveram tempo de se proteger   vulnerabilidades.

     

[...] Muito mais informação está disponível em esta detalhada técnica   consultivo da Qualys e esta análise técnica de   grsecurity .

Citando o artigo do LWN sobre a correção original de 2010:

  

Como o Linux não separa as páginas de pilhas e pilhas de processos,   É possível executar uma página de pilha em uma página de heap adjacente. que   significa que uma pilha suficientemente profunda (a partir de uma chamada recursiva para   exemplo) pode acabar usando memória no heap. Um programa que pode   escrever para essa página de heap (por exemplo, um cliente X) poderia, então, manipular o   retornar o endereço de uma das chamadas para pular para um lugar de sua escolha.   Isso significa que o cliente pode fazer com que o servidor execute o código de seu   escolhendo - execução de código arbitrário - que pode ser aproveitada para ganhar raiz   privilégios.

A descrição acima se aplica a vários kernels parecidos com Unix.

Embora o Ars Technica observe uma solução temporária mencionada no relatório do Qualys ("defina o RLIMIT difícil STACK e RLIMIT_AS de usuários locais e rede serviços para um valor baixo "), deve-se notar que isso não necessariamente salvaguardar contra esta exploração . A única saída segura atualmente é atualizar. De acordo com a análise de segurança:

  

Deve ficar claro que as tentativas apenas do kernel para resolver esse problema   sempre será necessariamente incompleta, pois a verdadeira questão está na   falta de sondagem de pilha. Como a solução real alternativa depende   reconstruindo toda a área de usuários, essa é provavelmente a única solução viável para   o futuro previsível.

O melhor que podemos fazer agora é atualizar o kernel para uma versão corrigida.

A exploração de 2010 usou o servidor X, este usou o sudo, o próximo poderia ser qualquer um dos vários programas de usuário que, em algum momento, são executados sob privilégios elevados.

A Qualys ainda não publicou nenhum código de prova de conceito para explorações (planeja fazê-lo em uma data posterior).

por muru 20.06.2017 / 03:45
1
  

Como surgiu um erro de vários sistemas operacionais?

Para abordar esta parte da sua pergunta especificamente:

Esse problema surge devido ao uso de um espaço de endereço compartilhado para heap (que cresce para cima) e pilha (que cresce para baixo).

Esse design é comum em muitos sistemas, por isso, muitos sistemas são vulneráveis à mesma classe de vulnerabilidade.

    
por user7761803 21.06.2017 / 14:21

Tags