Mac OS X 10.7 Lion の Bash バージョンを確認して、最新バージョンに更新する方法

  • このエントリーをはてなブックマークに追加
bash

OS X bash Update 1.0 – OS X Lion
http://support.apple.com/kb/DL1767

2014年9月下旬、Appleは、OS X 10.7 から 10.9までのbash向けに、ShellShock脆弱性を修正する「OS X bash Update 1.0」をリリースしました。このパッチを適用した後のbashバージョンは3.2.53になりますが、JPCERT/CCのレポートによれば「Bash 3.2 Patch 55 およびそれ以前」については、まだ脆弱性が残存しているそうです。

 

Mac OS X 10.7 Lion のBashバージョンの確認方法

Lionのterminal(ターミナル.app)を起動

パスの確認
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

現在のバージョンの確認
$ bash –version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)
Copyright (C) 2007 Free Software Foundation, Inc.

場所の確認
$ which bash
/bin/bash

$ ls -l /bin/bash
-r-xr-xr-x 1 root wheel 1371648 May 17 2012 /bin/bash

$ which sh
/bin/sh

$ ls -l /bin/sh
-r-xr-xr-x 1 root wheel 1371648 May 17 2012 /bin/sh

 

Mac OS X 10.7 Lion のBashをアップデートする方法

前提条件(コンパイルが必要なため):
・Xcode 4.6.3 がセットアップされていること。
・Xcode にて Command Line Tools が追加インストールされていること。

最新のBashソースコードをAppleのサイトからダウンロードする
https://opensource.apple.com/tarballs/bash/bash-94.1.2.tar.gz

最新のパッチをGNU Bashサイトで確認する
http://ftp.gnu.org/gnu/bash/bash-3.2-patches/
(2014/12/25時点では 32-057)

ソースコードを解凍する
tar zxvf

パッチ当てをする
(bash-94.1.2.tar.gzをそのままビルドすると version 3.2.53になる為)
cd bash-94.1.2/bash-3.2
for i in $(seq -f “%03g” 54 57);do curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-$i | patch -p0; done

seqコマンドは開始から終了までの数列を出力してくれるコマンドで、オプション -f “%03g” は、printfのフォーマットと同じで,3桁になるように0で埋めるという意味。

解凍したフォルダ内でビルドする
cd ..
xcodebuild

** BUILD SUCCEEDED **
で、カレントディレクトリから
build/Release/
の中に作成される

バージョン確認
$ build/Release/bash –version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin11)
Copyright (C) 2007 Free Software Foundation, Inc.

$ build/Release/sh –version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin11)
Copyright (C) 2007 Free Software Foundation, Inc.

古いファイルをリネームする
(古いファイルがあるディレクトリは /bin/)※対象ファイルは「bash」と「sh」
$ sudo mv /bin/bash /bin/bash.ols
$ sudo mv /bin/sh /bin/sh.old
$ sudo chmod a-x /bin/bash.old /bin/sh.old

新しいファイルを設置する
$ sudo cp -p build/Release/bash /bin/bash
$ sudo cp -p build/Release/sh /bin/sh

$ ls -l /bin/bash
-rwxr-xr-x 1 hoge staff 1899152 Dec 25 06:29 /bin/bash
$ ls -l /bin/sh
-rwxr-xr-x 1 hoge staff 1899264 Dec 25 06:29 /bin/sh

terminalを1度exitして再起動。稼働しているbashのversionを確認する
$ /bin/bash –version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin11)
Copyright (C) 2007 Free Software Foundation, Inc.

$ /bin/sh –version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin11)
Copyright (C) 2007 Free Software Foundation, Inc.

脆弱性の残存確認
$ env x='() { :;}; echo this bash is vulnerable’ bash -c :
(this bash is vulnerable が出力されなければOK)

$ x='() { :;}; echo this bash is vulnerable’ bash -c ‘echo hello’
(this bash is vulnerable が出力されなければOK。hello だけが表示される。)

$ env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”
(vulnerable が出力されなければOK。this is a test だけが表示される。)

 

GNU bash の脆弱性に関する注意喚起
https://www.jpcert.or.jp/at/2014/at140037.html

OS X bash アップデート 1.0 について
http://support.apple.com/ja-jp/HT6495

 

参考にさせていただいたサイト:
Apple のリリースした、Bash の更新が不完全だったので、パッチをあてなおした。
http://qiita.com/fu7mu4@github/items/68e59af65cd2c934d33a

Every Mac Is Vulnerable to the Shellshock Bash Exploit: Here’s How to Patch OS X
http://mac-how-to.wonderhowto.com/how-to/every-mac-is-vulnerable-shellshock-bash-exploit-heres-patch-os-x-0157606/

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

*

人気記事ランキング

  • SEOブログパーツ
ページ上部へ戻る