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.