Legacy Debian-Versionen und Bash Shellshock

11

Wir führen Debian Etch, Lenny und Squeeze aus, da in diesem Shop noch nie Upgrades durchgeführt wurden. Wir haben über 150 Systeme, auf denen verschiedene Debian-Versionen ausgeführt werden. Angesichts des "Shell-Schocks" dieser Woche gehe ich davon aus, dass ich Bash aktualisieren muss. Ich kenne Debian nicht, also bin ich besorgt.

Kann ich nur apt-get install bashauf allen meinen Debian-Systemen ausführen und das richtige Bash-Paket erhalten, während mein Repository auf einen Squeeze-Eintrag verweist? Wenn nicht, welche andere Vorgehensweise habe ich?

DavidH
quelle
7
Sie können Bash selektiv auf diese Systeme zurückportieren. es wird wahrscheinlich auf ihnen gut laufen. Aber Sie sollten wirklich, wirklich upgraden. Sie erkennen, dass alles, was älter als oldstable ist, keine Sicherheitsupdates enthält, oder? Denken Sie daran, dass diese Sicherheitslücke nur eine von vielen ist.
Faheem Mitha
Ist es überhaupt ein Problem? Was ist das system shellauf diesem System? (Das heißt, die Shell, die Sie erhalten, wenn Sie den systemPOSIX-Aufruf ausführen , nämlich / bin / sh). Wenn / bin / sh bash ist, müssen Sie aktualisieren. Wenn es nicht ist ... Dann geht es dir wahrscheinlich gut (aber du solltest bash trotzdem aktualisieren)
Arafangion

Antworten:

11

Sie haben die Möglichkeit, bash einfach zu aktualisieren. Verwenden Sie dazu den folgenden apt-getBefehl:

apt-get update

Nachdem das Update abgerufen wurde, werden alle verfügbaren Updates ausgeführt:

apt-get install --only-upgrade bash

Um Updates für ältere Versionen, z. B. Squeeze, zu erhalten, müssen Sie wahrscheinlich das Squeeze-LTS-Repo zu Ihrer sources.list hinzufügen.

Um dieses Repository hinzuzufügen, bearbeiten /etc/apt/sources.listSie die folgende Zeile und fügen Sie sie am Ende der Datei hinzu.

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

Um ein bestimmtes System auf Schwachstellen zu überprüfen (oder zu prüfen, ob das Upgrade funktioniert), können Sie die von Ihnen verwendeten Bash-Versionen überprüfen und feststellen, ob die Version betroffen ist (wahrscheinlich) oder ob im Web zahlreiche Shell-Testskripte verfügbar sind.

BEARBEITEN 1

Um ein Upgrade bashauf Lenny oder Etch durchzuführen, sehen Sie sich die Antwort von Ilya Sheershoff unten an, um zu erfahren, wie Sie bashaus der Quelle kompilieren und die Version bashIhrer Version manuell aktualisieren können .

BEARBEITEN 2

Hier ist eine Beispieldatei sources.listvon einem Squeeze-Server, den ich erfolgreich aktualisiert habe:

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 ---
quelle
Ein Neuling weiß möglicherweise nicht, dass er zuerst das apt-get-Update ausführen muss, um den neuesten Paketkatalog zu erhalten.
Brenda J. Butler
Ich musste Folgendes verwenden: deb ftp.us.debian.org/debian Squeeze Main Contribute zum Upgrade von Bash auf Version 4.1-3 und dann die gepatchten Quellen verwenden, um es nicht anfällig zu machen.
@ BrendaJ.Butler Guter Vorschlag, ich habe diesen Schritt auch hinzugefügt.
111 ---
4

Wenn die apt-get installOption nicht funktioniert hat, müssen Sie die Bash aus Quellen neu kompilieren. Beispiele von Lenny und Etch sind in der Antwort. Ich habe keine Squeeze-Maschinen, aber man kann leicht herausfinden, was zu tun ist.

Die Lösung von TaNNkoST habe ich im Internet gefunden:

Überprüfen Sie die Anzahl der verfügbaren Patches und ändern Sie die Anzahl im Teil "(seq", wenn neue vorhanden sind.

FÜR 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

Für ETCH habe ich die gleiche Logik befolgt, aber ich habe mich nicht yaccauf dem System installiert, deshalb musste ich das bisonPaket dafür installieren . Folgendes habe ich mir ausgedacht:

#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
quelle
1
Ich habe festgestellt, dass ich den Fehler make: yacc: Command not foundfür die Lenny-Lösung erhalten habe, und habe ihn mithilfe von behoben apt-get install bison.
SharpC
1

Ich bin mir nicht sicher, ob Sie diesen Paketen vertrauen möchten, aber jemand hat Pakete für Woody (3.0), Sarge (3.1), Etch (4.0) und Lenny (5.0) erstellt. Sie sind hier erhältlich:

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

Seien Sie vorsichtig, es gibt kein Repository für die Installation dieser Pakete über apt-get. Sie müssen dpkgIhr eigenes lokales Repository verwenden oder erstellen.

tlo
quelle
" Wenn Sie diesen Paketen vertrauen wollen "? Sie sind mit dem GPG-Schlüssel eines Debian-Entwicklers signiert. Genau wie jedes andere offizielle Debian-Paket.
Peppe
0

Um Bash unter vielen verschiedenen Betriebssystemen zu aktualisieren, können Sie das universelle Skript Deshellshock verwenden .

Apostel
quelle