Starsze wersje Debiana i Bash Shellshock

11

Prowadzimy Debian Etch, Lenny i Squeeze, ponieważ w tym sklepie nigdy nie przeprowadzono aktualizacji; mamy ponad 150 systemów z różnymi wersjami Debiana. W świetle „szoku powłoki” w tym tygodniu zakładam, że muszę zaktualizować bash. Nie znam Debiana, więc się martwię.

Czy mogę po prostu wykonać apt-get install bashna wszystkich moich systemach Debian i uzyskać odpowiedni pakiet Bash, podczas gdy moje repozytorium jest skierowane na pozycję Squeeze. Jeśli nie, jaki mam inny sposób postępowania?

DavidH
źródło
7
możesz selektywnie backportować bash do tych systemów. prawdopodobnie będzie działać poprawnie na nich. Ale naprawdę, naprawdę powinieneś zaktualizować. Zdajesz sobie sprawę, że coś starszego niż oldstable nie ma aktualizacji zabezpieczeń, prawda? Pamiętaj, że ta luka w zabezpieczeniach jest tylko jedną z wielu.
Faheem Mitha
Czy to w ogóle problem? Co jest system shellw tym systemie? (To znaczy, jaką powłokę otrzymujesz po uruchomieniu systemwywołania POSIX, czyli / bin / sh). Jeśli / bin / sh to bash, musisz zaktualizować. Jeśli tak nie jest ... Prawdopodobnie wszystko w porządku (ale i tak powinieneś zaktualizować bash)
Arafangion

Odpowiedzi:

11

Masz opcję uaktualnienia bash. Aby to zrobić, użyj następującego apt-getpolecenia:

apt-get update

Następnie po pobraniu aktualizacji uruchamiane są wszystkie dostępne aktualizacje:

apt-get install --only-upgrade bash

Aby uzyskać aktualizacje starszych wersji, na przykład Squeeze, prawdopodobnie będziesz musiał dodać repozytorium Squeeze-LTS do swojej strony sources.list.

Aby dodać to repozytorium, edytuj /etc/apt/sources.listi dodaj następujący wiersz na końcu pliku.

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

Aby sprawdzić konkretny system pod kątem luk (lub sprawdzić, czy aktualizacja działa), możesz sprawdzić używane wersje bash i sprawdzić, czy dotyczy to wersji (prawdopodobnie jest) lub czy w Internecie dostępnych jest wiele skryptów testowych powłoki .

EDYCJA 1

Aby dokonać aktualizacji bashna Lenny lub Etch, spójrz na odpowiedź Ilyi Sheershoff poniżej, jak skompilować bashze źródła i ręcznie zaktualizować wersję używaną przez bashtwoje wydanie.

EDYCJA 2

Oto przykładowy sources.listplik z serwera Squeeze, który pomyślnie zaktualizowałem:

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 ---
źródło
Początkujący może nie wiedzieć, że najpierw muszą uruchomić aktualizację apt-get, aby uzyskać najnowszy katalog pakietów.
Brenda J. Butler
Musiałem użyć: deb ftp.us.debian.org/debian squeeze main contrib, aby zaktualizować bash do wersji 4.1-3, a następnie użyć poprawionych źródeł, aby nie był podatny na ataki.
@ BrendaJ. Butler Dobra sugestia, dodałem również ten krok.
111 ---
4

Jeśli apt-get installopcja nie działała, musisz ponownie skompilować bash ze źródeł. Przykłady Lenny'ego i Etcha znajdują się w odpowiedzi. Nie mam żadnych maszyn Squeeze, ale łatwo można dowiedzieć się, co robić.

Rozwiązanie z TaNNkoST Znalazłem w internecie:

Sprawdź liczbę dostępnych poprawek i zmień liczbę w części „(seq”, jeśli są nowe).

DLA 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

DLA ETCH Postępowałem zgodnie z tą samą logiką, ale nie yacczainstalowałem się w systemie, więc musiałem zainstalować bisonpakiet. Oto, co wymyśliłem:

#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
źródło
1
Odkryłem, że mam błąd make: yacc: Command not foundrozwiązania Lenny i naprawiłem go za pomocą apt-get install bison.
SharpC
1

Nie jestem pewien, czy chcesz ufać tym pakietom, ale ktoś zbudował pakiety dla woody (3.0), sarge (3.1), etch (4.0) i lenny (5.0). Są dostępne tutaj:

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

Uważaj, nie ma repozytorium do instalowania tych pakietów za pośrednictwem apt-get. Musisz użyć dpkglub utworzyć własne lokalne repozytorium.

tlo
źródło
jeśli chcesz zaufać tym pakietom ”? Są podpisane przy użyciu klucza GPG dewelopera Debiana. Tak jak każdy inny oficjalny pakiet Debiana.
peppe
0

Aby zaktualizować Bash na wielu różnych systemach operacyjnych, możesz użyć uniwersalnego skryptu Deshellshock .

Apostoł
źródło