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?
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.
Apple ha lanzado una Actualización oficial de seguridad de Bash aquí
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
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
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
¡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
Lea otras preguntas en las etiquetas macosx shellshock