Grave vulnerabilidad en Bash [Actualizado]

A continuación reproduzco la entrada del sitio de seguridad informática de la UCI, pero que está dándole la vuelta al mundo por Internet en distintos sitios sobre Software Libre:

Se acaba de publicar una vulnerabilidad crítica en bash, el interprete de comandos de Linux y muchos otros sistemas Unix (incluido OSX), que también parece afectar a otros interpretes como zsh, tcsh, csh y ksh, pero no a otros shells. Se ha identificado con el registro: CVE-2014-6271 y seguro que dará mucho que hablar los próximos días.

Mediante esta vulnerabilidad es posible ejecutar comandos debido al incorrecto procesado de las variables de entorno, en determinadas circunstancias, esto puede ser explotable remotamente.

El problema reside en que bash permite la declaración de funciones (como cualquier otro lenguaje interpretado) y no son validadas correctamente cuando son almacenadas en una variable. Con ejemplos seguro que se ve mejor.

Una función se declara de la siguiente forma:

aramosf@digitalsec:~$ cat test.sh
#!/bin/bash
function hola () {
echo "Hola mundo"
}
hola
aramosf@digitalsec:~$ bash test.sh
Hola mundo

Pero por desgracia bash procesa todo el contenido de la variable y continúa ejecutando incluso cuando termina la función:

aramosf@digitalsec:~$ VAR="() { echo 'Hola mundo'; }; echo 'Adios mundo'" bash -c "echo Prueba"
Adios mundo
Prueba

En la prueba anterior, se esperaba que únicamente se mostrase “Prueba”, pero acaba procesando el echo de “Adiós mundo”.

Esto tiene implicaciones en servicios remotos, en especial en páginas web con CGIs que leerán las variables enviadas por el cliente como cabeceras (y que pueden contener comandos) y ejecutarán su contenido cuando se invoque bash. Explotar CGIs escritos en bash será trivial y aunque parezca mentira, existen miles:

google-cgi-bash

Otras implicaciones conocidas hasta ahora, pero que seguro que aumentan estos días, son:

  • Uso en ForceCommand de SSH para limitar capacidades de ejecución de comandos
  • Otros CGI (como php, perl, etc) que lancen subshells con llamadas del tipo system()
  • Clientes DHCP que lancen shells.
  • Herramientas y aplicaciones con SUID que invoquen bash para alguna acción.
  • Sistemas móviles que utilicen bash, como Android
  • Otros sistemas con Linux, como routers (que generalmente lanzan pings, traceroutes, etc), modems, televisores, etc..

Nos esperan días con muchas noticias sobre nuevos impactos, Eso seguro.

Para solucionar el problema tan solo hay que esperar a que saquen el parche (y funcione), cosa que ya ha ocurrido en las distribuciones más populares, pero que tardará tiempo en sistemas embebidos o poco mantenidos.

Actualización 1:

Como ya es sabido, el parche que había salido proveía una solución incompleta que aún permitía la inyección de algunos caracteres a través de variables de entorno especialmente modificadas en condiciones específicas, lo cual fue registrado bajo el nuevo código CVE-2014-7169. Hace apenas unas horas Red Hat liberó un nuevo parche que solventa esta última vulnerabilidad. Pronto deben estar disponibles nuevas actualizaciones de Bash para el resto de las distribuciones.

Actualización 2:

Ya está en el repositorio de Ubuntu la nueva actualización de Bash que corrige ambas vulnerabilidades (CVE-2014-6271 y CVE-2014-7169).

