369 votos

¿Cómo puedo volver a compilar Bash para evitar Shellshock (remote exploit CVE-2014-6271 y CVE-2014-7169)?

Dado que Bash 3.2 (la versión proporcionada por el sistema operativo X) es vulnerable a la ejecución remota de explotar conocido como "Shell Shock" (CVE-2014-6271 y CVE-2014-7169) ¿cómo puedo reconstruir Bash y segura de mi sistema por delante de un oficial de Apple parche?

ACTUALIZACIÓN: Nota de que Apple ha lanzado el parche oficial. Ver abajo para más detalles.

18voto

yoliho Puntos 340

Macports

Esto lo bash versión 4.3.28(1) que patched de vulnerabilidades (CVE-2014-6271 y CVE-2014-7169), así como algunos descubiertos posteriormente. Esto es útil si usted ha cambiado de conchas de uso Macports bash para obtener la versión 4 características.

No va a resolver el problema de estándar de OS secuencias de comandos, como los que tienen, #!/bin/sh o #!/bin/bash como la primera línea. Este tipo de problema es la razón por la Macports intenta no utilizar Apple suministra versiones de programas como Macports tiende a actualizarse más rápido, por ejemplo, tiene una nueva versión de bash)

Usted puede hacer uso terminal este como en el Homebrew respuesta

Para instalar macports siga estas instrucciones , que son
1. Instalar Xcode y el Xcode Herramientas de Línea de Comandos
2. De acuerdo a Xcode licencia en la Terminal: sudo xcodebuild -licencia
3. Descargar MacPorts pkg para su versión de OS X: los enlaces están en la página
4. Ejecutar el pkg

Cuando usted tiene macports instalado es necesario últimas versiones, esto se hace mediante la ejecución de

sudo port selfupdate

y volver a compilar o conseguir la última archivos binarios

sudo port upgrade outdated

16voto

Trane Francks Puntos 1476

NOTA con respecto a la oficial de Apple OS X bash Actualización 1.0: Esta actualización de software sólo trae la oficial de Apple bash versión para 3.2.53. El 3.2.54 revisión revisión ofrece el siguiente cambio:

Este parche cambia la codificación de bash utiliza para funciones exportadas a evitar enfrentamientos con las variables de shell, y para evitar que depende solamente de un variable de entorno del contenido para determinar si o no interpretar como una función de shell.

Para los usuarios que ya han parcheado el sistema con 3.2.54 binarios, usted puede reemplazar su binarios compilados con el Apple patch o usted puede dejar las cosas como están, pero no es aconsejable. Aunque Apple dejó sus binario de control de versiones en 3.2.53, el parche de Apple NO contiene el fix para la continuación de explotar de la prueba:

env X='() { (a)=>\' sh -c "echo date"; cat echo

Esto significa que la Manzana oficial 3.2.53 binario contiene una seguridad equivalente a la de vainilla GNU 3.2.54 binario. Un desafortunado punto de confusión, pero es lo que es. Apple solución no es la mitad del horno. Parece ser una solución completa para el problema. Como tal, la siguiente hoja de ruta para la compilación de vainilla bash y sh de GNU fuente debe ser considerada un artefacto histórico y, posiblemente, consultado como una plantilla para hacer los parches en el futuro, en caso de que sea necesario.

NOTA: Con la vainilla fuente de GNU, sh ha elevación de privilegios problemas que causan fallos en varios instaladores, por ejemplo, Adobe Flash. Recomiendo quedarse con el Apple parches binarios. Considere la posibilidad de este parche esquema obsoleto y mal aconsejado.

Hay una nueva GNU bash 3.2.55 revisión que se describe en el siguiente arreglo:

Bug-Descripción:

Hay dos locales desbordamientos de búfer en el análisis.y que puede hacer que el shell para el volcado de núcleo cuando se administra muchos aquí-los documentos que se adjuntan a un único comando o muchos bucles anidados.

Te dejamos el amable lector para determinar si estar con el oficial de Apple parches binarios o el rollo de su propia lidiar con los posibles nuevos ataques. Personalmente, voy a estar pegando con el Apple binarios.


Este post los detalles de cómo compilar e instalar un vainilla bash y sh en OS X. elegí esta ruta como ejemplos siguientes se detalla el uso de Apple específicos de origen no me dejes con la correcta revisión de la revisión. YMMV. Este vainilla instalación es, sin embargo, con el objetivo de reemplazar el OS X binarios de tal forma que cuando se hace Apple finalmente la liberación de una actualización de seguridad, estos vainilla reemplazos será usurpado por su Apple contrapartes.

Mi configuración de base es:

OS X Lion 10.7.5 y Xcode 4.6.3 con todas las utilidades de línea de comandos instalado.

Mis pasos para solucionar este fueron:

Descargar la base de bash código fuente para 3.2.48 de:

https://ftp.gnu.org/gnu/bash/bash-3.2.48.tar.gz

Descargar el bash3.2.49, .50, .51, .52, .53, .54 y .55 parches de:

https://ftp.gnu.org/gnu/bash/bash-3.2-patches/

