Com solucionar la vulnerabilitat de SambaCry (CVE-2017-7494) en sistemes Linux


Samba ha estat durant molt de temps l'estàndard per proporcionar fitxers compartits i serveis d'impressió als clients Windows en sistemes *nix. Utilitzat per usuaris domèstics, empreses mitjanes i grans empreses per igual, destaca com la solució ideal en entorns on coexisteixen diferents sistemes operatius.

Com lamentablement passa amb les eines d'ús àmpliament utilitzat, la majoria de les instal·lacions de Samba corren el risc d'un atac que pugui explotar una vulnerabilitat coneguda, que no es considerava greu fins que l'atac de ransomware WannaCry va arribar a la notícia no fa gaire.

En aquest article, explicarem què és aquesta vulnerabilitat de Samba i com protegir-ne els sistemes dels quals sou responsable. Depenent del vostre tipus d'instal·lació (des de repositoris o de la font), haureu d'adoptar un enfocament diferent per fer-ho.

Si actualment estàs utilitzant Samba en qualsevol entorn o coneixes algú que ho faci, segueix llegint!

La Vulnerabilitat

Els sistemes obsolets i sense pegats són vulnerables a una vulnerabilitat d'execució de codi remota. En termes senzills, això vol dir que una persona amb accés a una part que es pot escriure pot carregar un fragment de codi arbitrari i executar-lo amb permisos d'arrel al servidor.

El problema es descriu al lloc web de Samba com CVE-2017-7494 i se sap que afecta les versions 3.5 de Samba (publicada a principis de març de 2010) i posteriors. Extraoficialment, s'ha anomenat SambaCry a causa de les seves similituds amb WannaCry: tots dos s'orienten al protocol SMB i són potencialment desactivables, cosa que pot provocar que s'estengui d'un sistema a un altre.

Debian, Ubuntu, CentOS i Red Hat han pres accions ràpides per protegir els seus usuaris i han llançat pedaços per a les seves versions compatibles. A més, també s'han proporcionat solucions de seguretat per a les que no són compatibles.

S'està actualitzant Samba

Com s'ha esmentat anteriorment, hi ha dos enfocaments a seguir segons el mètode d'instal·lació anterior:

Si heu instal·lat Samba des dels repositoris de la vostra distribució.

Fem una ullada a què heu de fer en aquest cas:

Assegureu-vos que apt estigui configurat per rebre les últimes actualitzacions de seguretat afegint les línies següents a la vostra llista de fonts (/etc/apt/sources.list):

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

A continuació, actualitzeu la llista de paquets disponibles:

# aptitude update

Finalment, assegureu-vos que la versió del paquet samba coincideix amb la versió on s'ha solucionat la vulnerabilitat (vegeu CVE-2017-7494):

# aptitude show samba

Per començar, comproveu si hi ha nous paquets disponibles i actualitzeu el paquet samba de la següent manera:

$ sudo apt-get update
$ sudo apt-get install samba

Les versions de Samba on ja s'ha aplicat la correcció per a CVE-2017-7494 són les següents:

  • 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

Finalment, executeu l'ordre següent per verificar que la vostra caixa d'Ubuntu ara té instal·lada la versió de Samba adequada.

$ sudo apt-cache show samba

La versió de Samba pegada a EL 7 és samba-4.4.4-14.el7_3. Per instal·lar-lo, feu

# yum makecache fast
# yum update samba

Com abans, assegureu-vos que ara teniu la versió de Samba pegada:

# yum info samba

Les versions més antigues i encara compatibles de CentOS i RHEL també tenen solucions disponibles. Consulteu RHSA-2017-1270 per obtenir més informació.

Nota: El procediment següent suposa que prèviament heu construït Samba des de l'origen. Us animem molt a provar-lo àmpliament en un entorn de proves ABANS de desplegar-lo en un servidor de producció.

A més, assegureu-vos de fer una còpia de seguretat del fitxer smb.conf abans de començar.

En aquest cas, compilarem i actualitzarem Samba també des de la font. Abans de començar, però, ens hem d'assegurar que totes les dependències estan instal·lades prèviament. Tingueu en compte que això pot trigar uns quants minuts.

# 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
# 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

Atura el servei:

# systemctl stop smbd

Baixeu i descarregueu la font (amb la 4.6.4 la darrera versió en el moment d'escriure aquest article):

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

Només amb finalitats informatives, comproveu les opcions de configuració disponibles per a la versió actual amb.

# ./configure --help

Podeu incloure algunes de les opcions que retorna l'ordre anterior si s'utilitzaven a la compilació anterior, o podeu optar per anar amb la predeterminada:

# ./configure
# make
# make install

Finalment, reinicieu el servei.

# systemctl restart smbd

i verifiqueu que esteu executant la versió actualitzada:

# smbstatus --version

que hauria de tornar 4.6.4.

Consideracions generals

Si esteu executant una versió no compatible d'una distribució determinada i no podeu actualitzar-ne una de més recent per algun motiu, és possible que vulgueu tenir en compte els suggeriments següents:

  • Si SELinux està habilitat, estàs protegit!
  • Assegureu-vos que els recursos compartits de Samba estiguin muntats amb l'opció noexec. Això evitarà l'execució de binaris que resideixin al sistema de fitxers muntat.

Afegeix,

nt pipe support = no

a la secció [global] del vostre fitxer smb.conf i reinicieu el servei. És possible que vulgueu tenir en compte que això \pot desactivar algunes funcionalitats als clients de Windows, segons el projecte Samba.

Important: tingueu en compte que l'opció \nt pipe support = no desactivaria la llista de recursos compartits dels clients Windows. Per exemple: quan escriviu \\10.100.10.2\ des de l'Explorador de Windows en un servidor de samba, obtindreu un permís denegat. Clients de Windows hauria d'especificar manualment la compartició com a \\10.100.10.2\share_name per accedir a la compartició.

En aquest article, hem descrit la vulnerabilitat coneguda com SambaCry i com mitigar-la. Esperem que pugueu utilitzar aquesta informació per protegir els sistemes dels quals sou responsable.

Si teniu cap pregunta o comentari sobre aquest article, no dubteu a utilitzar el formulari següent per fer-nos-ho saber.