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!!! [bucket id=1577]
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.
Al momento de actualizar el artículo, el último nivel de parche es el 26. Así que aplicaremos parches hasta el ‘bash43-026′.