Shellshock: cómo comprobar si somos vulnerables

shellshock

Hace unas horas el mundo Unix se vio sacudido por el descubrimiento de una vulnerabilidad que han dado en denominar Shellshock, y de la cual nos hemos encargado gracias a lo que nos ha comentado mi compañero Isaac. Se trata, para quienes no estén demasiado al tanto del tema, de una vulnerabilidad más bien de Bash (Bourne Again Shell, uno de los intérpretes de comandos más utilizados en el mundo del software libre) y que por lo tanto afecta a todos los *nix, y también desde luego a Mac OS X.

No tiene, eso si, la gravedad de HeartBleed, al menos no por ahora, y los más perjudicados son sin dudas los servidores puesto que de acuerdo al Instituto Nacional de Estándares (NIST) de EEUU, Shellshock ha sacado una nota de 10 en su potencial de ataques, aunque por suerte las principales víctimas están perfectamente identificadas:

  • Servidor web (httpd): Los scripts CGI son casi seguramente los más afectados por esta vulnerabilidad, y es que su forma de trabajar es especialmente propensa a ella puesto que las variables de entornos (utilizadas para pasar datos a los scripts) pueden estar siendo controladas por los hackers y al llamar a Bash para ejecutar comandos locales pueden dispersar la infección.
  • Cliente DHCP (dhclient) es utilizado para obtener la configuración de red a partir de DHCP, y dado que también utiliza variables de entorno puede ser infiltrado en forma simple.
  • CUPS: la herramienta de impresión de Linux y Unix almacena información de usuarios en variables de entorno, lo cual también puede ser aprovechado por atacantes.
  • Secure Shell (SSH): Si se inicia una sesión y se utiliza Bash, básicamente se está expuesto en todo sentido, por más que la conexión sea segura.

Para probar si nuestro servidor puede ser atacado mediante esta vulnerabilidad, podemos ejecutar el siguiente comando en Bash:

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

Si obtenemos el resultado

bash: warning: x: ignoring function detinition attempt bash: error importing function definition for ‘x’ this is a test.

Podemos respirar tranquilos ya que no nos vemos afectados.

Si en cambio obtenemos lo siguiente:

vulnerable this is a test

Entonces estamos en problemas, ya que nuestra versión de bash puede ser hackeada, pero no hay nada que temer ya que como suele ser norma en el software libre en general, y en Linux en particular, la mayoría de las grandes distros ya han lanzado parches de seguridad así que con sólo actualizar tendremos todo en regla.

En Debian (que es la que yo utilizo) y derivados:

sudo apt-get update

sudo apt-get upgrade

Y ya estaremos protegidos, puesto que desde hace unas cuantas horas están disponibles las nuevas versiones de bash, gnupg, gnutils, libapt, libcurl3, apt-utils, dbus, dnsutils, bind9 y otras librerías potencialmente vulnerables. Pensar que muchos critican la falta de una cabeza visible y de liderazgo en el software libre (a diferencia de lo que hay en OS X y Windows donde dos compañías dirigen todo), pero cada vez que hay problemas de este tipo en el open source las cosas se corrigen en unas horas mientras que en el software propietario pueden pasar días y por que no también semanas.


Categorías

Recursos
Etiquetas ,

Willy Klew

Ingeniero en Informática, soy un fanático de Linux, Android, la programación, redes y todo lo que tenga que ver con las nuevas tecnologías. Ex... Ver perfil ›

5 comentarios

  1.   jMdZ dijo

    ¿y si obtenemos solo “this is a test”?

  2.   e2equiel dijo

    Solo sale “this is a test”, cual es el caso?

  3.   NewbieForever dijo

    Qué pasa si sale “this is a test”? el sistema es vulnerable?

  4.   fosco_ dijo

    Si sale sólo “this is a test” no sois vulnerables

  5.   Javier dijo

    Tengo Ubuntu 14.04 LTS y escribí el comando en la terminal y se quedo sin hacer nada, no me dio ningún mensaje. No se si lo hice bien. Me pueden ayudar soy muy nuevo en Linux.

Escribe un comentario