Versioni precedenti di Debian e Bash Shellshock


11

Stiamo eseguendo Debian Etch, Lenny e Squeeze perché gli aggiornamenti non sono mai stati fatti in questo negozio; abbiamo oltre 150 sistemi che eseguono varie versioni di Debian. Alla luce dello "shock da shell" di questa settimana, suppongo di dover aggiornare Bash. Non conosco Debian, quindi sono preoccupato.

Posso semplicemente eseguire apt-get install bashsu tutti i miei sistemi Debian e ottenere il pacchetto Bash corretto mentre il mio repository è puntato su una voce Squeeze. In caso contrario, quale altra linea di azione ho?


7
potresti eseguire il backport selettivo di bash su questi sistemi. sarà probabilmente eseguito ok su di loro. Ma dovresti davvero aggiornare. Ti rendi conto che qualcosa di più vecchio di oldstable non ha aggiornamenti di sicurezza, giusto? E tieni presente che questa vulnerabilità di sicurezza è solo una delle tante.
Faheem Mitha,

È anche un problema? Cos'è system shellquel sistema? (Cioè, la shell che ottieni quando esegui la systemchiamata POSIX, che è / bin / sh). Se / bin / sh è bash, è necessario aggiornare. Se non lo è ... Allora probabilmente stai bene (ma dovresti comunque aggiornare bash stesso)
Arafangion

Risposte:


11

Hai la possibilità di aggiornare solo bash. Per fare ciò usa il seguente apt-getcomando:

apt-get update

Quindi dopo l'aggiornamento recupera tutti gli aggiornamenti disponibili eseguiti:

apt-get install --only-upgrade bash

Per ottenere aggiornamenti su versioni precedenti, ad esempio Squeeze, probabilmente dovrai aggiungere il repository Squeeze-LTS alla tua fonte.list.

Per aggiungere questo repository, modificare /etc/apt/sources.liste aggiungere la seguente riga alla fine del file.

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

Per verificare la vulnerabilità di un determinato sistema (o vedere se l'aggiornamento funziona) è possibile verificare le versioni bash che si stanno utilizzando e vedere se la versione è interessata (probabilmente lo è) o ci sono numerosi script di test della shell disponibili sul web.

MODIFICA 1

Per aggiornare bashsu Lenny o Etch, dai un'occhiata alla risposta di Ilya Sheershoff di seguito per come compilare bashdal sorgente e aggiornare manualmente la versione di bashquella versione che stai usando.

MODIFICA 2

Ecco un sources.listfile di esempio da un server Squeeze che ho aggiornato con successo:

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

Un principiante potrebbe non sapere che è necessario eseguire prima apt-get update per ottenere l'ultimo catalogo di pacchetti.
Brenda J. Butler,

Ho dovuto usare: deb ftp.us.debian.org/debian squeeze main contrib per aggiornare bash alla versione 4.1-3 e quindi usare i sorgenti con patch per renderlo non vulnerabile.

@ BrendaJ.Butler Ottimo suggerimento, ho aggiunto anche quel passaggio.
111 ---

4

Se l' apt-get installopzione non ha funzionato, dovrai ricompilare la bash dalle fonti. Gli esempi di Lenny ed Etch sono nella risposta. Non ho macchine Squeeze, ma si può facilmente capire cosa fare.

La soluzione di TaNNkoST che ho trovato in rete:

Controlla il numero di patch disponibili e cambia il numero nella parte "(seq" se ce ne sono di nuove.

PER 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

PER ETCH ho seguito la stessa logica, ma non ho yaccinstallato sul sistema, quindi ho dovuto installare il bisonpacchetto per quello. Ecco cosa mi è venuto in mente:

#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

1
Ho trovato l'errore make: yacc: Command not foundper la soluzione Lenny e l'ho risolto utilizzando apt-get install bison.
SharpC,

1

Non sono sicuro se vuoi fidarti di questi pacchetti ma qualcuno ha creato pacchetti per woody (3.0), sarge (3.1), etch (4.0) e lenny (5.0). Sono disponibili qui:

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

Fai attenzione, non esiste un repository per l'installazione di questi pacchetti tramite apt-get. È necessario utilizzare dpkgo creare il proprio repository locale.


" se vuoi fidarti di questi pacchetti "? Sono firmati con la chiave GPG di uno sviluppatore Debian. Proprio come qualsiasi altro pacchetto Debian ufficiale .
peppe,

0

Per aggiornare Bash su molti sistemi operativi diversi, è possibile utilizzare lo script universale Deshellshock .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.