¿Cómo soluciono la vulnerabilidad de seguridad de Shellshock en debian testing / jessie?

24

El comando de prueba

x='() { :;}; echo vulnerable' bash

muestra que mi instalación de Debian 8 (Jessie) es vulnerable, incluso con las últimas actualizaciones. La investigación muestra que hay un parche para estable e inestable, pero que las pruebas no tienen parches.

Supongo que el parche llegará a prueba en un par de días, pero en realidad esto parece lo suficientemente desagradable como para ser paranoico. ¿Hay alguna forma de obtener el paquete de inestable e instalarlo sin romper mi sistema? Parece que actualizar a inestable causará más problemas de los que resuelve.


Según Bob, hay una segunda vulnerabilidad de Shellshock, que se corrige en un segundo parche. Se supone que la prueba es:

 env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("

Pero no tengo la habilidad suficiente en Bash para entender qué significa esto o por qué es un problema. En cualquier caso, hace algo extraño, que se impide mediante bash_4.3-9.2_amd64.deb en sistemas de 64 bits, que en el momento de la edición es estable e inestable, pero no en Jessie / testing.

Para arreglar esto para Jessie , obtenga el último Bash de inestable e instálelo con dpkg -i.

Jemenake ofrece

wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.2_$(dpkg --print-architecture).deb

como un comando que obtendrá la versión 4.3-9.2 para su máquina.

Y puedes seguir eso con:

sudo dpkg -i bash_4.3-9.2_$(dpkg --print-architecture).deb

para instalarlo

Si necesita más parches inestables para su sistema Jessie , este es claramente el camino a seguir ( mutatis mutandis ).

John Lawrence Aspden
fuente

Respuestas:

5

Descargue el paquete desde inestable a través de este enlace . También puede verificar las dependencias allí, aunque parece que el bash inestable tiene las mismas dependencias que el bash de las pruebas. Instale el deb descargado con lo siguiente.

dpkg -i
wurtel
fuente
1
Gracias, hice eso y solucionó el problema sin destruir notablemente nada. Presumiblemente, eventualmente se sobrescribirá en el curso normal de las actualizaciones.
John Lawrence Aspden
3
El enlace anterior está bien si está ejecutando un navegador en una GUI. Menos si está ejecutando lynx en una sesión de shell. Si desea algo que pueda pegar directamente en su línea de comandos para wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.1_$(dpkg --print-architecture).deb obtenerlo , intente: obtendrá la arquitectura correcta para su caja.
Jemenake
1
@Jemenake Deberías publicar eso como una respuesta separada.
Excellll
Esta fue definitivamente la respuesta que quería, pero ahora que la actualización llegó a Jessie, creo que es mejor si la respuesta aceptada es la que la gente que busca ahora necesita, así que estoy moviendo la marca. Gracias sin embargo!
John Lawrence Aspden
En realidad, hay dos errores de shellshock, y la solución para el segundo ahora está en sid pero no jessie, por lo que esta es la respuesta correcta (¡asegúrese de obtener 4.3-9.2!), Aunque sin duda la situación se resolverá pronto.
John Lawrence Aspden
25

Edité esta respuesta para las correcciones de bash adicionales que se lanzaron el lunes.

Para Ubuntu 12.04, ejecuté una actualización, pero también tuve que ejecutar la instalación de bash para eliminar la vulnerabilidad.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

Ese comando muestra que el sistema es vulnerable, así que ejecute la actualización.

apt-get update && apt-get -y upgrade

Prueba de nuevo.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

Aún vulnerable.

apt-get install -y bash

Prueba de nuevo.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test

Editar: después de que se lanzaron los parches adicionales, la salida ha cambiado.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test

¡Hurra! Fijo. Esto debería funcionar para otras versiones, pero no lo he probado más allá de 12.04.

Además, la respuesta de runamok a continuación funciona bien, ¡así que dale un voto positivo!

Tom Damon
fuente
66
Solo apt-get update && apt-get install -y bashparece funcionar.
runamok
Según la respuesta de @JabawokJayUK, todavía estoy fallando en la primera prueba después de la actualización de bash en Ubuntu 12.04.
Birla
Solo estoy recibiendo this is a testpero no el error y la advertencia. En mi máquina local recibo el error, pero en mi servidor no. ¿Qué significa eso? ¿Mi servidor está parcheado? Gracias.
ElBaulP
Parece que el repositorio está actualizado ahora, porque no tuve que realizar el paso apt-get install -y, el problema se resolvió después de la actualización.
user316566
1
Esto realmente no responde la pregunta sobre las pruebas de Debian / jessie. Ubuntu es una distribución diferente con repositorios de paquetes independientes y cronogramas de parches.
Bob
16

Una alternativa para Debian 6.0 (Squeeze) sin obtener paquetes de Debian 7 (Wheezy):

Use el repositorio de seguridad LTS que tiene el parche respaldado.

Agregue esto a /etc/apt/sources.list:

#LTS security
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

Entonces corre apt-get update && apt-get install bash.

Vía: linuxquestions

poncha
fuente
Funciona para Debian 6. ¡Siempre mantendríamos la seguridad LTC en la lista!
stanleyxu2005
4

apt-get updateantes apt-get dist-upgradey obtendrás el parche. Simplemente lo hice yo mismo y hubo una actualización de bash que solucionó el problema.

MGD_Toronto
fuente
2
El problema era que las pruebas de Debian aún no tenían el paquete actualizado, por lo que descargarlo manualmente desde inestable e instalar esa fue la solución más simple en ese momento; la solución dada en esta respuesta no hubiera funcionado. (Tal vez ya lo hará, porque el paquete puede haber migrado a las pruebas.)
wurtel
Esto no responde a la pregunta original, pero es lo que la gente necesita hacer ahora, así que lo acepto para que sea lo primero que la gente vea. La respuesta 'real' a mi dificultad (es inestable y estable pero no está en pruebas) es la respuesta de wurtel usando la descarga manual de la nueva bash - ????. Deb y dpkg -i.
John Lawrence Aspden
También creo que esta es la respuesta para Ubuntu, ahora que han empujado su corrección correctamente, y probablemente para cualquier otra distribución basada en Debian que aún se mantiene hasta el punto en que la gente ha empujado las correcciones.
John Lawrence Aspden
En realidad, hay dos errores de shellshock y la solución para el segundo aún no ha llegado a Jessie.
John Lawrence Aspden
Esta sigue siendo una solución válida y lo seguirá siendo mientras el equipo de seguridad de pruebas de Debian esté impulsando actualizaciones; Es posible que no lo hayan tenido en las pruebas en el momento de la pregunta de OP. Otra opción es configurar a todos los usuarios para que usen Dash. Esto es principalmente un problema del servidor y no
MGD_Toronto
3

Lo arreglé en mi Hackintosh :

$ brew install bash

$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash-4.3$ 
Marcos Maciel
fuente
2
no te olvides de instalar la cerveza antes ...
Marcos Maciel
1

He escrito un artículo sobre cómo hacer esto con apt-get en versiones antiguas de Ubuntu. Básicamente actualiza su sources.list a la más nueva y luego ejecuta apt-get update y upgrade bash. Puede leerlo paso a paso o copiarlo desde aquí .

Resumen:

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install --only-upgrade bash

Lea el artículo si usa old-releases.ubuntu.com y no olvide que es posible que desee volver a cambiarlo:

sudo sed -i 's/trusty/YOUR_OS_CODENAME/g' /etc/apt/sources.list
Erik Duindam
fuente
uh ... esto dejará su sistema con Trusty en sources.list. la próxima vez que actualice, el sistema se actualizará a Trusty. Esto romperá SIEMPRE su sistema.
strugee
1

La versión fija (vea el registro de cambios ) para el paquete Bash está en Debian 8 (Jessie) ahora (vea la información del paquete ), a partir del 26/09/2014 14:18 UTC.

La segunda solución, mencionada en los comentarios a continuación, también está en Jessie repositorio de . No hay necesidad de instalar desde inestable. Vea el enlace de información del paquete arriba.

Ya no hay necesidad de instalar desde inestable.

Solo corre:

# aptitude update

seguido por:

# aptitude upgrade

Luego verifique que la vulnerabilidad haya desaparecido (en un shell recién abierto):

$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
dubadu
fuente
Todavía no soluciona el seguimiento CVE-2014-7169.
Bob
@Bob, ¿creo que eso solo es relevante para Ubuntu? Y presumiblemente Ubuntu ya lo ha solucionado.
John Lawrence Aspden
@JohnLawrenceAspden Nope. Intente ejecutar env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :(": si se imprime still vulnerable, entonces la última vuln aún no está parchada. AFAIK, Jessie sigue siendo vulnerable. Tenga en cuenta que ese comando creará un archivo con nombre echoen el directorio actual si tiene éxito, y deberá eliminarlo antes de volver a ejecutar la prueba.
Bob
@Bob, no puedo entender esto, ¿qué está haciendo el punto y coma?
John Lawrence Aspden
@Bob, pero haga lo que haga, ¡tiene razón en que actualizar a la versión 4.3-9.2 en inestable lo detiene!
John Lawrence Aspden