Corregir fallo del BASH paso a paso

Corregir fallo del BASH paso a paso

Tras el descubrimiento de la nueva vulnerabilidad encontrada en el shell  BASH de Linux, y dada la gravedad del mismo y la cantidad de sistemas afectados, os indicamos cómo solucionarlo.

 

Read the English version here

 

El problema es que en este momento, todavía no hay publicado ninguna versión libre de fallos. Al menos en el momento de escribir este artículo. Así que actualizar los paquetes de Linux con la utilidad apt-get ó yum no va a darnos la solución. Así que deberemos parchearlo a partir del código fuente. No pasa nada, suena muy radical, pero sólo son 5 minutos.

 

Cómo saber si mi sistema está afectado

Sencillo, entra en la consola y ejecuta  esta instrucción:

 env x='() { :;}; echo vulnerable' bash -c "echo test de bash"

Si el sistema es vulnerable obtendrás esta respuesta:

vulnerable

test de bash

 

y en caso contrario, verás este mensaje por la consola:

bash: warning: x: ignoring function definition attempt
bash: error al importar la definicion de la función para `x’
test de bash

Que significa que has intentado ejecutar código no autorizado, y el sistema no lo ha permitido.

 

Corregir fallo del bash paso a paso.

 

En primer lugar, nos descargaremos el código fuente del bash desde el repositorio de GNU en la carpeta /usr/src de nuestro linux.

Para ello, ejecutamos desde la consola:

cd /usr/src

wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz

 

A continuación descargamos el parche publicado:

wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-025

 

Tal como nos indica Michael Eager, deberemos descargarnos todos los parches previos, ya que el código fuente del bash está a nivel 0, y el fallo del ShellSock bash está corregido en el nivel 25.

Ahora, decargamos todos los parches previos:

wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-001
wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-002
wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-003

Hasta llegar al último.

Descomprimimos el fuente de bash 4.3:

tar -xvzf bash-4.3.tar.gz

Lo que nos creará la carpeta /usr/src/bash-4.3.

Copiamos todos los parcches a la carpeta del fuente:

cp bash43-* bash-4.3/

Accedemos a bash-4.3:

cd bash-4.3

y ejecutamos la instalación del parche uno a uno:

patch -p0 -i bash43-001
patch -p0 -i bash43-002
patch -p0 -i bash43-003

Así hasta llegar al último. En este momento, es el bash43-026.
A continuación, compilamos el nuevo bash ya parcheado. Ejecuta estos comandos:

./configure

make

make install

 

En mi caso, mi Debian tiene la manía de ubicar los archivos de sistema “al estilo Debian”. Así que debo copiarlos a su sitio correspondiente. De todos modos, aunque tengas otra distribución Linux, no está mal asegurarse de que dejas a punto el nuevo bash. Para ello, renombraremos el antiguo bash como bash.old y le quitaremos los permisos de ejecución, para evitar problemas:

cp /bin/bash /bin/bash.old

chmod -x /bin/bash.old

cp /usr/bin/bashbug /usr/bin/bashbug.old

chmod -x /usr/bin/bashbug.old

 

Y ahora, copiamos los archivos nuevos. Si hemos seguido estas instrucciones paso a paso, deberemos estar ubicados en /usr/src/bash-4.3:

cp -f bash /bin/

cp bashbug /usr/bin/

cp bashversion /bin/

 

Y ya está hecho.

 

Para comprobarlo, abre otra consola e inicia la sesión de nuevo. Al entrar, ejecutarás el nuevo bash.

Ejecuta estos comandos para comprobar que todo va bien:

bashversion

y deberá salir este mensaje:

4.3.26(1)-release

 

Finalmente comprobamos que nuestro sistema ya no es vulnerable al fallo del bash. Ejecutamos:

env x='() { :;}; echo vulnerable' bash -c "echo test de bash"

 

Y si todo se ha hecho bien, veremos este mensaje:

bash: warning: x: ignoring function definition attempt
bash: error al importar la definicion de la función para `x’
test de bash

 

Enhorabuena y a seguir seguros en Internet!!!

En Zinetik Consultores podemos asesorarle desde el punto de vista jurídico y técnico.

Contáctenos

Comparte este artículo

Comentarios (2)

  • JL Navarro en Zinetik Consultores

    Al momento de actualizar el artículo, el último nivel de parche es el 26. Así que aplicaremos parches hasta el ‘bash43-026′.

    27 septiembre, 2014 at 11:40
  • JL Navarro en Zinetik Consultores

    Michael Eager nos indica que hay que aplicar todos los parches previos al parche que necesitamos. El fallo del bash conocido como ShellShock bug está en el nivel 25, por lo que deberemos aplicar los 24 parches restantes.
    El artículo ya ha sido corregido.

    Gracias Michel por el aviso.

    27 septiembre, 2014 at 11:39

Comentarios cerrados.