Búsqueda de sitios web

Cómo reparar la vulnerabilidad 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 Windows en sistemas *nix. Utilizado tanto por usuarios domésticos como por empresas medianas y grandes, se destaca como la solución ideal en entornos donde coexisten diferentes sistemas operativos.

Como lamentablemente sucede con las herramientas más utilizadas, la mayoría de las instalaciones de Samba corren el riesgo de sufrir un ataque que puede explotar una vulnerabilidad conocida, que no se consideró grave hasta que el ataque del ransomware WannaCry llegó a las noticias. Hace mucho tiempo.

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 (desde repositorios o desde fuente), deberá adoptar un enfoque diferente para hacerlo.

Si actualmente estás usando Samba en algún entorno o conoces a alguien que lo haga, ¡sigue 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 posteriores. Extraoficialmente, se le ha denominado SambaCry debido a sus similitudes con WannaCry: ambos apuntan al protocolo SMB y son potencialmente susceptibles a gusanos, 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 los que no son compatibles.

Actualizando Samba

Como se mencionó anteriormente, existen 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:

Arreglar Sambacry en Debian

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 donde se solucionó la vulnerabilidad (consulte CVE-2017-7494):

aptitude show samba

Reparar Sambacry en Ubuntu

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 sistema Ubuntu ahora tenga instalada la versión correcta de Samba.

sudo apt-cache show samba

Reparar Sambacry en CentOS/RHEL 7

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

yum makecache fast
yum update samba

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

yum info samba

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

Si instaló Samba desde la fuente

Nota: El siguiente procedimiento supone que previamente has compilado Samba desde el código fuente. Le recomendamos encarecidamente que lo pruebe exhaustivamente 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 el código fuente. Sin embargo, antes de comenzar, debemos asegurarnos de que todas las dependencias estén previamente instaladas. Tenga en cuenta que esto puede tardar varios minutos.

En Debian y 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

En CentOS 7 o 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

Detener el servicio:

systemctl stop smbd

Descargue y descomprima la fuente (siendo 4.6.4 la última versión al 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, consulte 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 utilizar el valor 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 archivos 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=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, se le denegará el permiso. Los clientes de Windows tendrían que especificar manualmente el recurso compartido como \\10.100.10.2\share_name para acceder al recurso compartido.

Resumen

En este artículo, describimos 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 siguiente formulario para hacérnoslo saber.