Comment corriger la vulnérabilité SambaCry (CVE-2017-7494) dans les systèmes Linux
Samba est depuis longtemps la norme pour fournir des services de fichiers partagés et d’impression aux clients Windows sur les systèmes *nix. Utilisé par les particuliers, les entreprises de taille moyenne et les grandes entreprises, il s’impose comme la solution incontournable dans les environnements où différents systèmes d’exploitation coexistent.
Comme c’est malheureusement le cas avec des outils largement utilisés, la plupart des installations de Samba sont exposées au risque d’une attaque qui peut exploiter une vulnérabilité connue, qui n’était pas considérée comme grave jusqu’à ce que l’attaque du ransomware WannaCry fasse la une des journaux il n’y a pas si longtemps.
Dans cet article, nous allons vous expliquer ce qu’est cette vulnérabilité Samba et comment protéger les systèmes dont vous êtes responsable contre celle-ci. Selon votre type d’installation (à partir de dépôts ou de 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 le fait, lisez la suite !
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 des autorisations root sur le serveur.
Le problème est décrit sur le site Web de Samba sous le nom de 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 : les deux ciblent le protocole SMB et sont potentiellement vermifuges, ce qui peut le faire se propager 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 ceux qui ne sont pas pris en charge.
Mise à jour de Samba
Comme mentionné précédemment, il y a deux approches à suivre en fonction de la méthode d’installation précédente :
Si vous avez installé Samba à partir des dépôts de votre distribution.
Voyons ce que vous devez faire dans ce cas :
Correction de 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 forfaits disponibles :
# aptitude update
Enfin, assurez-vous que la version du package samba correspond à la version où la vulnérabilité a été corrigée (voir CVE-2017-7494) :
# aptitude show samba
Réparer Sambacry dans Ubuntu
Pour commencer, vérifiez les nouveaux paquets disponibles et mettez à jour le paquet samba comme suit :
$ sudo apt-get update
sudo apt-get install samba
Les versions de Samba pour lesquelles 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 installée sur votre boîte Ubuntu.
$ sudo apt-cache show samba
Correction de 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 précédemment, assurez-vous d’avoir maintenant la version corrigée de Samba :
# yum info samba
Les versions plus anciennes, toujours prises en charge de CentOS et RHEL, ont également des 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 vivement à 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 à jour Samba à partir des sources également. Avant de commencer, cependant, nous devons nous assurer que toutes les dépendances sont déjà installées. Notez que cela peut prendre plusieurs minutes.
Dans 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
Dans 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 le code source (la version 4.6.4 étant la dernière version au moment de la rédaction de cet article) :
# 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 exécutez la version mise à jour :
# smbstatus --version
qui devrait retourner 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 à effectuer la mise à niveau vers une distribution plus récente pour une raison quelconque, vous pouvez prendre en compte les suggestions suivantes :
- Si SELinux est activé, vous êtes protégé !
- Assurez-vous que les socs Samba sont montés avec l’option noexec. Cela empêchera l’exécution de binaires résidant sur le système de fichiers monté.
Ajouter
nt pipe support = no
dans 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 dans les 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 sous la forme \\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 serez en mesure d’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 le faire savoir.

