GNU/Linux >> Tutoriels Linux >  >> Linux

Comment réparer Bash Shellshock CVE-2014-6271, CVE-2014-7169 sous Linux

CVE-2014-6271 est un correctif critique à fort impact. Si vous utilisez un système Linux, vous devez corriger cette vulnérabilité.

Cette vulnérabilité CVE-2014-6271 (et CVE-2014-7169) est également appelée Shellshock.

Une faille a été trouvée dans la façon dont Bash a évalué certaines variables d'environnement spécialement conçues. Un attaquant pourrait utiliser cette faille pour outrepasser ou contourner les restrictions de l'environnement afin d'exécuter des commandes shell. Certains services et applications permettent à des attaquants distants non authentifiés de fournir des variables d'environnement, leur permettant d'exploiter ce problème.

En utilisant bash shell, cette vulnérabilité permet à un attaquant d'exécuter des commandes shell aléatoires sur votre environnement. L'idée derrière cela est qu'un attaquant peut contourner la restriction de la variable d'environnement, ce qui lui permet d'exécuter des commandes shell.

Veuillez noter que certains services (ou applications) qui s'exécutent sur des serveurs Linux peuvent permettre à des attaquants non authentifiés de spécifier certaines variables d'environnement, ce qui leur permettra à leur tour d'exploiter cette vulnérabilité sur le réseau sans aucune authentification.

Tout ce que vous avez à faire pour résoudre ce problème est de mettre à jour votre bash vers la dernière version. Par exemple, sur RedHat ou CentOS, procédez comme suit pour résoudre ce problème :

yum update bash

Votre système est-il vulnérable à CVE-2014-6271 ?

RedHat a fourni le script suivant pour tester si votre système est vulnérable ou non.

Si vous voyez le mot "vulnérable" dans la sortie, votre système est vulnérable.

env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"

Veuillez noter que vous pouvez également voir un message d'erreur avec le mot "vulnérable" dans la sortie. Par exemple, voici la sortie sur un système RedHat 5 et RedHat 6 (et CentOS 5 et 6) qui est vulnérable.

# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test

Version de Bash avant le correctif

Avant de résoudre le problème, vérifiez votre version actuelle de bash. Sur RedHat 5 (et CentOS 5), j'avais la version bash suivante avant le correctif :

# rpm -qa | grep bash
bash-3.2-24.el5

Sur RedHat 6 (et CentOS 6), j'avais la version bash suivante avant le correctif :

# rpm -qa | grep bash
bash-4.1.2-3.el6.x86_64

Corrigez le CVE-2014-6271

Maintenant, mettez à jour le bash en utilisant yum (ou un autre utilitaire de gestion de paquets pour votre distribution appropriée)

yum update bash

Sur RedHat 5 (et CentOS 5), voici la version bash après la mise à jour, qui a corrigé la vulnérabilité.

# rpm -qa | grep bash
bash-3.2-33.el5_11.4

Sur RedHat 6 (et CentOS 6), voici la version bash après la mise à jour, qui a corrigé la vulnérabilité.

# rpm -qa | grep bash
bash-4.1.2-15.el6_5.2.x86_64

Testez la vulnérabilité CVE-2014-6271 après le correctif

Une fois le bash mis à niveau vers la dernière version, lorsque vous exécutez le test, vous ne verrez pas le mot "vulnérable" dans la sortie de commande suivante. Veuillez noter que l'avertissement et le message d'erreur affichés ci-dessous sont corrects.

# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test

Qu'en est-il de CVE-2014-7169 ?

Après la publication du correctif initial, redhat a découvert que le correctif CVE-2014-6271 était incomplet et que bash autorisait toujours quelques caractères pouvant être placés dans la variable d'environnement dans certaines circonstances particulières.

Lorsque vous avez effectué la mise à jour yum bash de l'étape précédente, il obtient automatiquement la dernière version de bash, qui inclut également le correctif pour CVE-2014-7169. Donc, vous n'avez vraiment rien à faire de spécifique pour ce correctif.

Cependant, vous pouvez toujours tester pour vous assurer que votre système n'est pas vulnérable à ce problème en exécutant ce qui suit sur votre système :

cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo

Sur un système vulnérable à CVE-2014-7169, vous remarquerez que ce qui suit a créé le fichier /tmp/echo, et il affichera le contenu du fichier.

Si vous voyez la sortie suivante, vous devez mettre à jour votre bash vers la dernière version à l'aide de "yum update bash" (ou utiliser l'utilitaire de gestion de packages approprié pour votre distribution)

# cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 16:15:09 PDT 2014

Si votre système n'est pas vulnérable à CVE-2014-7169, vous verrez la sortie suivante, qui ne créera pas le fichier /tmp/echo.

# cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory

Informations supplémentaires

  • Détails sur CVE-2014-6271, CVE-2014-7169 sur le site Web de RedHat
  • Rapport RedHat (CentOS, Fedora) Bugzilla pour CVE-2014-6271
  • Rapport RedHat (CentOS, Fedora) Bugzilla pour CVE-2014-7169
  • Alerte de sécurité Oracle pour CVE-2014-7169 – Pour Solaris ou Oracle Enterprise Linux
  • Ubuntu CVE-2014-7169
  • Debian CVE-2014-7169

Linux
  1. Comment effacer l'historique de la ligne de commande BASH sous Linux

  2. Comment effacer l'historique de Bash sous Linux

  3. Comment réparer l'erreur d'échec d'authentification Cron sous Linux ?

  4. Comment raccourcir l'invite Bash sous Linux ?

  5. Comment vérifier syslog dans Bash sous Linux ?

Comment utiliser la commande Declare dans Linux Bash Shell

Comment utiliser la commande echo dans les scripts Bash sous Linux

Vérifiez si votre système Linux est vulnérable à Shellshock et corrigez-le

Comment installer Linux Bash Shell sur Windows 10

Comment effacer l'historique de Bash sous Linux et Mac

Comment utiliser Linux Bash Shell dans Windows 10 ?