39 comentarios » Puedes dejar tu comentario también

  1. 00

    Jorge Luis

    dijo:

    Google Chrome 37.0.2062.94 Mac OS X 10.9.4

    Ya había visto la alerta por Twitter, realmente es impresionante y lleva tiempo dicho bug en el código de bash. Dicho sea de paso no sólo bash está afectado, variantes como zsh o csh están en la misma situación (acabo de probar con zsh que es lo que uso)

  2. 00

    Dariem

    (autor) dijo:

    Firefox 31.0 Nova x64

    Las distros más populares ya liberaron actualizaciones, los repos de la UCI ya están actualizados con las versiones parcheadas.

  3. 00

    jorgito

    dijo:

    Firefox 32.0 Windows 7 x64 Edition

    jajaja me encanta ver esto de los que se dan tantos aires de que Linux es lo maximo. Sorry

  4. 00

    r@y

    dijo:

    Firefox 32.0 Ubuntu

    yo usar fish, no se si tambien caiga en el truco

  5. 00

    OSIEL

    dijo:

    Google Chrome 35.0.1916.153 GNU/Linux x64

    En el blog de la Red Hat ponen una forma más sencilla de saber si existe la vulnerabilidad env x='() { :;}; echo OOPS’ bash -c /bin/true. Gracias a Daniel Marino de Copextel por avisarnos.

    Pero ahí no queda todo, esta actualización que tienen la mayoría de los sistemas solo soluciona la vulnerabilidad CVE-2014-6271, el mismo equipo de Red Hat explica que un usuario puede proporcionar variables de entorno especialmente diseñadas que contienen comandos arbitrarios que se ejecutarán en los sistemas vulnerables en ciertas condiciones y se ha etiquetado como CVE-2014-7169 que es una vulnerabilidad menos crítica que la anterior. Para saber si estamos afectados ejecutar env x='() { :;}; echo CVE-2014-6271′ bash -c “echo CVE-2014-716” y según la salida sabremos que vulnerabilidad poseemos.

  6. 00

    Michel

    dijo:

    IceWeasel 24.6.0 GNU/Linux

    @jorgito
    Si te gusta tanto es porque respetas completamente el Sistema Operativo que usas, pagas todo lo que usas si es comercial y recibes en muy corto tiempo (aún pagando) actualizaciones del Sistema Operativo cuando aparece una vulnerabilidad.

  7. 00

    TheKrow

    dijo:

    Firefox 32.0 Ubuntu x64

    @jorgito

    Realmente no creo que ningún OS sea mejor que otro, solo depende de las necesidades y satisfacciones de cada quien. Es natural que una vez te encuentras complacido con ‘algo’, seas un defensor de ese ‘algo’, incluso aceptar o ignorar los inconvenientes de ese ‘algo’.

    Sobre este post, es cierto que ningún programa está libre de errores, creo que los mejores exponentes de esta afirmación, son en sí los propios OS. Lo que es muy notable, al menos en el mundo de Linux, es que la solución a los problemas puede venir de cualquier parte; existen programadores en el mundo muy capaces de solucionar problemas en bloques de código, que ellos originalmente no escribieron. Esto debemos agradecerlo al código abierto.

    Les invito a todos los que lean mi comentario a que vean el video en el post: ¿Cómo se construye Linux? http://humanos.uci.cu/2014/06/como-se-construye-linux-video/

    Saludos.

  8. 00

    Windolero

    dijo:

    Firefox 30.0 Windows 8.1 x64 Edition

    @Dariem
    He probado actualizar Debian y Nova, (apt-get update, apt-get upgrade) y el comando (VAR=”() { echo ‘Hola mundo’; }; echo ‘Adios mundo'” bash -c “echo Prueba”) sigue mostrando lo mismo de la noticia.

  9. 00

    Windolero

    dijo:

    Firefox 30.0 Windows 8.1 x64 Edition

    @OSIEL
    En ubuntu no me funcionó, solo es para RedHat???
    Para que corriera tuve que modificarlo un poco:
    x='() { :;}; echo “CVE-2014-6271″‘ bash -c “echo CVE-2014-716”
    Muestra esto:
    # x='() { :;}; echo “CVE-2014-6271″‘ bash -c “echo CVE-2014-716”
    CVE-2014-6271
    CVE-2014-716

  10. 00

    Juan Danilo

    dijo:

    Firefox 32.0 Ubuntu x64

    @Windolero
    En debian tienes el repo security puesto ?

    al parecer estas haciendo algo mal, porque ya lo probe y el bug se arreglo

  11. 00

    Y@i$el

    dijo:

    Firefox 29.0 Nova

    @Dariem y Nova, que tiene pensado hacer con respecto a esta vulnerabilidad?

  12. 00

    Juan Danilo

    dijo:

    Firefox 32.0 Ubuntu x64

    @Windolero
    probe en ubuntu y lo que me sale despues de actualizar es: > , como para que escriba algo.

  13. 00

    vla2

    dijo:

    Google Chrome 37.0.1986.0 Windows 8.1 x64 Edition

    @jorgito
    Pero mira lo que dice @Dariem, ya en todos los repos están los parches de seguridad, para que veas la eficiencia.

  14. 00

    OSIEL

    dijo:

    Google Chrome 35.0.1916.153 GNU/Linux x64

    @Windolero
    Si lo copias directamente no funciona pues cambia el formato al insertarlo en el comentario
    Para Debian tienes que tener puesto el security, en cuanto he leído la noticia he actualizado y ahí había una nueva versión de bash para corregir el error.

  15. 00

    Akuma

    dijo:

    Google Chrome 35.0.1916.153 Ubuntu 14.04 x64

    Testing useragent

  16. 00

    Windolero

    dijo:

    Firefox 30.0 Windows 8.1 x64 Edition

    @Juan Danilo
    Tengo puesto esto:
    deb http://debian.uci.cu/debian wheezy main contrib non-free
    deb http://debian.uci.cu/debian stable main contrib non-free
    deb http://debian.uci.cu/security stable/updates main contrib non-free # No tenía este

    Ya funciona en Debian.
    Me queda una duda, alguien podría esclarecer en otro hilo si fuese necesario cual es la correcta configuración de los repositorios de Debian, Ubuntu, etc.
    Por ejemplo, solo son esos 3 los necesarios, hay que poner mas, hay que quitar alguno. Algunas veces he añadido más, sin embargo al actualizar salen diversos errores, como que no tiene checksum o no están firmados, o que el nombre de la rama se esperaba wheezy y sale stable, algo así por el estilo. Entonces no se decidir si es bueno o malo dejarlos.

  17. 00

    Windolero

    dijo:

    Firefox 30.0 Windows 8.1 x64 Edition

    @OSIEL
    Debian resuelto, pero en Nova Migración no está resuelto, al menos no con la configuración que trae por defecto en los repos, hay que cambiar algo???
    # apt-get upgrade
    Leyendo lista de paquetes… Hecho
    Creando árbol de dependencias
    Leyendo la información de estado… Hecho
    Los siguientes paquetes se han retenido:
    libqt4-dbus libqt4-declarative libqt4-network libqt4-script libqt4-sql
    libqt4-sql-mysql libqt4-xml libqt4-xmlpatterns libqtcore4 libqtgui4 qdbus
    0 actualizados, 0 se instalarán, 0 para eliminar y 11 no actualizados.

    Nova Migración tiene puesto:
    # cat /etc/apt/sources.list
    deb http://novarepo.uci.cu/nova 2013 principal extendido
    deb http://nova.f10.uci.cu/nova 2013 principal extendido
    Ejecución:
    # VAR=”() { echo ‘Hola mundo’; }; echo ‘Adios mundo'” bash -c “echo Prueba”
    Adios mundo
    Prueba

  18. 00

    Dariem

    (autor) dijo:

    Firefox 31.0 Nova x64

    @Y@i$el
    @Windolero
    En Nova se resolvió en el repo de desarrollo, el problema es que el repo UCI se actualiza a una hora específica y al parecer todavía no se ha actualizado. Me refiero a la vulnerabilidad crítica que ya está resuelta, la menos crítica todavía. @Windolero, tú tienes puesto el repo de desarrollo, prueba de nuevo: apt-get update && apt-get upgrade

  19. 00

    Akuma

    dijo:

    Google Chrome 35.0.1916.153 Nova 4

    A mí me funciona, al menos no me devuelve el adiós mundo, y desde ésta mañana que actualicé mis paquetes, el bash estaba en la lista de los cambiados.

  20. 00

    i18n

    dijo:

    Firefox 24.0 Windows 7

    caballero dejen eso pa otro dia ustedes creen que gnu/linux no savia lo de bulneravilidad en bash…………….

  21. 00

    ALB3rt

    dijo:

    Firefox 29.0 Nova

    En Nova ya funciona perfecto, ahora mismo acabo de probarlo también.

  22. 00

    raven

    dijo:

    Google Chrome 38.0.2071.0 Windows 8.1 x64 Edition

    @r@y Nop, no corremos ese riesgo, fish no es compatible con bash, para bien y para mal.

  23. 00

    Dariem

    (autor) dijo:

    Firefox 31.0 Nova x64

    @i18n
    Socio GNU/Linux no “sabe” nada, es un sistema operativo, un conjunto de software… y vulnerabilidad se escribe con v, ¿no lo ves en el título del artículo?

  24. 00

    [KoH]_soldier

    dijo:

    Google Chrome 28.0.1500.94 Android 4.1.1

    Dariem :
    Las distros más populares ya liberaron actualizaciones, los repos de la UCI ya están actualizados con las versiones parcheadas.

    Estas seguro d eso @Dariem ¿¿¿

  25. 00

    Dariem

    (autor) dijo:

    Firefox 31.0 Nova x64

    @[KoH]_soldier
    Ubuntu, Debian, Fedora, Red Hat ya liberaron actualizaciones… depende de tu concepto de distro más popular.

  26. 00

    Dariem

    (autor) dijo:

    Firefox 31.0 Nova x64

    He adicionado una actualización al final del artículo: Red Hat saca nuevo parche.

  27. 00

    Y@i$el

    dijo:

    Firefox 32.0 Nova 2013

    @Dariem entonces esperemos que se actualicen pronto 😀

  28. 00

    Heimdall

    dijo:

    Firefox 32.0 Ubuntu x64

    Soy de la UCI actualice Ubuntu y ya se corrigio el problema, si fuese algo de Windows, tendriamos que esperar a que saliera el proximo Service Pack….lol
    Disculpen windoleros

  29. 00

    Ok

    dijo:

    Firefox 31.0 Windows 8.1 x64 Edition

    @Heimdall
    Na, por estar en la UCI te llegaba via Windows Update, si estuvieras fuera entonces si tendrías que esperar el Service Pack o igual puedieras instalar el parche especifico… lo que nadie está pa eso 🙂
    La diferencia está en que aquellos “valientes” que usan Linux fuera de la UCI si tendrían que esperar mucho más…

  30. 00

    Dean

    dijo:

    Google Chrome 27.0.1453.94 Windows 7 x64 Edition

    Este tipo de errores se hace más y más común en Linux según aumenta el número de usuarios además lo falta de profesionalidad de muchos desarrolladores del entorno Linux deja una puerta abierta a esa y otras vulnerabilidades como la que se menciona aquí http://threatpost.com/five-year-old-security-vulnerability-patched-in-linux-kernel y que dejan realmente en entredicho eso de que Linux es un sistema especialmente seguro.

  31. 00

    Dariem

    (autor) dijo:

    Firefox 31.0 Nova x64

    @Dean
    Socio, ¿tú eres estudiante de primer año? “La falta de profesionalidad de muchos desarrolladores del entorno Linux”. ¿A qué entorno te refieres? Fíjate lo rápido que se resolvió el problema. De hecho, no sé si sabes que constantemente se están resolviendo vulnerabilidades en todos los sistemas operativos, y el nivel de respuesta de los desarrolladores de GNU/Linux es el más rápido, estadísticamente comprobado. Esta vulnerabilidad llegó a los titulares porque era considerada muy crítica, por la ubicuidad que ha alcanzado Linux, que ya está en todas partes, desde dispositivos embebidos hasta servidores, pasando por los teléfonos inteligentes y la “internet de las cosas”. Por eso las vulnerabilidades en Linux últimamente cobran mucha más relevancia, porque ya casi que no existe infraestructura crítica que no esté gobernada por Linux (¿te suenan las bolsas de valores de Londres, Nueva York, y otras). Además, no sé si leíste bien, pero Bash también forma parte de MacOSX, ¿falta de profesionalidad dices? ¿Estás diciendo que la gente de Apple incluye software de baja calidad en su sistema operativo? ¿Si es así por qué ponen tantos filtros a la hora de que se suba una app a su tienda? Si eres de la UCI, comprueba en este enlace: https://iblog.uci.cu/2014/09/1436/. En fin, no digas cosas a la ligera. Por otro lado, una empresa con mucha “profesionalidad” como Microsoft se ha demorado 8 meses en resolver vulnerabilidades zero-day que afectaban a todas las versiones de Internet Explorer: http://www.adslzone.net/2014/06/06/microsoft-solucionara-una-vulnerabilidad-critica-en-internet-explorer-8-meses-despues/

  32. 00

    KDyS

    dijo:

    Google Chrome 37.0.2062.124 Mac OS X 10.9.5

    El que lo necesite aquí está el parche de OSX para Mavericks.
    http://support.apple.com/kb/DL1769
    Personalmente ya lo probé el parche y queda solucionada la vulnerabilidad.

  33. 00

    Hector

    dijo:

    Firefox 4.0. Nova 4.0

    Ya Nova incluye los parches, ya está en el repositorio

  34. 00

    Lecter

    dijo:

    IceWeasel 31.0 Debian GNU/Linux

    debian testing upgraded & problem solved

  35. 00

    @Dariem
    Gracias brother por la noticia. Realmente la vi en otro sitio (PandoDaily para el que le interese) y el que puso el artículo decía que el bug era incluso más crítico que Heartblead (el fallo descubierto en OpenSSL). Incluso este nuevo bug nombre también Shellbomb o algo por el estilo (el dios proxy tiene que bendecirme :D)

  36. 00

    Más de Shellshock bug: Los servidores de Yahoo! fueron hackeados basándose en el mismo:
    http://pando.com/2014/10/06/shellshock-rising-yahoos-servers-reportedly-compromised-by-devastating-bug/
    Como explica el investigador de seguridad Jonathan Hall en su blog, miren todo lo que hizo para que Yahoo! corrigiera el bug de seguridad:

    I notified the FBI of the breach, and also attempted to contact Yahoo! several times. Though the FBI seemed intrigued by this, in my opinion, they aren’t moving with any form of haste. And every minute that goes by jeopardizes the safety of yours and my personal information, financial data and much much more. This is a very serious issue and a very serious manner that needs to be addressed immediately. I’ve also emailed Marissa Mayer and contacted her via twitter, both of which yielded zero results and no response. There are no publicly available contact methods for Yahoo! that have yielded any luck with trying to contact them regarding this. I also have not heard anything back on the WinZip domain, either. This is a gross negligence and complete lack of care or concern for the safety of the consumers in terms of financial information.

  37. 00

    Dariem

    (autor) dijo:

    Firefox 31.0 Nova x64

    @Marcos Ortiz
    Esa gente de Yahoo! están comiendo de lo que pica el pollo. ¿Cómo es posible que con todo el alboroto que se armó con la vulnerabilidad ni siquiera tomaran medidas paliativas?

  38. 00

    @Dariem
    Precisamente por eso hermano, Jonathan Hall, como buen investigador de seguridad publicó todos estos datos para presionar un poco más a Yahoo! y para que movieran sus glúteos, por no decir otra cosa; porque es uno de los usuarios preocupados que todos sus datos que están Yahoo! sean compartidos y sean usado para otros menesteres.

Deja un comentario

Tu dirección de correo electrónico nunca será compartida.