web-dev-qa-db-fra.com

Versions Legacy Debian et Shellshock Bash

Nous courons Debian Etch, Lenny et Squeeze, car les mises à niveau n'ont jamais été faite dans ce magasin; Nous avons plus de 150 systèmes exécutant diverses versions Debian. À la lumière du "choc de la coquille" de cette semaine, je suppose que j'ai besoin de mettre à niveau Bash. Je ne connais pas Debian Je suis donc concerné.

Puis-je simplement exécuter apt-get install bash Sur tous mes systèmes Debian et obtenez le forfait Bash correct pendant que mon référentiel est pointé sur une entrée de pression. Sinon, quel autre plan d'action ai-je?

11
DavidH

Vous avez la possibilité de simplement mettre à niveau Bash. Pour ce faire, utilisez ce qui suit apt-get commande:

apt-get update

Ensuite, une fois que la mise à jour fournit toutes les mises à jour disponibles:

apt-get install --only-upgrade bash

Pour obtenir des mises à jour sur les versions plus anciennes, presser par exemple, vous aurez probablement besoin d'ajouter le repo Squeeze-LTS à vos sources.List.

Pour ajouter ce référentiel, éditer /etc/apt/sources.list et 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 (elle est probablement) ou il y a Nombreux scripts de test de shell disponibles sur le Web.

Éditer 1

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

Éditer 2

Voici un exemple sources.list Fichier d'un serveur Squeeze 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
11
111---

Si la apt-get install L'option n'a pas fonctionné, vous devrez recompiler la bash des sources. Les exemples de Lenny et de gravure sont dans la réponse. Je n'ai pas de machines à compression, mais on peut facilement comprendre quoi faire.

Le solution de tankost J'ai trouvé sur le net:

Vérifiez le nombre de correctifs disponibles et modifiez le numéro dans la partie "(SEQ" s'il en existe 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 yacc installé sur le système pour que je puisse installer bison paquet pour cela. Voici ce que je suis venu avec:

#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
4
Ilya Sheershoff

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

0
Apostle