Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away