Shellshock es una vulnerabilidad de los intérpretes de comandos Bash. Es una vulnerabilidad presente desde hace muchos años, pero ha sido descubierta hoy y afecta a millones de dispositivos Linux, Unix, Mac etc.

Bash (Bourne again shell), es una shell de UNIX, la cuales una de las herramientas más usadas e instaladas en los sistemas Unix, incluyendo Linux y Mac, en todo mundo. Desde su creación hace más de 30 años, Bash ha evolucionado de ser un simple intérprete de comandos a tener usos muy potentes y variopintos.

En los sistemas Unix, las variables de entorno proveen el acceso a ciertos tipos de comportamiento del software instalado en el sistema. Suelen ser un nombre de variable con un valor asignado. Es común que programas puedan ejecutar un intérprete de comandos bash en segundo plano, o que el intérprete esté disponible en el acceso remoto de la máquina vía ssh por ejemplo.

La vulnerabilidad es simple, pero terrorífica

Gracias a la vulnerabilidad Shellshock se pueden crear variables de entorno con contenido especialmente ideado antes de que se invoque la shell. Estas variables pueden contener código, que sería ejecutado al comenzar a invocar la shell. El nombre de las variables no importa, son contenedores de información, en este caso, código malicioso.

Como los lenguajes de programación, Bash, pese a ser un intérprete de comandos, tiene funciones implementadas y es posible insertar dichas funciones en las variables de entorno. La vulnerabilidad Shellshock llega cuando se añade código extra al final de las definiciones dentro de la variable de entorno, algo como el ejemplo que propone Redhat:

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

Red Hat ya ha parcheado la vulnerabilidad Shellshock. Si tu intérprete Bash está parcheada deberías ver el siguiente mensaje:

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

Red Hat no cree que el parche afecte la retro-compatibilidad de los millones de scripts en bash que pueda haber en el mundo. Pero, por supuesto, frenará la inyección de código que intenten crear variables de entorno como he descrito arriba.

Los parches están llegando, pero habrá miles de dispositivos que nunca se parchearán

En algunas distros Linux han comenzado a llegar los parches que subsanan la incidencia, los usuarios de OS X deberán esperar. Shellshock es una vulnerabilidad terrible, sobre todo por los millones de dispositivos que están con la versión de Bash vulnerable y que nunca se actualizarán ni parchearán y que pueden contener información sensible o depender de ello.

Hay cientos de ejemplos: NAS, Routers, Firewalls… incluso todos los dispositivos iOS con Jailbreak.Miles de dispositivos sin pantalla de los que nadie se suele acordar y que nos podrán dar un buen disgusto en el futuro de no solventar dicha vulnerabilidad. No hay que ser alarmista, el agujero de seguridad está muy extendido, pero las posibilidades de que nos generen un ataque por esta vulnerabilidad son escasas. No obstante os recomiendo parchear cuanto antes.

Source