Como corrigir a vulnerabilidade do SambaCry em sistemas Linux

Saiba como corrigir a vulnerabilidade do SambaCry em sistemas Linux. A falha já foi corrigida pelas versões dos sistemas mais recentes. Porém, descobrimos que alguns servidores Linux ainda estão vulneráveis por falta de atualização do administrador de sistemas!

Escrito por
Samuel Barbosa
É servidor público na Rede Federal de Educação, Desenvolvedor Web, pós-graduando em Engenharia de Software, estudante de Marketing Digital na Digital House. É apaixonado por open...

O Samba é, e tem sido, o padrão para fornecer serviços de arquivos e impressoras compartilhadas para clientes Windows em sistemas *nix. Usado por usuários domésticos, empesas de médio porte e grandes empresas, ele se  destaca como a solução go-to em ambientes onde diferentes sistemas operacionais coexistem.

Como infelizmente acontece com as ferramentas amplamente utilizadas, a maioria das instalações do Samba estão sob risco de um ataque que pode explorar uma vulnerabilidade conhecida, que não foi considerada grave até que o ataque  do ransomware WannaCry veio à tona há alguns dias.

Vamos explicar o que é esta vulnerabilidade do Samba e como proteger os sistemas que são responsáveis por ele. Dependendo do tipo de instalação (de repositórios ou de origem), você precisará ter uma abordagem diferente para fazê-lo.

Se você está usando o Samba atualmente em qualquer ambiente ou conhece alguém que usa, continue lendo!

A vulnerabilidade SambaCry

Sistemas desatualizados e não corrigidos são vulneráveis a um problema de execução remota de código. Em termos simples, isso significa que uma pessoa com acesso a um compartilhamento gravável pode carregar um pedaço de código arbitrário e executá-lo com permissões de raiz no servidor.

O problema é descrito no site do Samba como CVE-2017-7494 e é conhecido por afetar as versões 3.5 do Samba (lançado no início de março de 2010) e superiores. Extraoficialmente, foi nomeado de SambaCry devido as suas similaridades com o WannaCry: possui o protocolo SMB como alvo – e pode se espalhar rapidamente pela rede.

Debian, Ubuntu, CentOS e Red Hat tomaram medidas rápidas para proteger seus usuários e liberaram patches para suas versões suportadas. Além disso, soluções de segurança também foram fornecidas para as não suportadas.

Atualizando o Samba

Conforme mencionado no início, existem duas abordagens a seguir dependendo do método de instalação:

1. Se você instalou o Samba dos repositórios da sua distribuição:

Corrigindo o SambaCry no Debian

Certifique-se de que o apt esteja configurado para obter as atualizações de segurança mais recentes adicionando as seguintes linhas à sua lista de fontes (/etc/apt/sources.list):

deb http://security.debian.org stable/updates main
deb-src http://security.debian.org/ stable/updates main

Em seguida, atualize a lista de pacotes disponíveis:

sudo apt update

Finalmente, certifique-se de que a versão do pacote samba corresponde à versão em que a vulnerabilidade foi corrigida (consulte a CVE-2017-7494 no Debian.org para ver se há atualização), no momento a situação é a seguinte:

CVE 2017 7494
Como corrigir a vulnerabilidade do SambaCry em sistemas Linux 3

No meu servidor por exemplo, já consta a versão:

Package: samba
Version: 2:4.2.14+dfsg-0+deb8u6

Fix SambaCry no Ubuntu

Para começar, verifique se há novos pacotes disponíveis e atualize o pacote samba da seguinte maneira:

sudo apt update
sudo apt install samba

As versões do Samba onde a correção para a CVE-2017-7494 já foram aplicadas são as seguintes:

  • 17.04: samba 2:4.5.8 + dfsg-0ubuntu0.17.04.2
  • 16.10: samba 2:4.4.5 + dfsg-2ubuntu5.6
  • 16.04 LTS: samba 2:4.3.11 + dfsg-0ubuntu0.16.04.7
  • 14.04 LTS: samba 2:4.3.11 + dfsg-0ubuntu0.14.04.8

Finalmente, execute o seguinte comando para verificar se sua caixa do Ubuntu agora tem a versão correta instalada.

sudo apt-cache show samba

Fix SambaCry no CentOS/RHEL 7

A versão do Samba com patch do EL 7 é samba-4.4.4-14.el7_3. Para instalá-lo, faça:

yum makecache fast
yum update samba

Como feito nas outras distros, certifique-se de ter a versão do Samba corrigida:

yum info samba

As versões mais antigas e ainda suportadas do CentOS e do RHEL têm também correções disponíveis. Verifique a RHSA-2017-1270 para mais informações.

2. Se você instalou o Samba pelo código-fonte

Atenção: o procedimento a seguir pressupõe que você compilou o Samba na sua máquina. É altamente recomendável que você experimente massivamente em um ambiente de teste ANTES de implantá-lo em um servidor de produção.

Além disso, certifique-se de fazer backup do arquivo smb.conf antes de começar.

Neste caso, vamos compilar e atualizar o Samba da fonte também. Antes de começar no entanto, devemos garantir que todas as dependências sejam instaladas anteriormente. Isso pode levar alguns minutos.

No Debian/Ubuntu

apt install acl attr autoconf bison build-essential \
debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \
libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \
libcap-dev libcups2-dev libgnutls28-dev libjson-perl \
libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \
libpopt-dev libreadline-dev perl perl-modules pkg-config \
python-all-dev python-dev python-dnspython python-crypto xsltproc \
zlib1g-dev libsystemd-dev libgpgme11-dev python-gpgme python-m2crypto

No CentOS 7 ou similar

yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \
libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \
perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \
python-crypto gnutls-devel libattr-devel keyutils-libs-devel \
libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \
pam-devel popt-devel python-devel readline-devel zlib-devel

Pare o serviço:

systemctl stop smbd

Baixe e extraia os arquivos fonte (sendo a versão 4.6.4 no momento desta escrita):

wget https://www.samba.org/samba/ftp/samba-latest.tar.gz
tar xzf samba-latest.tar.gz
cd samba-4.6.4

Você pode verificar todas as opções de configuração disponíveis para a versão atual com:

./configure --help

Seguiremos com o padrão, mais você pode utilizar algumas das opções listadas no comando anterior:

./configure
make
make install

Finalmente, reinicie o serviço.

systemctl restart smbd

E verifique se você está executando a versão atualizada:

smbstatus --version

Que deve retornar 4.6.4.

Concluindo

No mais, se você estiver executando uma versão não suportada de uma distribuição e não puder atualizar para uma mais recente por algum motivo, você pode querer levar em consideração as seguintes sugestões:

  • Se o SELinux estiver ativado, você estará protegido!
  • Verifique se os compartilhamentos do Samba estão montados com a opção noexec. Isso impedirá a execução de binários que residem no sistema de arquivos montado.

Adicionar a linha abaixo no seu arquivo smb.conf e reinicie o serviço. Você pode querer ter em mente que isso “pode desativar algumas funcionalidades em clientes Windows”, conforme o projeto Samba.

nt pipe support = no
A opção “nt pipe support = no” desativaria a listagem de ações dos clientes do Windows. Por exemplo: ao digitar \\192.168.1.1\ do Windows Explorer em um servidor samba, você receberia uma permissão negada. Os clientes do Windows teriam que especificar manualmente a pasta como \\192.168.1.1\nome_da_pasta para acessar o compartilhamento.

Se você tiver dúvidas ou comentários, sinta-se a vontade para comentar abaixo.

Compartilhe este artigo