Vulnerabilidade no serviço de compartilhamento de arquivos expõe milhões de computadores

Introdução

O ano de 2017 foi bem agitado no mundo da cibersegurança. Um bom exemplo foram os ataques usando o ramsonware "wannacry", que acabaram ganhando as manchetes do mundo todo. Por explorar uma vulnerabilidade (que já havia sido corrigida) no serviço SMB, acarretou em uma grande dor de cabeça para administradores de infraestruturas baseadas no sistema operacional Microsoft Windows. Já os administradores de Linux estavam "tranquilos", pois não haviam novas vulnerabilidades como estas para o ambiente Linux...até agora.

Foi divulgada uma vulnerabilidade grave no SAMBA (CVE-2017-7494), podendo afetar diversos sistemas operacionais incluindo Windows e Linux, que possibilita a execução de código malicioso remotamente (RCE).

O SAMBA é a implementação open-source do protocolo SMB, permitindo o compartilhamento de arquivos entre o Windows e outros sistemas operacionais (GNU-Linux, Mac OS X etc.).

A vulnerabilidade, que está sendo conhecida Sambacry (aluzão ao wannacry), afeta as versões do samba 3.5+ e pode atingir milhões de computadores ao redor do globo.

 

Análise da vulnerabilidade

Verificamos que o exploit para a vulnerabilidade  está disponível publicamente e pode ser acessado no link:  https://github.com/omri9741/cve-2017-7494.

As condições para explorar a vulnerabilidade são simples:

  • A máquina alvo deve estar utilizando uma versão vulnerável o samba;
  • O atacante deve ter acesso a pelo menos uma pasta compartilhada na máquina alvo, com permissão de escrita;
  • O atacante deve transferir um arquivo (shared library) para a pasta compartilhada.

Estas condições atendidas, basicamente é executar o exploit:

 

exploit.py -t (IP Maquina Alvo) –m (caminho do arquivo na pasta compartilhada)

 

Ao reproduzir o exploit em laboratório, notamos que a função contida no arquivo enviado foi executado com permissões de root.

Verificando o código do exploit, notamos que ele está fazendo uma chamada de procedimento remoto (RPC) através de um named pipe, conforme podemos notar:

 

Então, o exploit faz uma chamada RPC para um named pipe que foi “direcionado” para a shared library que colocamos na pasta compartilhada no servidor.

Simplificando tudo isto, esta vulnerabilidade basicamente permite a execução, com permissão de administrador, de arquivos na pasta compartilhada.

Visto isto, já conseguimos vislumbrar o motivo desta vulnerabilidade ser tão “perigosa” e estar causando tanta repercussão.

Para entender esta vulnerabilidade, navegamos pelas águas profundas do código fonte do SAMBA.

Identificamos que a função “is_known_pipename” é utilizada para verficar se o named pipe que se deseja utilizar é válido. Caso seja, o named pipe é associado ao arquivo e fica disponível para acesso via RPC:

  

Desta forma, a origem da vulnerabilidade está na função “is_known_pipename”, pois nela não verifica a possibilidade de estar sendo criado um named pipe para um arquivo na pasta compartilhada, conforme:

Um patch de correção já foi disponibilizado. Verificamos que o patch adiciona, justamente, esta verificação adicional na função, corrigindo a vulnerabilidade:

 

Como se proteger?

Ressaltamos a necessidade de possuir controles e processos de segurança da informação bem definidos e atualizados. Casos como este podem ser mitigados com a atualização de versão periódica dos ativos da empresa.

Recomendamos, também, a realização de análises periódicas de vulnerabilidades dos principais ativos do ambiente.