PCI – Shellshock : Faille de vulnérabilité level 10

Shellshock est une vulnérabilité critique dans GNU Bash. Il est temps de patcher ces serveur Open.

shellshockw2Depuis maintenant quelques jours on constate  une faille au plus haut niveau sur les listes des CVE sur un composant présent sur la majorité des systèmes ouverts (Unix, Linux, Mac OS…), le bash.

Dans le cadre du maintien de la conformité PCI DSS, mes sondes remontent que je suis potentiellement exposé à Shellshock. Je vous propose de vérifier les différentes variantes répertoriées à ce jour.

Les éditeurs sortent patch sur patch et les failles se suivent sur Bash…voyons cela ne fait que 23 ans que cette faille existe pourquoi autant de précipitation d’un seul coup.

Peut être du à la simplicité d’utilisation de celle-ci par Mme Michu. On va démystifier un peu cette faille majeure. Les versions impactées du Bash vont de la version 1.14 (Sortie en 1994) jusqu’au plus récent 4.3. Cette faille permet d’exécuter du code à votre insu et faire pratiquement n’importe quoi sur votre machine.

Je vous propose plusieurs options pour savoir si vous êtes vulnérable ou pas ?

Variante N°1 (CVE-2014-6271)

Ils existent différentes façon de savoir si votre système est vulnérable à shellshock. Vous pouvez entrer la ligne de commande suivante:

env x='() { :;}; echo vulnerable' bash -c "echo je suis pas touche"

Si vous avez à l’écran « vulnerable » vous devez faire une mise à jour de votre bash. Dans le cas ci-dessous vous n’êtes pas vulnérable.

shellshock1

Variante N°2

On a ici une variante de Shellshock

env X=' () { }; echo tes foutu' bash -c 'date'

Si le résultat est tes foutu, c’est que votre système est vulnérable.

Variante N°3 (CVE-2014-7186)

bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' ||
echo "CVE-2014-7186 tu es vulnerable, redir_stack"

Si le système est vulnérable, vous allez avoir « CVE-2014-7186 tu es vulnerable, redir_stack ».

Variante N°4 (CVE-2014-7187)

(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash ||
echo "CVE-2014-7187 vulnerable, word_lineno"

Un système vulnérable aura pour résultat « CVE-2014-7187 vulnerable, word_lineno ».

Variante N°5 (CVE-2014-6278)

shellshocker='() { echo You are vulnerable; }' bash -c shellshocker

Vous ne devez pas voir « You are vulnerable », si vous avez patché votre système vous devriez avoir’’ « bash: shellshocker: command not found » comme ci-dessous.

shellshock2

Variante N°6 (CVE-2014-6277)

bash -c "f() { x() { _;}; x() { _;} <<a; }" 2>/dev/null || echo vulnerable

si votre shell vous annonces « vulnerable », vous êtes vulnérable comme ci-dessous avec Mac OS 10.9.5 patché avec les derniers patchs de sécurités fournis par Apple Inc.

shellsock3


 

 

Pour connaitre sa version de bash. il suffit de rentrer la ligne de commande bash --version

Sur un serveur Ubuntu LTS 12.04

user1@smtp:~$ bash --version
GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
Licence GPLv3+ : GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/gpl.html>
Ceci est un logiciel libre ; vous être libre de le modifier et de le redistribuer.
Aucune garantie n'est fournie, dans la mesure de ce que la loi autorise.

Sur un Mac OSx10.5.9 avec le patch officiel Apple

wellington:~ $ bash --version
GNU bash, version 3.2.53(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.
wellington:~ $

Conclusion:

Les patches ne sont pas tous de même niveau suivant les éditeurs mais n’ayant pas d’autres options à ce jour, je vous recommande fortement de patcher et patcher vos serveurs Open. Pour la plupart des systèmes Linux, les commandes suivantes suffiront:

Pour Linux Ubuntu Serveur

#apt-get update; apt-get install --only-upgrade bash

Pour Linux Redhat et CentOS

#yum update bash -y

et bien entendu il reste la compilation à la main pour les vrais barbus 🙂

Sources externes (NIST, RED HAT…):