LoginSignup
15
16

More than 5 years have passed since last update.

OS Xのbashを更新する(brew編)

Last updated at Posted at 2014-09-25

Introduction

 先日からbashの脆弱性についてのtweetが投稿されまくっています.環境変数に文字列を代入しているだけのはずが,なぜかevalされるのが原因のようです.
 外部コマンドを実行する際にも,bash経由でコマンドが実行されるとのことです.よって,CGIを動かしているWebサーバに対して,この脆弱性を使ってイタズラするのは意外と簡単な場合もあるようです.
 referenceで紹介しているページには,簡単な確認用のコードが載っているので使ってみてください.

OS Xのbashを更新しよう

 本来はAppleがCommand Line Toolsを更新してくれると良いのですが,脆弱性を抱えたまま待っているというのも良くないと判断しました.そこで(私のMacは特にサービスを提供しているわけではありませんが)OS Xのbashを更新してみましょう.私は普段からbrewを使っているので,今回もbrewを使います.

$ brew update
$ brew upgrade bash

「はい,これでお終い」と思ったらreadline絡みでエラーが出てしまいました.

$ bash
dyld: Library not loaded: @@HOMEBREW_PREFIX@@/opt/readline/lib/libreadline.6.dylib
  Referenced from: /usr/local/bin/bash
  Reason: image not found
zsh: trace trap  bash

そのような場合はreadlineを再インストールすれば良いようです.

$ brew rm -f readline
$ brew install readline
$ brew link readline --force

この作業により,/usr/local/bin/bashが作られます.ただし元からある/bin/bashはそのままです.特にサービスを起動しておらず,パスの順序を正しく設定していればこれで問題無いと思います.
実際に確認すると,環境変数xの定義に失敗していることが分かります.

$ env x='() { :;}; echo vulnerable' bash -c "echo hello"
bash: 警告: x: ignoring function definition attempt
bash: `x' の関数定義をインポート中にエラーが発生しました
hello

reference

OS XのBashの脆弱性CVE-2014-6271を修正する方法

追記(2014/9/30)

Appleより,update版のbashが提供されています.こちらも併せてご利用ください.(まだ何の対策も行っていない人は,こちらのアップデートのみで構いません)

OS X bash Update 1.0 – OS X Mavericks

15
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
16