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?


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

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

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.


" 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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.