Mac OS XのbashにShellShock(CVE-2014-6271, CVE-2014-7169)パッチを当てる方法です。詳細は以下から。
NBCに「Appleも”bashと呼ばれるバグ”についてMacユーザーに警告」として放送されてしまったらしいbashの脆弱性 ShellShockですが、CVE-2014-6271に続いてCVE-2014-7169のパッチも配布されたので簡単な適用方法をまとめておきます。
APPLE WARNS MAC USERS ABUT A BUG CALLED BASH – Twitter
もっとも簡単(?)なパッチの当て方
ShellShockが公開されてから何台かのMacをセットアップしパッチ当てましたが、「ShellScriptを作って、Permissionを変更して〜…」とやるよりもAsk Differentの精鋭が提示してくれているこの方法の方が簡単だと思います。
1. xcodebuild を使用するのでMac App StoreからXcodeをインストールし起動、SDKライセンスに同意「Agree」。
2.ターミナル.appを起動して以下のコマンドをペースト(この時点では実行しないで下さい)。
pbpaste | cut -c 2- | sh
3. Ask Differentのモノか以下のブロックをクリップボードにコピー(Control + C)します。
$ # If you want to disable auto-imported functions, uncomment the following
$ # export ADD_IMPORT_FUNCTIONS_PATCH=YES
$ mkdir bash-fix
$ cd bash-fix
$ curl https://opensource.apple.com/tarballs/bash/bash-92.tar.gz | tar zxf -
$ cd bash-92/bash-3.2
$ curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-052 | patch -p0
$ curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-053 | patch -p0
$ # See note above about ADD_IMPORT_FUNCTIONS_PATCH
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] && curl http://alblue.bandlem.com/import_functions.patch | patch -p0
$ cd ..
$ # Note: DO NOT ADD SUDO TO XCODEBUILD HERE
$ xcodebuild
$ build/Release/bash --version # GNU bash, version 3.2.53(1)-release
$ build/Release/sh --version # GNU bash, version 3.2.53(1)-release
$ sudo cp /bin/bash /bin/bash.old
$ sudo cp /bin/sh /bin/sh.old
$ sudo cp build/Release/bash /bin
$ sudo cp build/Release/sh /bin
4.放置してあったターミナル.appで[Enter]を押し先ほどのコマンドを実行。
以上はMacのpbpasteコマンドでクリップボード上のパッチスクリプトをターミナルに渡し、スクリプトの前2行($ )を削除、shで実行という動作をするので、後は途中でターミナルが求めてくるrootパスワードを入力してやるだけでShellShock用 Patch 53が当てられます。
実行結果。
関連リンク:
・How do I recompile Bash to avoid Shellshock (the remote exploit CVE-2014-6271 and CVE-2014-7169)? – Ask Different
・アップデートしよう!脆弱性「ShellShock」の問題に対処したBashをリリース(Jailbreak用) – Tools 4 Hack
・OS XのBashで脆弱性CVE-2014-6271を修正する方法
・Apple、iMoreの取材に対し「bashの脆弱性ShellShockに対応したソフトウェア・アップデートを提供するために取り組んでいる」とコメント
コメント
ありがとうございます。前回紹介された方法より簡単です。無事バーションアップ出来ました。
Ask Differentの方で、これをやった後にバックアップした奴のパーミッション変えるよう推薦されていますね。
sudo chmod a-x /bin/bash.old /bin/sh.old
これを実行することで、バックアップ側の権限を無くしている(はず)
理想的には削除した方が安全ですけど、何かあったときには困るのでこれで良いのかな?
xcodebuild がインストールしてあるだけだとビルドが実行されませんでした。一度、
sudo xcodebuild
して、ライセンスにagreeしたところ実行されました。
ただ、xcode5がインストールされていたところに先日のアップデートでxcode6が入った状態(で、xcode6はまだ起動してない)だったので、ひょっとしたらxcodeを起動したらライセンス画面が出たのかもしれません。
その後さらに4件の脆弱性が発見され、現時点で最新バージョンは3.2.57(1)になっています。
リンクされたAsk Differentの記事も更新されていますね。