Pesquisa de site

Como corrigir a vulnerabilidade SambaCry (CVE-2017-7494) em sistemas Linux


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

Como infelizmente acontece com ferramentas amplamente utilizadas, a maioria das instalações do Samba corre o risco de um ataque que pode explorar uma vulnerabilidade conhecida, que não foi considerada séria até que o ataque do ransomware WannaCry chegou aos noticiários, não muito muito tempo atras.

Neste artigo, explicaremos o que é essa vulnerabilidade do Samba e como proteger os sistemas pelos quais você é responsável contra ela. Dependendo do seu tipo de instalação (dos repositórios ou da fonte), você precisará adotar uma abordagem diferente para fazer isso.

Se você já usa o Samba em algum ambiente ou conhece alguém que usa, continue lendo!

A Vulnerabilidade

Sistemas desatualizados e sem correção são vulneráveis a uma vulnerabilidade de execução remota de código. Em termos simples, isso significa que uma pessoa com acesso a um compartilhamento gravável pode fazer upload de um trecho de código arbitrário e executá-lo com permissões de root 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çada no início de março de 2010) e posteriores. Extraoficialmente, ele foi chamado de SambaCry devido às suas semelhanças com o WannaCry: ambos têm como alvo o protocolo SMB e são potencialmente verificáveis – o que pode fazer com que ele se espalhe de sistema para sistema.

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

Atualizando o Samba

Conforme mencionado anteriormente, existem duas abordagens a seguir, dependendo do método de instalação anterior:

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

Vamos dar uma olhada no que você precisa fazer neste caso:

Corrigir 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

A seguir, atualize a lista de pacotes disponíveis:

aptitude update

Por fim, certifique-se de que a versão do pacote samba corresponda à versão onde a vulnerabilidade foi corrigida (consulte CVE-2017-7494):

aptitude show samba

Corrigir Sambacry no Ubuntu

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

sudo apt-get update
sudo apt-get install samba

As versões do Samba onde a correção para CVE-2017-7494 já foi aplicada 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

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

sudo apt-cache show samba

Corrigir Sambacry no CentOS/RHEL 7

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

yum makecache fast
yum update samba

Como antes, certifique-se de ter agora a versão corrigida do Samba:

yum info samba

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

Se você instalou o Samba a partir do código-fonte

Nota: O procedimento a seguir assume que você já compilou o Samba a partir do código-fonte. É altamente recomendável experimentá-lo extensivamente 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, iremos compilar e atualizar o Samba a partir do código-fonte também. Antes de começarmos, porém, devemos garantir que todas as dependências estejam previamente instaladas. Observe que isso pode levar vários minutos.

No Debian e Ubuntu:

aptitude 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 descompacte o código-fonte (com 4.6.4 sendo a versão mais recente no momento da redação deste artigo):

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

Apenas para fins informativos, verifique as opções de configuração disponíveis para a versão atual com.

./configure --help

Você pode incluir algumas das opções retornadas pelo comando acima se elas foram usadas na compilação anterior ou pode optar por usar o padrão:

./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.

considerações gerais

Se você estiver executando uma versão não suportada de uma determinada distribuição e não conseguir atualizar para uma versão mais recente por algum motivo, considere as seguintes sugestões:

  • Se o SELinux estiver habilitado, você estará protegido!
  • Certifique-se de que os compartilhamentos do Samba estejam montados com a opção noexec. Isto impedirá a execução de binários residentes no sistema de arquivos montado.

Adicionar,

nt pipe support = no

para a seção [global] do seu arquivo smb.conf e reinicie o serviço. Você pode querer ter em mente que isso “pode desabilitar algumas funcionalidades em clientes Windows”, conforme o projeto Samba.

Importante: Esteja ciente de que a opção “nt pipe support=no ” desativaria a listagem de compartilhamentos de clientes Windows. Ex.: Quando você digita \10.100.10.2\ no Windows Explorer em um servidor samba, você recebe uma permissão negada. Os clientes Windows teriam que especificar manualmente o compartilhamento como \\10.100.10.2\share_name para acessá-lo.

Resumo

Neste artigo, descrevemos a vulnerabilidade conhecida como SambaCry e como mitigá-la. Esperamos que você consiga usar essas informações para proteger os sistemas pelos quais é responsável.

Se você tiver alguma dúvida ou comentário sobre este artigo, sinta-se à vontade para usar o formulário abaixo para nos informar.