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 prueba en bash"
En ambos casos aparecerá lo último por pantalla ‘prueba en bash’.
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; por el contrario, si vemos el siguiente
mensaje de error, quizá no seamos tan vulnerables:
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x’
La última frase no se ha dicho de forma arbitraria: pese a que ya ha
sido publicado un primer parche, una investigación en profundidad del
mismo ha demostrado que aún tiene posibles vectores de ataque, por lo
que habrá que esperar a una nueva actualización para poder decir que ya
está completamente solucionado.
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:
Fuente:
- http://www.securityartwork.es/2014/09/25/vulnerabilidad-en-bash-explotable-remotamente-cve-2014-6271/
- http://www.hackplayers.com/2014/09/shellshock-dhcp-o-como-puede.html
Más información:
- http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271
- https://community.rapid7.com/community/infosec/blog/2014/09/25/bash-ing-into-your-network-investigating-cve-2014-6271 (módulo Metasploit)
- http://www.volexity.com/blog/?p=19
- https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/
- http://seclists.org/oss-sec/2014/q3/649
[10%] Salu2