Cómo reparar la vulnerabilidad de SambaCry (CVE-2017-7494) en sistemas Linux


Samba ha sido durante mucho tiempo el estándar para proporcionar servicios de impresión y archivos compartidos a clientes de Windows en sistemas * nix. Utilizado por usuarios domésticos, empresas medianas y grandes por igual, se destaca como la solución de referencia en entornos donde coexisten diferentes sistemas operativos.

Como lamentablemente sucede con las herramientas de uso generalizado, la mayoría de las instalaciones de Samba corren el riesgo de un ataque que pueda aprovechar una vulnerabilidad conocida, que no se consideró grave hasta que el ataque de ransomware WannaCry llegó a las noticias no hace mucho.

En este artículo, explicaremos qué es esta vulnerabilidad de Samba y cómo proteger contra ella los sistemas de los que es responsable. Dependiendo de su tipo de instalación (de los repositorios o de la fuente), deberá adoptar un enfoque diferente para hacerlo.

Si actualmente está utilizando Samba en cualquier entorno o conoce a alguien que lo haga, ¡siga leyendo!

La vulnerabilidad

Los sistemas obsoletos y sin parches son vulnerables a una vulnerabilidad de ejecución remota de código. En términos simples, esto significa que una persona con acceso a un recurso compartido grabable puede cargar un fragmento de código arbitrario y ejecutarlo con permisos de root en el servidor.

El problema se describe en el sitio web de Samba como CVE-2017-7494 y se sabe que afecta a las versiones 3.5 de Samba (lanzadas a principios de marzo de 2010) y en adelante. Extraoficialmente, se le ha llamado SambaCry debido a sus similitudes con WannaCry: ambos apuntan al protocolo SMB y son potencialmente desparasitables, lo que puede hacer que se propague de un sistema a otro.

Debian, Ubuntu, CentOS y Red Hat han tomado medidas rápidas para proteger a sus usuarios y han lanzado parches para sus versiones compatibles. Además, también se han proporcionado soluciones de seguridad para las que no son compatibles.

Actualización de Samba

Como se mencionó anteriormente, hay dos enfoques a seguir según el método de instalación anterior:

Si instaló Samba desde los repositorios de su distribución.

Echemos un vistazo a lo que debe hacer en este caso:

Asegúrese de que apt esté configurado para obtener las últimas actualizaciones de seguridad agregando las siguientes líneas a su lista de fuentes (/etc/apt/sources.list):

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

A continuación, actualice la lista de paquetes disponibles:

# aptitude update

Finalmente, asegúrese de que la versión del paquete samba coincida con la versión en la que se corrigió la vulnerabilidad (consulte CVE-2017-7494):

# aptitude show samba

Para comenzar, busque nuevos paquetes disponibles y actualice el paquete samba de la siguiente manera:

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

Las versiones de Samba donde ya se aplicó la corrección para CVE-2017-7494 son las siguientes:

  • 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, ejecute el siguiente comando para verificar que su caja de Ubuntu ahora tenga instalada la versión correcta de Samba.

$ sudo apt-cache show samba

La versión parcheada de Samba en EL 7 es samba-4.4.4-14.el7_3. Para instalarlo, haz

# yum makecache fast
# yum update samba

Como antes, asegúrese de tener ahora la versión de Samba parcheada:

# yum info samba

Las versiones más antiguas y aún compatibles de CentOS y RHEL también tienen correcciones disponibles. Consulte RHSA-2017-1270 para obtener más información.

Nota: El siguiente procedimiento asume que previamente ha construido Samba desde la fuente. Le recomendamos que lo pruebe ampliamente en un entorno de prueba ANTES de implementarlo en un servidor de producción.

Además, asegúrese de hacer una copia de seguridad del archivo smb.conf antes de comenzar.

En este caso, también compilaremos y actualizaremos Samba desde la fuente. Sin embargo, antes de comenzar, debemos asegurarnos de que todas las dependencias estén instaladas previamente. Tenga en cuenta que esto puede tardar varios minutos.

# 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

Detenga el servicio:

# systemctl stop smbd

Descargue y descomprima la fuente (siendo 4.6.4 la última versión en el momento de escribir este artículo):

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

Solo con fines informativos, verifique las opciones de configuración disponibles para la versión actual con.

# ./configure --help

Puede incluir algunas de las opciones devueltas por el comando anterior si se usaron en la compilación anterior, o puede optar por ir con el predeterminado:

# ./configure
# make
# make install

Finalmente, reinicie el servicio.

# systemctl restart smbd

y verifique que esté ejecutando la versión actualizada:

# smbstatus --version

que debería devolver 4.6.4.

Consideraciones Generales

Si está ejecutando una versión no compatible de una distribución determinada y no puede actualizar a una más reciente por algún motivo, es posible que desee tener en cuenta las siguientes sugerencias:

  • Si SELinux está habilitado, ¡está protegido!
  • Asegúrese de que los recursos compartidos de Samba estén montados con la opción noexec. Esto evitará la ejecución de binarios que residen en el sistema de archivos montado.

Agregar,

nt pipe support = no

a la sección [global] de su archivo smb.conf y reinicie el servicio. Es posible que desee tener en cuenta que esto "puede deshabilitar algunas funciones en los clientes de Windows", según el proyecto Samba.

Importante: tenga en cuenta que la opción "nt pipe support u003d no" deshabilitaría la lista de recursos compartidos de los clientes de Windows. Por ejemplo: cuando escribe\10.100.10.2\desde el Explorador de Windows en un servidor samba, obtendrá un permiso denegado. Los clientes de Windows tendrían que especificar manualmente el recurso compartido como\10.100.10.2\share_name para acceder al recurso compartido.

En este artículo, hemos descrito la vulnerabilidad conocida como SambaCry y cómo mitigarla. Esperamos que pueda utilizar esta información para proteger los sistemas de los que es responsable.

Si tiene alguna pregunta o comentario sobre este artículo, no dude en utilizar el formulario a continuación para hacérnoslo saber.