A cause des CVE-2014-6271 et CVE-2014-7169 sur OS X, je me demandais : est-ce que bash peut être remplacé entièrement par un autre shell non affecté (par exemple dash ou autres) ?
Réponses
Trop de publicités?Tout d'abord, vous n'avez pas besoin de faire cela, sauf si vous offrez des services web au public depuis votre Mac. Si ce n'est pas le cas, attendez qu'une mise à jour de sécurité officielle soit publiée par Apple.
Toutefois, si vous proposez des services web, vous pourriez vouloir vous mettre à jour.
Patch officiel
Apple a publié un Mise à jour de sécurité officielle de Bash ici
Vérifier si vous êtes vulnérable
Confirmez d'abord que vous utilisez un bash obsolète :
$ which bash
/bin/bash
$ /bin/bash --version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.
La version la plus récente de bash est la 4.3.25.
Si vous n'avez pas installé Xcode, vous aurez besoin des outils de ligne de commande Xcode, qui peuvent être installés par
$ xcode-select --install
Ou de la portail des développeurs .
Pour installer Brew ( http://brew.sh ) :
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Alors, faites-le :
$ brew doctor
Suivez les instructions en cas de problème. Nombreux problèmes courants sont abordées ici .
Ensuite, mettez à jour brew avec la dernière liste de paquets :
$ brew update
Pour obtenir la dernière version de bash 4.3.25 :
$ brew install bash
Cela permet d'installer bash dans /usr/local/Cellar/bash/4.3.25/bin/bash
L'ancien bash
et sh
existe toujours à /bin
Après l'installation, vous devez donc renommer les anciens exécutables dans un nouveau fichier.
$ sudo mv /bin/bash /bin/bash_old
$ sudo mv /bin/sh /bin/sh_old
Si vous êtes très paranoïaque, vous pouvez supprimer les droits d'exécution sur le fichier bash_old
$ sudo chmod a-x /bin/bash_old /bin/sh_old
Créez ensuite un lien symbolique vers le nouveau bash 4.3.25 installé par Brew.
$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/bash
$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/sh
Redémarrez et c'est terminé.
Attention, cela risque de casser certains scripts shell existants qui pourraient s'appuyer sur bash 3.2 ou sur les différences entre les systèmes d'exploitation Mac sh
a par rapport à linux sh
. Il existe une solution beaucoup plus sophistiquée pour remplacer bash et sh à partir des sources dans cet article.
Dans la plupart des cas, il est préférable d'attendre les mises à jour officielles.
Comme l'a dit @webmarc, non. Vous pouvez remplacer /bin/bash
avec un autre shell mais vous casserez certainement certains programmes car bash a plusieurs différences dans sa syntaxe qui le rendent incompatible. Je n'ai pas trouvé de shell alternatif compatible avec bash. Cependant, j'ai fait un lien symbolique entre dash et /bin/sh
et n'a trouvé aucun problème jusqu'à présent.
En ce qui concerne le DHCP ici il existe une attaque de type "proof of concept". L'article porte sur dhcpcd
(un client Linux). Je ne suis pas sûr de ce qu'il en est pour Mac OS X. Dans la rubrique discussion sur Hacker News ils disent que le client OS X n'utilise pas du tout bash.
Un autre vecteur pourrait être sshd
. Mais l'attaque nécessite une authentification. Donc, à moins que vous n'exécutiez un service ssh tel qu'un git
vous devriez être en sécurité.
dash
ne contient qu'un minuscule sous-ensemble des commandes figurant dans le document bash
et même sh
(qui est lui-même un sous-ensemble de choses dans bash
). En remplaçant l'un ou l'autre par dash
produira certainement des scripts inopérants sur votre système et risque de l'endommager plus qu'il ne le protège.
Vous pouvez recompiler bash pour atténuer certains (au moment de la rédaction de cet article) des dangers potentiels ou attendre qu'Apple publie un correctif officiel.
certains sites indiquent que l'on peut être infecté par un client DHCP.
Le présent n'est pas s'appliquent à OS X. Sur les systèmes Linux, un shell script est généralement appelé après avoir reçu un bail DHCP du serveur. Ce n'est pas le cas sous OS X.
À moins que vous ne fassiez tourner sur votre Mac un serveur web qui sert des scripts, vous n'avez guère de raisons de vous inquiéter.