Todavía sin solución la seria vulnerabilidad Shellshock en Bash que afecta a Linux, Unix y Mac OS X

Bash shell console and tux

Menos de dos días después de que fuera detectada una importante vulnerabilidad (CVE-2014-6271) que afecta a la shell Bash de Linux, Unix y Mac OS X, se ha publicado un parche que la soluciona sólo parcialmente, lo cual obligó a reportar una nueva vulnerabilidad (CVE-2014-7169), que es la que continúa pendiente de solución. Este fallo rápidamente ha cobrado un nombre más sencillo por el que se le recordará durante mucho tiempo: Shellshock, o también Shell Shock.

Antecedentes

El problema fue descubierto por Stephane Chazelas, un administrador de sistemas Unix y Linux de Akamai al detectar que introduciendo una cadena especialmente manipulada en la línea de comandos de la shell, en lugar de tratar dicha cadena como datos, Bash la interpreta erróneamente como un comando y ejecutará cualquier cosa que aparezca después de ella. Esto permite que cualquier asaltante pueda ejecutar comandos en nuestro servidor de forma arbitraria. Es cierto que no podrá hacerlo como root, pero hay muchas acciones nefastas que se pueden llevar a cabo sin privilegios de root.

Consecuencias

Veamos algunos de los ejemplos más críticos de vectores de ataque y sistemas que se pueden ver afectados:

  • Apache: los servidores Apache, que son los servidores web más extendidos de Internet, pueden verse afectados si usan mod_cgi o mod_cgid si alguno de esos scripts están escritos en Bash.
  • ForceCommand: esta vulnerabilidad también puede ser explotada para saltarse a ForceCommand en algunas configuraciones del demonio sshd. Se supone que ForceCommand limita la ejecución de código remoto, pero este fallo permite saltarse esta protección.
  • DHCP: el protocolo DHCP que permite que los ordenadores y dispositivos conectados a una red obtengan automáticamente su dirección IP y otra información necesaria para el correcto funcionamiento de dicha red, es otro servicio que se podría ver afectado según Red Hat, ya que como este protocolo permite al servidor DHCP pasar variables de entorno a sus clientes, un atacante podría conseguir que esas variables fueran interpretadas como comandos en lugar de como meros datos de configuración, lo cual permitiría atacar a cualquiera de los puestos de la red con sólo tomar el control del servidor, lo cual sería fatal en muchos casos, grandes empresas por ejemplo.
  • SSH: otro punto vulnerable a explotar es OpenSSH a través del uso de variables AcceptEnv, TERM y SSH_ORIGINAL_COMMAND. Una variable de entorno con nombre arbitrario puede incluir una función maligna capaz de explotar la vulnerabilidad y realizar un ataque a través de la red.
  • GIT: otros servicios como Git que ofrecen shells restringidas a sus usuarios podrían verse afectados por esta vulnerabilidad, que permitiría saltarse todas esas restricciones y tomar un completo control del servidor.

Teniendo en cuenta que Bash es uno de los intérpretes de comandos más extendidos, no hay duda de que más y más ejemplos de otros vectores de ataque irán surgiendo en los próximos días y semanas, por lo que aplicar una solución a este fallo cuanto antes se hace imprescindible para todos los administradores de sistemas afectados en todo el mundo.

Diagnóstico

Para comprobar si tu shell Bash es vulnerable a este problema ejecuta estos comandos:

$ env x='() { :;}; echo vulnerable' bash -c "echo Test 1"
$ env X='() { (a)=>\' sh -c "echo vulnerable"; bash -c "echo Test 2"

Si la salida de alguno de ellos (o de ambos) muestra la palabra vulnerable, efectivamente tu versión de Bash es vulnerable:

$ env x='() { :;}; echo vulnerable' bash -c "echo Test 1"
vulnerable
Test 1
$ env X='() { (a)=>\' sh -c "echo vulnerable"; bash -c "echo Test 2"
vulnerable
Test 2

El parche que soluciona este problema debe asegurarse de que no se permita ningún comando después del final de una función. Por tanto, si ejecutas el mismo comando en una versión parcheada de Bash deberías obtener una salida como la siguiente:

$ env x='() { :;}; echo vulnerable'  bash -c "echo Test 1"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
Test 1

Solución

Si tu sistema es vulnerable la solución pasa por instalar la versión más reciente del paquete Bash, aunque como decía al principio, la solución publicada es sólo parcial. No obstante Red Hat aconseja aplicar el parche que soluciona la primera vulnerabilidad, ya que la segunda (CVE-2014-7169) no es tan seria:

Debian y Ubuntu
# apt-get update && apt-get upgrade bash
Red Hat y CentOS
# yum update bash

Enlaces de interés e información adicional

https://access.redhat.com/articles/1200223
https://access.redhat.com/articles/1212303
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-7169

¡Deja tu comentario!

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *