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