Cómo resolver el bug de BASH en Debian

La noticia más destacada de la semana pasada (yo diría que de los últimos meses) es sin duda la del infame bug de BASH (también conocido como Shell Shock), que permite comprometer remotamente sistemas que tengan instalado este popular intérprete de comandos, como Linux, Unix o Mac OS. Se trata sin duda de una de las vulnerabilidades de mayor impacto en Internet de los últimos años (con el permiso de Heartbleed), tanto por su facilidad de explotación como por su propagación por la Red. Por ello, los administradores de sistemas hemos tenido que ponernos las pilas y parchear rápidamente los sistemas a nuestro cargo para mitigar las posibles consecuencias del bug. Como en Activa Sistemas tenemos a Debian como plataforma favorita, nuestros esfuerzos se han dirigido a resolver Shell Shock en dicha distribución Linux, esfuerzos que queremos compartir con nuestros lectores.

La metodología a seguir para parchear el bug es la misma independientemente de la versión de Debian de cada servidor, que consiste en instalar una versión actualizada de BASH que no contenga el bug, pero el camino para llegar a dichos paquetes actualizados sí que depende de la versión de Debian. Veamos qué hacer en cada caso:

  • Wheezy y posteriores: En el caso de la versión estable y las versiones en desarrollo e inestable basta con actualizar la base de datos de paquetes desde los repositorios oficiales:

    # apt-get update

    y, o bien actualizar todo el sistema:

    # apt-get upgrade

    o bien instalar sólo BASH:

    # apt-get install bash

  • Squeeze: A la anterior versión estable se le otorgó el soporte extendido (LTS: Long Term Support) en Abril de 2014, lo que supone que recibirá actualizaciones de paquetes hasta Febrero de 2016. Esto implica que BASH tiene una actualización para Squeeze en los repositorios LTS. Por lo tanto, lo primero es añadirlos a nuestro sistema, para lo cual tenemos que incluir la siguiente línea en el fichero /etc/apt/sources.list:

    deb http://http.debian.net/debian/ squeeze-lts main contrib non-free

    A continuación seguimos los pasos para Wheezy y tendremos BASH actualizado en Squeeze.

  • Lenny y anteriores: En el caso de que tengamos instalada en algún servidor una versión de Debian más antigua que Squeeze (por ejemplo, el típico caso de una máquina virtual instalada expresamente para dar soporte a una aplicación anticuada pero en uso), la única opción que tenemos es la de construir un backport del paquete de BASH para Wheezy. Esto consiste en descargar el paquete fuente y recompilarlo en una versión de Debian idéntica a la que tenemos en el servidor de destino.

    Como se puede imaginar, esta operación no está al alcance de cualquiera, ya que implica tener experiencia en la compilación de código fuente y la construcción de paquetes de software. Por eso, hemos construido nuestros propios backports de BASH para Lenny y los hemos puesto a disposición de todo aquél interesado para que los utilicen para actualizar sus sistemas antiguos. Eso sí, los paquetes se ofrecen sin ningún tipo de garantía, por lo que recomendamos su instalación previa en un sistema de prueba antes de proceder al servidor en producción.

    Al igual que en el caso de Squeeze, sólo hay que añadir el repositorio al sistema y proceder a la instalación del paquete actualizado.

Sólo queda comprobar si realmente la actualización ha surtido efecto. Para ello, ejecutamos el siguiente comando en una consola:

# env x='() { :;}; echo vulnerable' bash -c 'echo this is a test'

Si no se imprime en pantalla la palabra vulnerable, entonces hemos conseguido parchear el bug de BASH y estaremos a salvo, al menos hasta que se descubra otro 😉