Contact : info@ackwa.fr

Shellshock mise à jour manuelle de bash sous Release 2 OVH...

Shellshock Bash

Vous n'avez pu échapper à cette information rendue publique ce 24 septembre. Le bug Shellshock, fait la une de toute la presse, spécialisée ou non. Et pourtant, cette vulnérabilité de bash n'est pas nouvelle: elle est semble-t-il présente depuis... vingt-deux ans ! 

La création de sites Internet ne se limite donc pas au code HTML, CSS, PHP, à l'utilisation de CMS... Il faut aussi - parfois - plonger dans ces "sombres fenêtres" pour une pincée d'administration des systèmes...

Shellshock Bash bug logo by Symantec

La source de Shellshock est bash, le shell le plus couramment utilisé sous Linux, MAC OSX... L'exploitation de cette vulnérabilité et ses impacts restent sujets à débats d'experts, mais bon soyons prudents. Et donc - par précaution - mettre à jour de bash, s'avère indispensable pour contenir Shellshock.

Rien de bien compliqué, mais une petite synthèse nous semblait intéressante... Commençons par le test "à la mode" :

# env x='() { :;}; echo vulnerable Shellshock' bash -c 'echo hello'
vulnerable Shellshock
hello

Bon cette plateforme est bonne pour une mise à jour ! Voyons un peu où en est notre serveur :

# ls -lai /bin/*sh*
360545 -rwxr-xr-x 1 root root 779248 nov 28  2008 /bin/bash
360563 lrwxrwxrwx 1 root root      4 oct 29  2012 /bin/rbash -> bash
360549 lrwxrwxrwx 1 root root      4 oct 29  2012 /bin/sh -> bash

A priori, aucun shell alternatif, et sh est un alias à bash. Quid de cette version de bash ?

# bash --version
GNU bash, version 3.2.17(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

En effet cette version - comme beaucoup d'autres - est réputée vulnérable ! Reste maintenant à procéder - au plus vite - à la mise à jour de bash. Chez OVH, en Release 3 vous n'avez à effectuer qu'un simple "update" via :

# yum update

Si vous être en Release 2 OVH, vous pouvez passer les derniers patch via cette commande :

# wget ftp://ftp.ovh.net/made-in-ovh/release/patch-all.sh -O patch-all.sh; sh patch-all.sh

Parfois, sous Release 2 d'OVH, cette mise à jour n'est pas possible ou pas souhaitée, vous pouvez alors opter pour une mise à jour manuelle. L'exemple ci-après illustre la mise à jour pour une version 64 bits en Release 2 OVH :

# wget -nv ftp://ftp.ovh.net/made-in-ovh/release/2.33-2.34/bash-static_64 -O /bin/bash-static
14:22:27 URL: ftp://ftp.ovh.net/made-in-ovh/release/2.33-2.34/bash-static_64 [1744432] -> "/bin/bash-static" [1]
# chmod a+x /bin/bash-static
# mv -f /bin/bash /bin/bash.insecure
# ln -sf bash-static /bin/bash

Reste maintenance à reprendre nos premières commandes, pour voir où nous en sommes :

# env x='() { :;}; echo vulnerable Shellshock' bash -c 'echo hello'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
# ls -lai /bin/*sh*
381047 lrwxrwxrwx 1 root root      11 sep 27 14:22 /bin/bash -> bash-static
360545 -rwxr-xr-x 1 root root  779248 nov 28  2008 /bin/bash.insecure
381046 -rwxr-xr-x 1 root root 1744432 sep 27 14:22 /bin/bash-static
360563 lrwxrwxrwx 1 root root       4 oct 29  2012 /bin/rbash -> bash
360549 lrwxrwxrwx 1 root root       4 oct 29  2012 /bin/sh -> bash
# bash --version
GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Chaque distribution dispose - ou disposera - de sa propre procédure. Sous debian, la mise à jour est là aussi simple :

# apt-get update
# apt-get upgrade

Ou bien pour la seule mise à jour de bash :

# apt-get install -y bash

ATTENTION, votre fichier /etc/apt/sources.list doit être valide pour les mises à jour de sécurité pour wheezy ou squeeze. Sous Wheezy, le mien ressemble à ceci :

## Debian Wheezy - dépôts officiels
deb http://ftp.fr.debian.org/debian/ wheezy main
deb http://ftp.fr.debian.org/debian/ wheezy-updates main
deb http://security.debian.org/      wheezy/updates main

Pour Squeeze, il faut - si ce n'est déjà fait - ajouter à votre fichier /etc/apt/sources.list le squeeze-lts repository squeeze-lts. Mon sources.list ressemble à ceci :

## Debian Squeeze - dépôts officiels
deb http://ftp.fr.debian.org/debian/ squeeze main
deb http://ftp.fr.debian.org/debian/ squeeze-updates main
deb http://security.debian.org/      squeeze/updates main
deb http://ftp.us.debian.org/debian/ squeeze-lts main non-free contrib

Bon, et bien pour cette fois, c'est réglé. A suivre lors de la prochaine "maxi vulnérabilité"...

En savoir plus :

Un peu de technique :