我的 Mac 很容易受到攻击,正如此测试所示:
x='() { :;}; echo VULNERABLE' bash -c :(来源)
我正在使用它附带的 bash 版本。我也使用自制软件。修补 Bash 的首选方法是什么?
我的 Mac 很容易受到攻击,正如此测试所示:
x='() { :;}; echo VULNERABLE' bash -c :(来源)
我正在使用它附带的 bash 版本。我也使用自制软件。修补 Bash 的首选方法是什么?
首先,除非您从 Mac 向公共 Internet 提供 Web 服务,否则您不需要这样做。如果不是,请等到 Apple 发布官方安全更新。
但是,如果您提供 Web 服务,则可能需要更新。
Apple 在此处发布了官方 Bash 安全更新
要确认您使用的是过时的 bash:
$ 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.
最新的 bash 是 4.3.25
如果您没有安装 Xcode,则需要 Xcode 命令行工具,可以通过以下方式安装
$ xcode-select --install
或者从开发者门户https://developer.apple.com/downloads/index.action?=command%20line%20tools下载command_line_tools_for_osx_10.9_september_2014.dmg
要安装 Brew ( http://brew.sh ):
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
然后做:
$ brew doctor
如果有问题,请按照任何说明进行操作。许多常见问题在http://www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/#troubleshoot-homebrew
然后将 brew 更新到最新的软件包列表:
$ brew update
要获取最新的 bash 4.3.25:
$ brew install bash
这会将 bash 安装到 /usr/local/Cellar/bash/4.3.25/bin/bash
旧的bash并且sh仍然存在于/bin,因此在安装后您将旧的可执行文件重命名为新文件。
$ sudo mv /bin/bash /bin/bash_old
$ sudo mv /bin/sh /bin/sh_old
如果你非常偏执,你可以删除执行权限 bash_old
$ sudo chmod a-x /bin/bash_old /bin/sh_old
然后创建一个符号链接到 brew 安装的新 bash 4.3.25。
$ 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
重启就完成了。
一个警告——这可能会破坏一些现有的 shell 脚本,这些脚本可能依赖于 bash 3.2 或 Macsh在 linux上的差异sh。从https://apple.stackexchange.com/questions/146849/how-do-i-recompile-bash-to-avoid-the-remote-exploit-cve的来源替换 bash 和 sh 有一个更复杂的答案
-2014-6271-和-cve-2014-7
在大多数情况下,最好等待官方更新。
——克里斯托弗·艾伦
在执行以下步骤之前,请检查 brew 中的 bash 版本:
$ 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
bash 版本目前已更新至 4.3.27。如果您仍将 4.3.25 链接到 /bin/bash,则您的 Mac 不应启动。如果你这样做了,你可以启动到恢复模式并将 /bin/bash_old 复制到 /bin/bash 并将 /bin/sh_old 复制到 /bin/sh。
我在 brew 中的 bash 版本是 4.3.27,所以这对我有用:
$ 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
不好,还是很脆弱!
bash-4.3$ brew upgrade bash 错误:bash-4.3.25 已经安装
bash-4.3$ /usr/local/Cellar/bash/4.3.25/bin/bash bash-4.3$ env x='() { :;}; echo 易受攻击' bash -c "echo 这是一个测试"
易受伤害的
这是一个测验