Bash 脆弱性の対応 #ShellShock (Mac OS X)
Bash に含まれる深刻なバグ (通称: ShellShock) の対応方法について
脆弱性の報告
環境変数に仕込まれたコードを実行してしまう脆弱性が報告される。ややこしいことに2件立て続けに報告されているので注意。
- CVE-2014-6271 Learn more at National Vulnerability Database (NVD)
- CVE-2014-7169 Learn more at National Vulnerability Database (NVD)
CVE-2014-6271 の対策パッチは修正不十分である指摘があり、CVE-2014-7169 を含めた対応が必要です。
脆弱性のチェック
CVE-2014-6271 のチェック
下記のコマンドで確認できる
env x='() { :;}; echo vulnerable' bash -c "echo this is a test”
脆弱性なし
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
脆弱性あり
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test
見たまんま「脆弱性あるよ!」って返って来たらマズい。
CVE-2014-7169 のチェック
下記のコマンドで確認できる
cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
脆弱性なし
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory
脆弱性あり
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014
若干エラーメッセージが混じるが、脆弱性がある場合には date
コマンドが実行されて日付が表示される
Homebrew でアップグレード
Homebrew 経由で最新版のbash をインストールできる。
brew update
brew upgrade bash
/bin/bash
は変更されないので、インストール先のファイル /usr/local/bin/bash
を適宜コピーする。
sudo cp /usr/local/bin/bash /bin/bash
bash バージョンを確認
古いバージョン
$ bash --version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.
新しいバージョン
$ bash --version
GNU bash, version 4.3.26(1)-release (x86_64-apple-darwin13.4.0)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
ちなみに、/bin/sh
も中身が bash かもしれないので sh --version
で確認して、必要があればファイルを入れ替えた方が良い。