Une très grave faille d'ampleur similaire à HeartBleed découverte dans Linux, UNIX et Mac OS X

Par:
fredericmazue

jeu, 25/09/2014 - 12:29

Une vulnérabilité très grave vient d'être découverte dans Bash, pour Bourne Again SHell, qui est le shell le plus utilisé sur les systèmes de types UNIX. De surcroît, Bash est le shell par défaut sur la plupart de ces systèmes. Sont donc potentiellement impactés par cette vulnérabilité tous les systèmes UNIX, Linux et Mac OS X, ainsi que bien  entendu tous les systèmes de type UNIX, par exemple FreeBSD.

La faille a été découverte par Stephane Chazelas, administrateur UNIX et Linux à la  U.K. robotics company SeeByte. Pour les experts en sécurité, cette faille est de l'ampleur de la faille HeartBleed découverte en mai 2014.

Cette faille est même d'une certaine façon pire que HeartBleed si l'on considère  que Bash existe depuis les années 80 et que très probablement la faille y est présente depuis le début.

La vulnérabilité consiste dans le fait qu'il est possible de créer des variables d'environnement au shell contenant du code pouvant être exécuté, ce qui rend les systèmes vulnérables aux attaques par injections. Le nom de la variable malicieuse peut être quelconque, seul son contenu étant important.

Non seulement la vulnérabilité est énorme, mas elle peut se nicher partout, car très nombreux sont les programmes qui interagissent avec le Shell dans les système de type UNIX. Il sont tellement nombreux qu'il y en a forcément auxquels vous ne pensez pas, même si vous êtes un administrateur système rigoureux.

Pour savoir si vous êtes vulnérables il vous suffit de faire un essai dans votre Bash :

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

Si vous voyez le message 'vulnerable this is a test' (et vous le verrez...) votre système est vulnérable.

Si vous n'êtes pas vulnérable, vous verrez ceci :

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

Josh Bressers, un responsable de la sécurité chez Red hat commente cette vulnérabilité ainsi :

"C'est super simple et toutes les versions de Bash sont vulnérables. C'est extrêmement grave, mais un attaquant a besoin de condition spécifique pour exploiter la faille, à savoir pouvoir définir une variable d'environnement. Heureusement cela n'est pas courant".

Malheureusement les cas sont malgré tout nombreux, ainsi qu'on peut le lire sur le blog de sécurité de Red Hat.

ForceCommand, qui normalement limite les exécution de ligne de commande pour les utilisateurs distants peut être bipassé

  • Les serveurs Apache qui utilisent les modules mod_cgi et mod_cgid sont vulnérables si les scripts CGI sont écrit en Bash ou s'ils lancent un sous shell Traquez les appels system/popen en C, os.system/os.popen en Python, system/exec en PHP (si exécite en mode CGI),et open/system en Perl.
  • Les script PHP exécutés avec mod_php ne sont pas affectés par le problème, sauf bien sûr s'ils lancent un sous shell
  • Les clients DHCP, puisqu'ils invoquent des scripts pour configurer le systèmes, peuvent être victime de valeurs toxiques retournées par un serveurs malicieux.
  • Les démons et les applications avec le bits SUID sont vulnérables s'ils exécutent des scripts contenant des variables d'environnement qui peuvent être trafiquées par les utilisateurs.
  • Et bien sûr plus généralement, toute application qui tourne dans un shell ou qui en lance un est dangereuse.

A cela ajoutons qu'il existent des interfaces Web d'administration de serveurs, comme par exemple Webmin, qui permettent d'exécuter des lignes de commande Shell.  A désactiver de toute urgence en attendant que le problème soit corrigé.

Les distributions Red Hat, Fedora, CentOS, Debian et Ubuntu proposent déjà des patches. Les autres distributions ne tarderont sans doute pas. Appliquez ces patches de toute urgence sur vos systèmes.