web-dev-qa-db-ja.com

「シェルショック」を受けてOSXでBashにパッチを当てる方法

このテストが示すように、私のMacは脆弱です。

x='() { :;}; echo VULNERABLE' bash -c :ソース

付属のバージョンのbashを使用しています。私も自作を使用しています。 Bashにパッチを適用する好ましい方法は何ですか?

7
hoosierEE

まず、Macから公共のインターネットにWebサービスを提供しているのでない限り、これを行う必要はありません。そうでない場合は、アップルからの公式のセキュリティアップデートがあるまで待ちます。

ただし、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です。

非公式の更新方法:Homebrewを使用してソースコードからBashをコンパイルする

Xcodeがインストールされていない場合は、_$ xcode-select --install_でインストールできるXcodeコマンドラインツールが必要です。

または開発者ポータルから_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_にインストールします

古いbashshは_/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_

再起動すると完了です。

警告—これは、bash 3.2に依存している可能性がある既存のシェルスクリプト、またはMac shとLinux shの違いを壊す可能性があります。 https://Apple.stackexchange.com/questions/146849/how-do-i-recompile-bash-to-avoid-the-remoteにあるソースからのbashとshの置き換えに対するはるかに洗練された答えがあります-exploit-cve-2014-6271-and-cve-2014-7

ほとんどの場合、公式のアップデートを待つのが最善です。

-クリストファー・アレン

11

以下の手順を実行する前に、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

0
huangzuo