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

introduction

Le 24 septembre 2014, une vulnérabilité de GNU Bash, appelée Shellshock ou le «bug Bash», a été révélée. En résumé, cette vulnérabilité permet à des attaquants distants d’exécuter du code arbitraire dans certaines conditions, en transmettant des chaînes de code après les affectations 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 de Bash non corrigées comprises entre 1.14 et 4.3 (c.-à-d. toutes les versions jusqu’à présent) sont à risque.

La vulnérabilité de Shellshock peut être exploitée sur des systèmes exécutant des services ou des applications permettant à des utilisateurs distants non autorisés d’attribuer des variables d’environnement Bash. Voici des exemples de systèmes exploitables:

  • Serveurs HTTP Apache qui utilisent des scripts CGI (via + mod_cgi + et + mod_cgid +) écrits en Bash ou lancés dans des sous-shell Bash

  • Certains clients DHCP

  • Serveurs OpenSSH utilisant la fonctionnalité + ForceCommand +

  • Divers services réseau exposés qui utilisent Bash

Une description détaillée du bogue peut être trouvée à CVE-2014-6271, http: //web.nvd .nist.gov / view / vuln / detail? vulnId = CVE-2014-7169 [CVE-2014-7169], CVE-2014- 7186 et CVE-2014-7187.

Comme la vulnérabilité de Shellshock est très répandue - encore plus que le bogue OpenSSL Heartbleed - et particulièrement facile à exploiter, il est vivement recommandé que les systèmes affectés soient correctement mis à jour pour corriger ou atténuer cette vulnérabilité dès que possible. Nous allons vous montrer comment tester si vos machines sont vulnérables et, le cas échéant, comment mettre à jour Bash pour éliminer la vulnérabilité.

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

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

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

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

Bash Test

Si votre sortie n’inclut pas la charge utile simulée de l’attaquant, c’est-à-dire «Bash is vulnérable» n’est pas imprimé en 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écouverts plus tard. S’il y a des avertissements ou des erreurs + bash + dans la sortie, vous devez mettre à jour Bash avec sa dernière version; Ce processus est décrit dans la section suivante.

Si la seule chose qui est sortie de la commande test est la suivante, votre Bash est protégé de Shellshock:

Bash Test

Tester des sites distants

Si vous voulez simplement tester si des sites Web ou des scripts CGI spécifiques sont vulnérables, utilisez ce lien: Vulnérabilité du bash «ShhShock» CVE-2014-6271 Test Tool.

Entrez simplement l’URL du site Web ou du script CGI que vous souhaitez tester sous la forme appropriée et soumettez-la.

Correction de la vulnérabilité: Update Bash

Le moyen le plus simple de corriger cette vulnérabilité consiste à utiliser votre gestionnaire de packages par défaut pour mettre à jour la version de Bash. Les sous-sections suivantes traitent de la mise à jour de Bash sur diverses distributions Linux, notamment Ubuntu, Debian, CentOS, Red Hat et Fedora.

APT-GET: Ubuntu / Debian

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

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

Maintenant, vérifiez à nouveau la vulnérabilité de votre système en exécutant la commande de la section précédente (https://www.digitalocean.com/community/tutorials/how-to-protect-your-server-against-the-shellshock-bash-vulnerability#check -system-vulnérabilité [Vérifier la vulnérabilité du système]).

Les versions Ubuntu / Debian en fin de vie

Si vous exécutez une version d’Ubuntu / Debian considérée comme étant «en cours de traitement», vous devrez effectuer une mise à niveau vers une version prise en charge pour utiliser le gestionnaire de paquets pour mettre à jour Bash. La commande suivante peut être utilisée pour mettre à niveau vers une nouvelle version (il est recommandé de sauvegarder votre serveur et vos données importantes en premier lieu, au cas où vous rencontriez 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 avec la dernière version disponible via + yum +:

sudo yum update bash

Maintenant, vérifiez à nouveau la vulnérabilité de votre système en exécutant la commande de la section précédente (https://www.digitalocean.com/community/tutorials/how-to-protect-your-server-against-the-shellshock-bash-vulnerability#check -system-vulnérabilité [Vérifier la vulnérabilité du système]).

Nouveautés CentOS / Red Hat / Fedora en fin de vie

Si vous exécutez une version de CentOS / Red Hat / Fedora considérée comme étant «en fin de statut», vous devrez effectuer une mise à niveau vers une version prise en charge pour utiliser le gestionnaire de packages pour mettre à jour Bash. La commande suivante peut être utilisée pour mettre à niveau vers une nouvelle version (il est recommandé de sauvegarder votre serveur et vos données importantes en premier lieu, au cas où vous rencontriez 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 avec la dernière version de Bash! Assurez-vous également de garder vos serveurs à jour avec les dernières mises à jour de sécurité!