Ouvi falar de uma nova vulnerabilidade chamada Stack Clash que aparentemente afeta vários sistemas semelhantes ao Unix (não apenas o Linux, mas também os BSDs, Solaris).
- O que é isso? Como um bug multi-OS aconteceu?
- Como proteger meus sistemas?
Ouvi falar de uma nova vulnerabilidade chamada Stack Clash que aparentemente afeta vários sistemas semelhantes ao Unix (não apenas o Linux, mas também os BSDs, Solaris).
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 se imagina a pilha crescendo para baixo e a pilha crescendo para cima. O que acontece quando um cresce o suficiente para colidir com o outro? De maneira mais geral, o que acontece quando a pilha cresce o suficiente para invadir espaços de memória não relacionados? A vulnerabilidade original tem 12 anos e os desenvolvedores do 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 :
Citando o artigo LWN sobre a correção original de 2010:
A descrição acima se aplica a vários kernels do tipo Unix.
Embora a Ars Technica observe uma solução temporária mencionada no relatório da Qualys ("defina o RLIMIT STACK e RLIMIT_AS de usuários locais e serviços remotos para um valor baixo"), deve-se observar que isso não protege necessariamente contra essa exploração . A única saída segura atualmente é atualizar. De acordo com a análise grsecurity:
O melhor que podemos fazer agora é atualizar o kernel para uma versão corrigida.
O exploit de 2010 usou o servidor X, este usou o sudo, o próximo pode ser qualquer um de uma infinidade de programas userland que, em algum ponto, são executados com privilégios elevados.
A Qualys ainda não publicou nenhum código de prova de conceito para explorações (eles planejam fazê-lo posteriormente).
Existem vários avisos de segurança do Ubuntu associados ao CVE-2017-1000364:
Observe também que o rastreador CVE lista várias combinações de versão/kernel como correções pendentes.
Geralmente, a correção mais simples é atualizar seus sistemas para o pacote de kernel mais recente o mais rápido possível.
As versões relevantes do kernel dos USNs (selecionadas usando
for i in {24..35}; curl -s https://www.ubuntu.com/usn/usn-33$i-1/ | pup 'dl:nth-last-of-type(1)'
):sudo
O bug do sudo mencionado acima é coberto pelo USN-3304-1 , de 30 de maio de 2017:
Para abordar especificamente esta parte da sua pergunta:
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).
This design is common across many systems, hence why many systems are vulnerable to the same class of vulnerability.