Grave vulnerabilidad en bash (#Shellshock) permite ejecución remota de comandos (CVE-2014-6271)

 
Una grave vulnerabilidad bautizada #Shellshock está a la altura del reciente Heartbleed, una vulnerabilidad en el intérprete de comandos Bash permite la posibilidad de ejecutar código remoto en la máquina. Esta vulnerabilidad ha sido catalogada como CVE-2014-6271 con una puntuación de CVSS de 10.

Están afectadas todas las versiones hasta 4.3 incluida. La vulnerabilidad se produce cuando el intérprete no procesa adecuadamente las variables de entorno. Mediante la declaración de funciones puede incluir al final código que será ejecutado independientemente del nombre de la variable; esto es especialmente crítico en servidores web que tengan instalados módulos CGI. 
 
Una forma rápida de comprobar si somos vulnerables o no es ejecutando el siguiente código:
 
env x='() { :;}; echo vulnerable'  bash -c "echo this is a test"
 
En ambos casos aparecerá lo último por pantalla "this is a test". Si se muestra por pantalla la cadena de texto "vulnerable", nuestra versión de bash estará afectada ya que ha seguido ejecutando el código añadido a la cola de la función.

Explotación

El bug Shell Shock es tan terrorificamente sencillo que hasta los menos expertos son capaces de juntar rápidamente algo de código para comprometer una máquina Linux/Unix (incluido Macs). Así en menos de dos días hemos pasado de una simple prueba de concepto a una autentica pandemia de explotaciones.
 
Una de las más llamativas es la con DHCP y que ahora nos ilustra TrustSec, otra PoC en la que vemos como podemos insertar código en la opción 114 (default-url) de nuestro server para explotar la vulnerabilidad:

String () { ignored;}; echo ‘foo’ en servidor TFTPD64

Simplemente hacemos un renew en el cliente (o levantamos el interfaz) y observamos el resultado: