かれ4

かれこれ4個目のブログ

Marvericksでbashを新しくしてみた。

とりあえずテスト

$ env x='() { :;}; echo !!!!!!!!!!' bash -c 'echo hello'
!!!!!!!!!!
hello

無事に脆弱性が確認出来ました。
ということで、新しいBashに入れ替えます。
幸いな事にmacportsには既に対策済みのがあるようなので、macportsでちゃちゃっと入れます。

$ sudo port selfupdate
$ sudo port upgrade 

としたところで、port使うのが久しぶりなせいか、xcodeがどうとか言ってきました。
おそらく普段からxcode使ってる人はこんな事言われずに普通に終わるんじゃないかなぁと思います。

Warning: The Xcode Command Line Tools don't appear to be installed; most ports will likely fail to build.
Warning: Install them by running `xcode-select --install'.
Error: It seems you have not accepted the Xcode license; most ports will fail to build.
Error: Agree to the license by opening Xcode or running `sudo xcodebuild -license'.
Error: Unable to upgrade port: 1
To report a bug, follow the instructions in the guide:
    http://guide.macports.org/#project.tickets

とりあえず言われるがままに

$ xcode-select --install

したら、こんな感じのウィンドウが出てきたので、
f:id:tottokug:20140925190632p:plain
インストールを押して数分後、インストール完了です。
f:id:tottokug:20140925190638p:plain


それで、今度はライセンスがどうのと言っているので確認して、agreeします。

$ sudo xcodebuild -license

気をつけなくてはいけないのは、長い文章が出てきて、最後に"agree"と打たないといけません。
適当にaと打ってreturnを押してしまうと、もう一回同じコマンドを打って、長い文章を見ないといけません。
ちゃんとagreeとうちましょう。xcodeも準備が出来たみたいなので、

$ sudo port upgrade bash

これでbashもいい感じになったはずです。

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

ちゃんとエラーが出てくれるようになりました。