Versions Debian héritées et Bash Shellshock

11

Nous utilisons Debian Etch, Lenny et Squeeze car aucune mise à niveau n'a été effectuée dans cette boutique; nous avons plus de 150 systèmes exécutant différentes versions de Debian. À la lumière du «choc du shell» de cette semaine, je suppose que je dois mettre à niveau bash. Je ne connais pas Debian donc je suis inquiet.

Puis-je simplement exécuter apt-get install bashsur tous mes systèmes Debian et obtenir le bon paquet Bash pendant que mon référentiel pointe vers une entrée Squeeze. Sinon, quel autre plan d'action ai-je?

DavidH
la source
7
vous pouvez rétroporter sélectivement bash vers ces systèmes. cela fonctionnera probablement bien sur eux. Mais vous devez vraiment, vraiment, mettre à niveau. Vous réalisez que quelque chose de plus ancien que oldstable ne dispose pas de mises à jour de sécurité, n'est-ce pas? Et gardez à l'esprit que cette vulnérabilité de sécurité n'est qu'une parmi d'autres.
Faheem Mitha
Est-ce même un problème? Quel est le system shellsystème? (C'est-à-dire le shell que vous obtenez lorsque vous exécutez l' systemappel POSIX, qui est / bin / sh). Si / bin / sh est bash, alors vous devez mettre à jour. Si ce n'est pas le cas ... alors vous allez probablement bien (mais vous devriez quand même mettre à jour bash lui-même)
Arafangion

Réponses:

11

Vous avez la possibilité de simplement mettre à niveau bash. Pour ce faire, utilisez la apt-getcommande suivante :

apt-get update

Ensuite, une fois la mise à jour récupérée, toutes les mises à jour disponibles s'exécutent:

apt-get install --only-upgrade bash

Pour obtenir des mises à jour sur des versions plus anciennes, Squeeze par exemple, vous devrez probablement ajouter le dépôt Squeeze-LTS à votre sources.list.

Pour ajouter ce référentiel, modifiez /etc/apt/sources.listet ajoutez la ligne suivante à la fin du fichier.

deb http://ftp.us.debian.org/debian squeeze-lts main non-free contrib

Pour vérifier un système particulier pour les vulnérabilités (ou voir si la mise à niveau fonctionne), vous pouvez vérifier les versions bash que vous utilisez et voir si la version est affectée (c'est probablement le cas) ou il existe de nombreux scripts de test de shell disponibles sur le Web.

EDIT 1

Pour mettre bashà niveau sur Lenny ou Etch, jetez un œil à la réponse d'Ilya Sheershoff ci-dessous pour savoir comment compiler à bashpartir de la source et mettre à niveau manuellement la version de bashcelle que votre version utilise.

EDIT 2

Voici un exemple de sources.listfichier d'un serveur Squeeze que j'ai mis à niveau avec succès:

deb http://ftp.us.debian.org/debian/ squeeze main
deb-src http://ftp.us.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

# squeeze-updates, previously known as 'volatile'
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# Other - Adding the lsb source for security updates
deb http://http.debian.net/debian/ squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian/ squeeze-lts main contrib non-free
111 ---
la source
Un débutant pourrait ne pas savoir qu'il doit d'abord exécuter la mise à jour apt-get pour obtenir le dernier catalogue de packages.
Brenda J. Butler du
J'ai dû utiliser: deb ftp.us.debian.org/debian squeeze main contrib pour mettre à niveau bash vers la version 4.1-3, puis utiliser les sources corrigées pour le rendre non vulnérable.
@ BrendaJ.Butler Bonne suggestion, j'ai également ajouté cette étape.
111 ---
4

Si l' apt-get installoption n'a pas fonctionné, vous devrez recompiler le bash à partir des sources. Des exemples de Lenny et Etch sont dans la réponse. Je n'ai pas de machine Squeeze, mais on peut facilement savoir quoi faire.

La solution de TaNNkoST que j'ai trouvée sur le net:

Vérifiez le nombre de patchs disponibles et changez le nombre dans la partie "(seq" s'il y en a de nouveaux).

POUR LENNY

#first find out the version you have so you know what to get for the patches and source files
dpkg-query -l|grep bash
ii bash 4.1-3 The GNU Bourne Again SHell

#do this in the /usr/src dir
cd /usr/src
wget http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz
tar zxvf bash-4.1.tar.gz
cd bash-4.1

# fetch all patches, including latest ones that patches CVE-2014-6271
for i in $(seq -f "%03g" 0 14); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-4.1-patches/bash41-$i
patch -p0 < bash41-$i
done

# check if yacc is installed. if not - install yacc
apt-get install bison

# configure,compile and install bash (this will install bash into /usr/local/bin/bash)
./configure && make
make install

# make a symlink from /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash

# check that you're not vulnerable anymore wiith the output of the following
# it should not output vulnerable word anymore
env x='() { :;}; echo vulnerable' bash -c echo

#you can  Delete the old one thats a problem
rm /bin/bash.old

POUR ETCH J'ai suivi la même logique, mais je n'ai pas été yaccinstallé sur le système, j'ai donc dû installer le bisonpackage pour cela. Voici ce que j'ai trouvé:

#first find out the version you have so you know what to get for the patches and source files
dpkg-query -l|grep bash
ii bash 3.2-4 The GNU Bourne Again SHell

#do this in the /usr/src dir
cd /usr/src
wget http://ftp.gnu.org/gnu/bash/bash-3.2.tar.gz
tar zxvf bash-3.2.tar.gz
cd bash-3.2

# fetch all patches, including latest ones that patches CVE-2014-6271
for i in $(seq -f "%03g" 0 54); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-$i
patch -p0 < bash32-$i
done

# check if yacc is installed. if not - install yacc
apt-get install bison

# configure,compile and install bash (this will install bash into /usr/local/bin/bash)
./configure && make
make install

# at this point my system is not vulnerable already, test your system
env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

# if this is not the case for your system - try the following

# make a symlink from /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash

# check that you're not vulnerable anymore wiith the output of the following
# it should not output vulnerable word anymore
env x='() { :;}; echo vulnerable' bash -c echo

#you can Delete the old one thats a problem
rm /bin/bash.old
Ilya Sheershoff
la source
1
J'ai trouvé que j'avais l'erreur make: yacc: Command not foundpour la solution Lenny et je l'ai corrigée en utilisant apt-get install bison.
SharpC
1

Je ne sais pas si vous voulez faire confiance à ces packages mais quelqu'un a construit des packages pour woody (3.0), sarge (3.1), etch (4.0) et lenny (5.0). Ils sont disponibles ici:

http://blog.bofh.it/debian/id_451

Attention, il n'y a pas de référentiel pour installer ces packages via apt-get. Vous devez utiliser dpkgou créer votre propre référentiel local.

tlo
la source
" si vous voulez faire confiance à ces packages "? Ils sont signés avec la clé GPG d'un développeur Debian. Comme tout autre paquet Debian officiel .
peppe
0

Pour mettre à jour Bash sur de nombreux OS différents, vous pouvez utiliser le script universel Deshellshock .

Apôtre
la source