Recherche de site Web

Comment réparer la vulnérabilité SambaCry (CVE-2017-7494) dans les systèmes Linux


Samba est depuis longtemps la norme pour fournir des services de fichiers et d'impression partagés aux clients Windows sur les systèmes * nix. Utilisée aussi bien par les particuliers que par les entreprises de taille moyenne et de grande taille, elle s'impose comme la solution incontournable dans les environnements où cohabitent différents systèmes d'exploitation.

Comme c'est malheureusement le cas avec les outils largement utilisés, la plupart des installations de Samba courent le risque d'une attaque susceptible d'exploiter une vulnérabilité connue, ce qui n'était pas considéré comme grave jusqu'à ce que l'attaque du ransomware WannaCry fasse la une des journaux. il y a longtemps.

Dans cet article, nous expliquerons ce qu'est cette vulnérabilité Samba et comment protéger les systèmes dont vous êtes responsable contre elle. En fonction de votre type d'installation (à partir de référentiels ou à partir des sources), vous devrez adopter une approche différente pour le faire.

Si vous utilisez actuellement Samba dans n’importe quel environnement ou si vous connaissez quelqu’un qui l’utilise, continuez à lire !

La vulnérabilité

Les systèmes obsolètes et non corrigés sont vulnérables à une vulnérabilité d’exécution de code à distance. En termes simples, cela signifie qu'une personne ayant accès à un partage inscriptible peut télécharger un morceau de code arbitraire et l'exécuter avec les autorisations root sur le serveur.

Le problème est décrit sur le site Web de Samba sous le nom CVE-2017-7494 et est connu pour affecter les versions 3.5 de Samba (publiées début mars 2010) et ultérieures. Officieusement, il a été nommé SambaCry en raison de ses similitudes avec WannaCry : tous deux ciblent le protocole SMB et sont potentiellement vermifuges, ce qui peut provoquer sa propagation d'un système à l'autre.

Debian, Ubuntu, CentOS et Red Hat ont pris des mesures rapides pour protéger leurs utilisateurs et ont publié des correctifs pour leurs versions prises en charge. De plus, des solutions de sécurité ont également été fournies pour celles qui ne sont pas prises en charge.

Mettre à jour Samba

Comme mentionné précédemment, il existe deux approches à suivre en fonction de la méthode d'installation précédente :

Si vous avez installé Samba à partir des référentiels de votre distribution.

Voyons ce que vous devez faire dans ce cas :

Réparer Sambacry dans Debian

Assurez-vous qu'apt est configuré pour obtenir les dernières mises à jour de sécurité en ajoutant les lignes suivantes à votre liste de sources (/etc/apt/sources.list) :

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

Ensuite, mettez à jour la liste des packages disponibles :

aptitude update

Enfin, assurez-vous que la version du package samba correspond à la version dans laquelle la vulnérabilité a été corrigée (voir CVE-2017-7494) :

aptitude show samba

Réparer Sambacry dans Ubuntu

Pour commencer, recherchez les nouveaux packages disponibles et mettez à jour le package samba comme suit :

sudo apt-get update
sudo apt-get install samba

Les versions de Samba où le correctif pour CVE-2017-7494 a déjà été appliqué sont les suivantes :

  • 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

Enfin, exécutez la commande suivante pour vérifier que la bonne version de Samba est désormais installée sur votre boîte Ubuntu.

sudo apt-cache show samba

Réparer Sambacry sur CentOS/RHEL 7

La version corrigée de Samba dans EL 7 est samba-4.4.4-14.el7_3. Pour l'installer, faites

yum makecache fast
yum update samba

Comme auparavant, assurez-vous que vous disposez désormais de la version patchée de Samba :

yum info samba

Les versions plus anciennes et toujours prises en charge de CentOS et RHEL disposent également de correctifs disponibles. Consultez RHSA-2017-1270 pour en savoir plus.

Si vous avez installé Samba à partir des sources

Remarque : La procédure suivante suppose que vous avez déjà construit Samba à partir des sources. Nous vous encourageons fortement à l'essayer de manière approfondie dans un environnement de test AVANT de le déployer sur un serveur de production.

De plus, assurez-vous de sauvegarder le fichier smb.conf avant de commencer.

Dans ce cas, nous compilerons et mettrons également à jour Samba à partir des sources. Cependant, avant de commencer, nous devons nous assurer que toutes les dépendances sont préalablement installées. Notez que cela peut prendre plusieurs minutes.

Sous Debian et 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

Sous CentOS 7 ou similaire :

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

Arrêtez le service :

systemctl stop smbd

Téléchargez et décompressez la source (la 4.6.4 étant la dernière version au moment d'écrire ces lignes) :

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

À titre informatif uniquement, vérifiez les options de configuration disponibles pour la version actuelle avec.

./configure --help

Vous pouvez inclure certaines des options renvoyées par la commande ci-dessus si elles ont été utilisées dans la version précédente, ou vous pouvez choisir d'utiliser la valeur par défaut :

./configure
make
make install

Enfin, redémarrez le service.

systemctl restart smbd

et vérifiez que vous utilisez la version mise à jour :

smbstatus --version

qui devrait renvoyer 4.6.4.

considérations générales

Si vous exécutez une version non prise en charge d'une distribution donnée et que vous ne parvenez pas à mettre à niveau vers une version plus récente pour une raison quelconque, vous souhaiterez peut-être prendre en compte les suggestions suivantes :

  • Si SELinux est activé, vous êtes protégé !
  • Assurez-vous que les partages Samba sont montés avec l'option noexec. Cela empêchera l'exécution des binaires résidant sur le système de fichiers monté.

Ajouter,

nt pipe support = no

à la section [global] de votre fichier smb.conf et redémarrez le service. Vous voudrez peut-être garder à l'esprit que cela « peut désactiver certaines fonctionnalités des clients Windows », selon le projet Samba.

Important : Sachez que l'option « nt pipe support=no » désactiverait la liste des partages des clients Windows. Par exemple : lorsque vous tapez \\10.100.10.2\ à partir de l'Explorateur Windows sur un serveur Samba, vous obtenez une autorisation refusée. Les clients Windows doivent spécifier manuellement le partage comme \\10.100.10.2\share_name pour accéder au partage.

Résumé

Dans cet article, nous avons décrit la vulnérabilité connue sous le nom de SambaCry et comment l'atténuer. Nous espérons que vous pourrez utiliser ces informations pour protéger les systèmes dont vous êtes responsable.

Si vous avez des questions ou des commentaires sur cet article, n'hésitez pas à utiliser le formulaire ci-dessous pour nous en faire part.