Un problema de seguridad en Bash deja Linux, OS X y otros sistemas vulnerables a un ataque

Investigadores de seguridad han encontrado una vulnerabilidad en Bash que afecta tanto a ordenadores con Linux como a OS X y a otras variantes de sistemas operativos que permite la ejecución de código tan pronto como se inicia la shell.

Bash (Bourne again shell) es un programa informático cuya función consiste en interpretar órdenes. Está basado en la shell de Unix y es compatible con POSIX.

Fue escrito para el proyecto GNU y es el intérprete de comandos por defecto en la mayoría de las distribuciones de GNU con Linux. Su nombre es un acrónimo de Bourne-Again Shell (otro shell bourne) — haciendo un juego de palabras (born-again significa renacimiento) sobre el Bourne shell(sh), que fue uno de los primeros intérpretes importantes de Unix. [Wikipedia]

Ya hay parches para múltiples variantes de Linux (CentOS, Debian, Red Hat), y los servicios de los grandes de Internet como Akamai ya han tomado medidas. Sin embargo, la edad y la ubicuidad de la vulnerabilidad implica que hay algunos servidores antiguos y otros dispositivos conectados a Internet que no (y en algunos casos, no pueden) ser parcheados contra esta vulnerabilidad.

Ejemplo de código malformado que afectaría a Bash

En otras palabras, hay una posibilidad de que «todo», desde sitios web a una cámara de seguridad del hogar puedan ser (y sigan siendo) vulnerables. El problema de esta vulnerabilidad será menor para los usuarios aquellos dispositivos o desarrolladores de sistemas operativos que mantengan rutinas de actualizaciones de seguridad con frecuencia.

17 Comments

  1. Rafa Espada

    [modo irónico on]
    Pero esto no es importante, lo realmente importante es el «celebgate».
    [modo irónico off]

  2. Alberto Lozano

    Ya hace dias que hay la actualización de bash… Para tokiski menos para Mac OS X.
    En mis servidores centos me ha llevado menos de un minuto en cada uno: yum update bash y en un suspiro problema resuelto.
    Más que un parche lo que se hace es sustituir bash por la versión más reciente.

  3. vick21

    #5 Es totalmente normal que en los Unix propietarios tarden más en actualizarse que en linux. Yo tengo la misma problemática en mis servidores AIX y no en los servidores linux que también gestionamos.

  4. Santiago

    Lo confieso: hasta esta noticia, lo único que conocía de Bourne era

    [IMG]http://i.imgur.com/NObyO6r.jpg[/IMG]

    El único invulnerable.

  5. Alberto Lozano

    De todas maneras en un equipo de escritorio esa vulnerabilidad no es problema para su usuario a no ser que lo tenga expuesto a Internet.
    En cualquier caso compilar un bash en el Mac tampoco es cosa del otro jueves.

    Por si a alguien le interesa compilar y parchear el bash, necesita tener instalado Xcode (y leerse la licencia si es la primera vez que se usa, si no se hace, no va) y seguir estos pasos desde terminal (copiad y pegad en terminal todo menos los $ que esos ya los pone el Mac 🙂 ):

    $ cd ~
    $ mkdir nuevo_bash
    $ cd nuevo_bash
    $ curl -k https://opensource.apple.com/tarballs/bash/bash-92.tar.gz| tar zxf –
    $ cd bash-92/bash-3.2
    $ curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-052 | patch -p0
    $ cd ..
    $ xcodebuild
    $ sudo cp /bin/bash /bin/bash.old
    $ sudo cp /bin/sh /bin/sh.old
    $ build/Release/bash –version # GNU bash, version 3.2.52(1)-release
    $ build/Release/sh –version # GNU bash, version 3.2.52(1)-release
    $ sudo cp build/Release/bash /bin
    $ sudo cp build/Release/sh /bin

    Y comprobar usando…

    $ env x='() { :;}; echo vulnerable’ bash -c «echo esto es un test»

    …que aparece:
    $ env x='() { :;}; echo vulnerable’ bash -c «echo esto es un test»
    bash: warning: x: ignoring function definition attempt
    bash: error importing function definition for `x’
    esto es un test
    …lo que indica que el problema está resuelto

    No debe de haber llevado más de cinco minutos y ya no hay que esperar a que Apple haga una actualización de seguridad.

  6. Alberto Lozano

    ¡Ah!, se me había olvidado. El proceso anterior deja las versiones antiguas en el ordenador renombradas con un sufijo .old
    Si no las queréis mantener, las podéis borrar ya que aun se pueden ejecutar si se invocan. Están en el directorio /bin/ y son bash.old y sh.old

  7. Alberto Lozano

    Ningun problema. Lo puedes convertir en lo que gustes, por ejemplo un cheque a ni nombre de un millon de euros :silbar:

  8. Alberto Lozano

    #10, Carlos.
    Por favor, en el artículo añade que el comando [i]xcodebuild[/i] tenga delante sudo, es decir
    [i]sudo xcodebuild[/i]
    Eso es una precaución por si el usuario se acaba de bajar el Xcode y si ejecuta [i]xcodebuild[/i] directamente, el sistema le meterá una bronca por no haberse leído el EULA.Y si ya tiene la EULA aceptada, usar el [i]sudo[/i] tampoco hace daño.
    Con [i]sudo[/i] se ejecuta con privilegios y aparece el texto del EULA que hay que aceptar o rechazar, se acepta tecleando «accept» y a partir de ahí ya no debe de haber problema ni en este ni en futuros usos de xcodebuild

  9. vick21

    Pues creo que deberéis esperar un poco para ese articulo. El primer parche de este agujero de seguridad, ya es posible saltárselo:
    [url]http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-7169[/url]
    [url]https://twitter.com/taviso/status/514887394294652929[/url]

    Yo lo acabo de comprobar en un linux recién parchado ejecutando (no se si se vera bien con lo de las comillas):
    X='() { (a)=>’ bash -c «echo ls /etc; cat echo»

  10. Alberto Lozano

    En cualquier caso la solución vendrá a ser la misma pero cambiando las versiones en los repositorios, no creo que tarde mucho en estar disponible.

  11. Alberto Lozano

    $ env X='() { (a)=>’ sh -c «echo date»; cat echo
    sh: X: line 1: syntax error near unexpected token `=’
    sh: X: line 1: `’
    sh: error importing function definition for `X’
    sh: echo: Permission denied
    viernes, 26 de septiembre de 2014, 10:42:44 CEST

    Efectivamente crea un fichero propiedad de root llamado echo

  12. Andrés

    Muchas gracias por el aporte, pero no he podido hacerlo en snow leopard y aunque se que esta fuera de soporte 🙁 por ahora sigo trabajando con él.

    ¿Cómo podriá parchear el bash en snow leopar? Más aún que es imposible instalar el xcode.

    Seguí el link de #13 pero me he quedado pasmao, no sé por donde empezar.

    Agradezco me puedan dar una mano

    Saludos