¿Cómo parchar Bash en OSX después de "shellshock"? [duplicar]

7

Mi Mac es vulnerable, como muestra esta prueba:

x='() { :;}; echo VULNERABLE' bash -c : ( fuente )

Estoy usando la versión de bash que viene con él. También uso Homebrew. ¿Cuál es la forma preferida de parchear Bash?

    
pregunta hoosierEE 25.09.2014 - 17:59
fuente

3 respuestas

11

Primero, no necesita hacer esto a menos que esté ofreciendo servicios web a la Internet pública desde su Mac. Si no lo está, espere hasta que haya una actualización de seguridad oficial de Apple.

Sin embargo, si está ofreciendo servicios web, es posible que desee actualizar.

Parche oficial

Apple ha lanzado una Actualización oficial de seguridad de Bash aquí

Comprobar si eres vulnerable

Para confirmar que estás usando un bash desactualizado: $ which bash /bin/bash $ /bin/bash --version GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13) Copyright (C) 2007 Free Software Foundation, Inc.

El bash más actual es 4.3.25

Método de actualización no oficial: compilar Bash desde el código fuente usando Homebrew

Si no tiene Xcode instalado, necesitará las herramientas de la línea de comandos de Xcode, que pueden ser instaladas por $ xcode-select --install

O desde el portal de desarrolladores https://developer.apple.com/downloads/index.action?=command%20line%20tools download command_line_tools_for_osx_10.9_september_2014.dmg

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

Entonces haz: %código% Siga las instrucciones si hay problemas. Muchos problemas comunes se abordan en $ brew doctor

Luego actualice la preparación a la última lista de paquetes: http://www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/#troubleshoot-homebrew

Para obtener el último bash 4.3.25: $ brew update

Esto instala bash en $ brew install bash

Los antiguos /usr/local/Cellar/bash/4.3.25/bin/bash y bash todavía existen en sh , por lo que después de la instalación, cambiará el nombre de los ejecutables antiguos a un archivo nuevo. /bin

Si eres muy paranoico, puedes eliminar los permisos de ejecución en el $ sudo mv /bin/bash /bin/bash_old $ sudo mv /bin/sh /bin/sh_old bash_old

Luego cree un enlace simbólico al nuevo bash 4.3.25 que se instaló. $ sudo chmod a-x /bin/bash_old /bin/sh_old

Reinicia y está completo.

Una advertencia: esto puede romper algunos scripts de shell que pueden depender de bash 3.2 o las diferencias que Mac $ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/bash $ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/sh tiene sobre linux sh . Hay una respuesta mucho más sofisticada para reemplazar bash y sh de fuentes en enlace

En la mayoría de los casos, es mejor esperar las actualizaciones oficiales.

- Christopher Allen

    
respondido por el Christopher Allen 25.09.2014 - 23:05
fuente
0

Verifique la versión de bash en brew antes de realizar el siguiente paso:

$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash / bin / bash

$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash / bin / sh

La versión de bash se ha actualizado a 4.3.27 hasta ahora. Si aún vinculas 4.3.25 a / bin / bash, tu Mac no debería arrancar. si tiene que hacer eso, puede iniciar el modo de recuperación y copiar / bin / bash_old a / bin / bash y copiar / bin / sh_old a / bin / sh.

Mi versión de bash en brew es 4.3.27, así que esto funcionará para mí:

$ sudo ln -s /usr/local/Cellar/bash/4.3.27/bin/bash / bin / bash

$ sudo ln -s /usr/local/Cellar/bash/4.3.27/bin/bash / bin / sh

    
respondido por el huangzuo 29.09.2014 - 09:57
fuente
-1

¡No es bueno, todavía es vulnerable!

bash-4.3 $ brew upgrade bash Error: bash-4.3.25 ya instalado

bash-4.3 $ /usr/local/Cellar/bash/4.3.25/bin/bash bash-4.3 $ env x = '() {:;}; echo vulnerable 'bash -c "echo es una prueba"

vulnerable

esto es una prueba

    
respondido por el guilou 26.09.2014 - 22:21
fuente

Lea otras preguntas en las etiquetas