DevSecOps

5 jul, 2017

Bug de uma década para escalação de privilégios afeta sistemas Unix/Linux/BSD e outros

Publicidade

Pesquisadores de segurança descobriram mais uma vulnerabilidade com uma década de idade em vários sistemas operacionais baseados em UNIX, incluindo Linux, OpenBSD, NetBSD, FreeBSD e Solaris que podem ser explorados pelos atacante afim de escalar seus privilégios como root, potencialmente levando ao controle total do sistema.

Controlada como Stack Clash, a vulnerabilidade (CVE-2017-1000364) foi descoberta na forma como a memória estava sendo alocada no volume para binários do espaço de usuário.

Explorando o Bug Stack Clash para ganhar acesso root

A explicação é simples: cada programa usa uma região especial da memória chamada stack, que é usada para armazenar dados de curto prazo. Ele se expande e reduz automaticamente durante a execução de qualquer programa, dependendo das necessidades desse programa.

De acordo com pesquisadores da Qualys, empresa que descobriu e relatou esse bug, um programa malicioso pode tentar usar mais espaço de memória do que o padrão disponível no stack, o que pode transbordar a memória, fazendo com que ela venha a colidir ou entre em choque com regiões de memória nas proximidades sobrescrevendo seu conteúdo.

Além disso, exploit Stack Clash também pode ignorar a stack guard-page, uma proteção de gerenciamento de memória introduzida em 2010, depois que este problema foi explorado em 2005 e 2010.

“Infelizmente, uma stack guard-page de alguns kilobytes é insuficiente: se o apontamento do stack ‘saltar‘ sobre a guard-page — ou seja, caso ele se mova da stack para outra região de memória sem acessar a guard-page — em seguida, nenhuma exceção page-fault [falha de página] é sinalizada e a stack se estende para a outra região de memória”, diz o comunicado publicado pela Qualys.

A vulnerabilidade de Stack Clash requer acesso local ao sistema vulnerável para exploração, mas os pesquisadores disseram que ela poderia ser explorada remotamente, dependendo das aplicações.

Por exemplo, um cliente mal-intencionado com uma conta de privilégio baixo, em uma empresa de hospedagem Web, executando o sistema vulnerável, poderia explorar essa vulnerabilidade para obter controle sobre outros sites executados no mesmo servidor, bem como obter acesso root remotamente e executar códigos maliciosos diretamente.

Dias atrás, relatamos que como uma empresa de hospedagem Web foi vítima de um ataque semelhante usado para infectar servidores Linux com um malware ransomware, fazendo com que a empresa a pagar mais de $1 milhão em resgate para obter de volta seus arquivos.

Os atacantes também podem combinar o bug Stack Clash com outras vulnerabilidades críticas, como a vulnerabilidade Sudo recentemente corrigida e, em seguida, executar código arbitrário com os privilégios mais altos, disse os pesquisadores Qualys.

7 exemplos de prova de conceito

Os pesquisadores disseram que foram capazes de desenvolver sete façanhas e sete provas de conceito (PoCs) para a vulnerabilidade de Stack Clash, que funcionam em Linux, OpenBSD, NetBSD, FreeBSD e Solaris em processadores x86, 32-bit e 64-bit.

No entanto, as façanhas e provas de conceito ainda não foram publicadas, dando aos usuários e admins tempo suficiente para que possam corrigir a vulnerabilidade em seus sistemas antes da publicação.

O PoCs segue quatro etapas, que incluem ‘Clashing‘, a stack com outra região de memória, executando o apontamento da stack para inicialização, ‘Jumping‘, sobre a stack guard-page e ‘Smashing‘, a stack ou outras regiões de memória.

Dentre as distros e sistemas afetados pela Stack Clash estão:

  • Sudo no Debian, Ubuntu e CentOS;
  • ld.so e a maioria dos binários SUID-root no Debian, Ubuntu, Fedora e CentOS;
  • Exim no Debian;
  • rsh no Solaris 11 e superiores;
  • Red Hat Enterprise.

A empresa também acredita que outros sistemas operacionais, incluindo o Windows da Microsoft, o OS X/MacOS da Apple e o sistema Android da Google que é baseado no Linux também poderiam ser vulneráveis ao Stack Clash, embora ainda não tenha sido esteja confirmado.

Patch disponível, atualize agora

Muitos fornecedores afetados já emitiram patches de segurança para o bug, portanto, usuários e administradores são aconselhados a instalar os patches o mais breve possível.

Caso não tenha recebido automaticamente os patches de segurança, é possível aplicar limites para stack manualmente a aplicativos dos usuários locais. Simplesmente, defina a RLIMIT STACK e RLIMIT_AS de usuários locais e serviços remotos para um valor baixo.

Também é recomendável recompilar todos os códigos userland (ld.so, bibliotecas, binários) com o recurso fstack-check. Isso impediria que o apontamento da stack se mova para outra região de memória sem acessar a stack guard-page e mataria o Stack Clash.