Versiones de Debian heredadas y Bash Shellshock

11

Estamos ejecutando Debian Etch, Lenny y Squeeze porque nunca se han realizado actualizaciones en esta tienda; Tenemos más de 150 sistemas que ejecutan varias versiones de Debian. A la luz del "shock de shell" de esta semana, supongo que necesito actualizar bash. No conozco Debian, así que estoy preocupado.

¿Puedo simplemente ejecutar apt-get install bashen todos mis sistemas Debian y obtener el paquete Bash correcto mientras mi repositorio apunta a una entrada Squeeze? Si no, ¿qué otro curso de acción tengo?

DavidH
fuente
77
podría hacer backport selectivo de bash a esos sistemas. será probablemente funcionar bien en ellos. Pero realmente, realmente, debería actualizar. Te das cuenta de que cualquier cosa anterior a oldstable no tiene actualizaciones de seguridad, ¿verdad? Y ten en cuenta que esta vulnerabilidad de seguridad es solo una de muchas.
Faheem Mitha
¿Es incluso un problema? ¿Qué hay system shellen ese sistema? (Es decir, el shell que obtienes cuando ejecutas la systemllamada POSIX, que es / bin / sh). Si / bin / sh es bash, entonces necesita actualizar. Si no es así, entonces probablemente estés bien (pero deberías actualizar bash de todos modos)
Arafangion

Respuestas:

11

Tienes la opción de simplemente actualizar bash. Para hacerlo, use el siguiente apt-getcomando:

apt-get update

Luego, después de que la actualización obtiene todas las actualizaciones disponibles, se ejecutan:

apt-get install --only-upgrade bash

Para obtener actualizaciones de versiones anteriores, por ejemplo, Squeeze, probablemente necesitará agregar el repositorio Squeeze-LTS a su sources.list.

Para agregar este repositorio, edite /etc/apt/sources.listy agregue la siguiente línea al final del archivo.

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

Para verificar las vulnerabilidades de un sistema en particular (o ver si la actualización funciona), puede verificar las versiones de bash que está utilizando y ver si la versión está afectada (probablemente sí) o si hay numerosos scripts de prueba de shell disponibles en la web.

EDITAR 1

Para actualizar bashen Lenny o Etch, eche un vistazo a la respuesta de Ilya Sheershoff a continuación sobre cómo compilar bashdesde la fuente y actualizar manualmente la versión de la bashque está utilizando su lanzamiento.

EDITAR 2

Aquí hay un sources.listarchivo de ejemplo de un servidor Squeeze que actualicé con éxito:

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 ---
fuente
Un novato puede no saber que tiene que ejecutar apt-get update primero, para obtener el último catálogo de paquetes.
Brenda J. Butler
Tuve que usar: deb ftp.us.debian.org/debian squeeze main contrib para actualizar bash a la versión 4.1-3 y luego usar las fuentes parcheadas para que no sea vulnerable.
@ BrendaJ.Butler Buena sugerencia, también agregué ese paso.
111 ---
4

Si la apt-get installopción no funcionó, deberá volver a compilar el bash de las fuentes. Los ejemplos de Lenny y Etch están en la respuesta. No tengo ninguna máquina Squeeze, pero uno puede averiguar fácilmente qué hacer.

La solución de TaNNkoST que he encontrado en la red:

Verifique el número de parches disponibles y cambie el número en la parte "(seq" si hay nuevos).

Para 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

PARA ETCH , he seguido la misma lógica, pero no he yaccinstalado en el sistema, así que tuve que instalar el bisonpaquete para eso. Esto es lo que se me ocurrió:

#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
fuente
1
Descubrí que recibí el error make: yacc: Command not foundde la solución de Lenny y lo solucioné usando apt-get install bison.
SharpC
1

No estoy seguro si desea confiar en estos paquetes, pero alguien ha creado paquetes para woody (3.0), sarge (3.1), etch (4.0) y lenny (5.0). Están disponibles aquí:

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

Tenga cuidado, no hay un repositorio para instalar estos paquetes a través de apt-get. Necesita usar dpkgo crear su propio repositorio local.

tlo
fuente
" si quieres confiar en estos paquetes "? Están firmados con la clave GPG de un desarrollador de Debian. Como cualquier otro paquete oficial de Debian.
peppe
0

Para actualizar Bash en muchos sistemas operativos diferentes, puede usar el script universal Deshellshock .

Apóstol
fuente