Como corrigir a vulnerabilidade do SambaCry em sistemas Linux

Falha afeta versões 3.5 e superiores

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

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:

Fix 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:

Source Package Release Version Status
samba (PTS) wheezy 2:3.6.6-6+deb7u7 vulnerable
wheezy (security) 2:3.6.6-6+deb7u13 fixed
jessie 2:4.2.14+dfsg-0+deb8u5 vulnerable
jessie (security) 2:4.2.14+dfsg-0+deb8u6 fixed
stretch, sid 2:4.5.8+dfsg-2 fixed

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.

Através da Fonte

Comentários