Me salvó $filename.parche, por ejemplo, bash3.2.50.el parche.

CD en el directorio de descargas y ...

Desembale la fuente principal de la sucursal:

tar xzvf bash-3.2.48.tar.gz

cd bash-3.2.48

Suponiendo que haya cambiado el nombre de tu descargado el parche de archivos como se describe anteriormente,

cp ../*.patch .

Entonces ...

for file in *.patch ; do
  patch -p0 < $file
done

Esto debería mostrar el éxito de los parches de varios archivos. Si no, estar preparado para hacer algo de exploración e investigación.

Siguiente:

sudo cp /bin/bash /bin/bash_old
sudo cp /bin/sh /bin/sh_old
sudo chmod -x /bin/bash_old
sudo chmod -x /bin/sh_old

Que básicamente copia de seguridad de su edad, vulnerables bash, pescado, conchas y quitar su ejecutable de privilegio. Que le da la capacidad para restaurar los comandos como sea necesario, pero elimina su capacidad para hacer daño en el ínterin.

Siguiente:

./configure --prefix=/ ; make ; sudo make install

Este correctamente debe configurar, compilar e instalar el nuevo bash binarios en /bin. Después de que se haya terminado, salga de la Terminal y volver a abrir.

Usted debe, de todas las cosas, feliz y sonriente, ser capaz de bash --version y ahora ver 3.2.55, por ejemplo:

Gaia:Downloads trane$ bash --version
GNU bash, version 3.2.55(1)-release (i386-apple-darwin11.4.2)
Copyright (C) 2007 Free Software Foundation, Inc.

El resultado exacto en el comando anterior será diferente dependiendo de su versión de OS X.

También debe ser capaz de probar su vulnerabilidad frente a bash y encontramos que está bien.

NOTA: sólo Hemos corregido bash hasta ahora, pero el /bin/sh ejecutable se encuentra todavía en su estado vulnerable. Simplemente copiando bash cima sh es un Linux estilo de hacer las cosas. OS X sh aplicación tiene algunas diferencias de bash, sin embargo, por lo que usted desea arrastrar el compilador de nuevo. Más información sobre cómo bash y sh difieren en OS X se puede encontrar aquí:

http://apple.stackexchange.com/a/89327/91441

En el directorio de descarga de hacer:

make clean

En su editor favorito, abra el archivo Makefile.in y desplácese a la línea 99. Vamos a cambiar el Programa de la línea, de manera que el binario hemos de salida es sh en lugar de bash como así:

Program = sh$(EXEEXT)

Guardar y, a continuación,

./configure --prefix=/ --enable-xpg-echo-default --enable-strict-posix-default
make ; sudo make install

Ahora usted ha construido sh casi exactamente como Apple.

Una nota final: En algunos (todos?) sistemas de Apple en general parece colocar la bashbug de ejecución en /usr/bin. Nuestra compilación se han puesto en /bin. Así, los últimos pasos de aquí:

sudo mv /usr/bin/bashbug /usr/bin/bashbug_old
sudo chmod -x /usr/bin/bashbug_old
sudo mv /bin/bashbug /usr/bin/bashbug

15voto

JakeGould Puntos 1926

Para cualquier persona que lucha con compilar desde el código fuente, de 29 de septiembre, Apple ha lanzado oficialmente parches para Mac OS X 10.9.5, 10.8.5 así como 10.7.5:

5voto

CousinCocaine Puntos 3615

OS X 10.6.8 - Snow Leopard

El post de @AlBlue es muy completo. Sin embargo, en mi OS X 10.6.8 servidor de su solución no funcionará. Apple no tiene ninguna solución para 10.6.8 y los pasos que se explican por @AlBlue no funcionan con Xcode 3.2.6 (que es la última versión de Snow Leopard). Recibo un error:

** BUILD FAILED **

The following build commands failed:
sh:
    CodeSign /Users/bas/bash-fix/bash-92/build/Release/sh
bash:
    CodeSign /Users/bas/bash-fix/bash-92/build/Release/bash
(2 failures)

Por esta razón estoy usando brew.sh. Por favor comentar acerca de sus pensamientos cuando usted tiene una mejor solución para OS X 10.6.8 Snow Leopard. Ver también el comentario de @Jerónimo, que fue un éxito de parche en OS X 10.6.8 Snow Leopard con @AlBlue de la solución. De todos modos:

Instale primero la cerveza con el siguiente oneliner:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Actualización brew

brew update

Ahora acabo de instalar la versión más reciente de bash y reemplazar el actual:

brew install bash
sudo sh -c 'echo "/usr/local/bin/bash" >> /etc/shells'
chsh -s /usr/local/bin/bash
sudo mv /bin/bash /bin/bash-backup
sudo ln -s /usr/local/bin/bash /bin/bash

Puede establecer el valor predeterminado shell de inicio de sesión 'Command (complete path)' para el Terminal.aplicación en sus preferencias (Comando,) enter image description here


nota: En los comentarios de algunos usuarios no creo que este método es adecuado. Pero para mí este es el único comprensible método para actualizar BASH en OS X 10.6.8 Snow Leopard.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X