Recherche de site Web

Comment protéger votre serveur contre la vulnérabilité Shellshock de Bash


Introduction

Le 24 septembre 2014, une vulnérabilité de GNU Bash, appelée Shellshock ou le « Bug Bash », a été divulguée. En bref, la vulnérabilité permet à des attaquants distants d'exécuter du code arbitraire dans certaines conditions, en passant des chaînes de code après l'assignation de variables d'environnement. En raison du statut omniprésent de Bash parmi les distributions Linux, BSD et Mac OS X, de nombreux ordinateurs sont vulnérables à Shellshock ; toutes les versions non corrigées de Bash de la 1.14 à la 4.3 (c'est-à-dire toutes les versions jusqu'à présent) sont à risque.

La vulnérabilité Shellshock peut être exploitée sur des systèmes exécutant des services ou des applications qui permettent à des utilisateurs distants non autorisés d'assigner des variables d'environnement Bash. Des exemples de systèmes exploitables incluent les suivants :

  • Serveurs Apache HTTP qui utilisent des scripts CGI (via mod_cgi et mod_cgid) écrits en Bash ou qui lancent des sous-shells Bash
  • Certains clients DHCP
  • Serveurs OpenSSH qui utilisent la fonctionnalité ForceCommand
  • Divers services exposés sur le réseau qui utilisent Bash

Une description détaillée du bug peut être trouvée aux CVE-2014-6271, CVE-2014-7169, CVE-2014-7186 et CVE-2014-7187.

Parce que la vulnérabilité Shellshock est très répandue - encore plus que le bug Heartbleed d'OpenSSL - et particulièrement facile à exploiter, il est fortement recommandé que les systèmes affectés soient correctement mis à jour pour corriger ou atténuer la vulnérabilité dès que possible. Nous allons vous montrer comment tester si vos machines sont vulnérables et, si elles le sont, comment mettre à jour Bash pour supprimer la vulnérabilité.

Vérifier la vulnérabilité du système

Sur chacun de vos systèmes qui exécutent Bash, vous pouvez vérifier la vulnérabilité Shellshock en exécutant la commande suivante à l'invite de bash :

env 'VAR=() { :;}; echo Bash is vulnerable!' 'FUNCTION()=() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

La partie mise en évidence echo Bash est vulnérable ! de la commande représente l'endroit où un attaquant distant pourrait injecter du code malveillant ; du code arbitraire suivant une définition de fonction dans une affectation de variable d'environnement. Par conséquent, si vous voyez la sortie suivante, votre version de Bash est vulnérable et doit être mise à jour :

Bash is vulnerable!
Bash Test

Si votre sortie n’inclut pas la charge utile de l’attaquant simulé, c’est-à-dire que « Bash est vulnérable » n’est pas affiché comme sortie, vous êtes protégé contre au moins la première vulnérabilité (CVE-2014-6271), mais vous pouvez être vulnérable aux autres CVE découvertes par la suite. S’il y a des avertissements ou des erreurs bash dans la sortie, vous devriez mettre à jour Bash vers sa dernière version ; ce processus est décrit dans la section suivante.

Si la seule chose qui est produite par la commande test est la suivante, votre Bash est à l'abri de Shellshock :

Bash Test

Tester les sites distants

Si vous voulez simplement tester si des sites web ou des scripts CGI spécifiques sont vulnérables, utilisez ce lien : outil de test de vulnérabilité Bash « ShellShock » CVE-2014-6271.

Il suffit d'entrer l'URL du site web ou du script CGI que vous souhaitez tester dans le formulaire approprié et de soumettre.

Corriger la vulnérabilité : mettre à jour Bash

Le moyen le plus simple de corriger la vulnérabilité est d'utiliser votre gestionnaire de paquets par défaut pour mettre à jour la version de Bash. Les sous-sections suivantes couvrent la mise à jour de Bash sur différentes distributions Linux, y compris Ubuntu, Debian, CentOS, Red Hat et Fedora.

APT-GET : Ubuntu/Debian

Pour les versions actuellement prises en charge d'Ubuntu ou de Debian, mettez à jour Bash vers la dernière version disponible via apt-get :

sudo apt-get update && sudo apt-get install --only-upgrade bash

Vérifiez maintenant à nouveau la vulnérabilité de votre système en exécutant la commande de la section précédente (Vérifier la vulnérabilité du système).

Fin de vie des versions Ubuntu/Debian

Si vous utilisez une version d'Ubuntu/Debian qui est considérée comme en fin de vie, vous devrez passer à une version prise en charge pour utiliser le gestionnaire de paquets afin de mettre à jour Bash. La commande suivante peut être utilisée pour passer à une nouvelle version (il est recommandé de sauvegarder votre serveur et vos données importantes au préalable, au cas où vous rencontreriez des problèmes) :

sudo do-release-upgrade

Une fois la mise à niveau terminée, assurez-vous de mettre à jour Bash.

YUM : CentOS/Red Hat/Fedora

Mettez à jour Bash vers la dernière version disponible via yum :

sudo yum update bash

Vérifiez maintenant à nouveau la vulnérabilité de votre système en exécutant la commande de la section précédente (Vérifier la vulnérabilité du système).

Fin de vie des versions CentOS/Red Hat/Fedora

Si vous utilisez une version de CentOS/Red Hat/Fedora considérée comme en fin de vie, vous devrez passer à une version prise en charge pour utiliser le gestionnaire de paquets afin de mettre à jour Bash. La commande suivante peut être utilisée pour passer à une nouvelle version (il est recommandé de sauvegarder votre serveur et vos données importantes au préalable, au cas où vous rencontreriez des problèmes) :

sudo yum update

Une fois la mise à niveau terminée, assurez-vous de mettre à jour Bash.

Conclusion

Assurez-vous de mettre à jour tous vos serveurs affectés vers la dernière version de Bash ! De plus, assurez-vous de garder vos serveurs à jour avec les dernières mises à jour de sécurité !