Apple の Bash の更新が不完全だったらしい
セキュリティホールメモのBash ShellShock バグ (CVE-2014-6271, CVE-2014-7169, CVE-2014-6277, CVE-2014-6278, CVE-2014-7186, CVE-2014-7187) 修正情報まとめ
(various) によると、Appleの修正は不完全だそうだ。
パッチが五月雨式だったから?
ShellShock の 問題は修正パッチリリース後にそのパッチが不完全でさらにパッチがでるという状況だったので、パッチがリリースされた直後の更新方法では不完全なパッチだけしか対応していないことがある。この記事もそうかもしれない。
また後発でパッチがリリースされる可能性は否定できないので注意が必要である。
ビルド
今回は、Appleの公開しているソースに GNUがリリースしている、052 から 056 057のパッチをあててビルドすることにした。他に必要なパッチがあれば、同様の方法で適用してほしい。
Every Mac Is Vulnerble shellshock bash exploit heres patch os x を参考にしている。
必要なもの
Xcode (Command Line Tools)
ビルド方法
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
for i in $(seq -f "%03g" 52 57);do curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-$i | patch -p0; done
cd ..
xcodebuild
build/Release/bash --version
build/Release/sh --version
なんらかの事情でcurlで httpsを扱えない場合には、しかたがないので、curl -kに置きかえるとダウンロードはできるが、信頼性は減少する。
最後の bash --version でVersionが確認できる。
いれかえ
Appleのリリースしたバージョンも念のために削除せずにおいておいたほうがいいかもしれないので、以下のようにすることにした。
sudo cp -p /bin/bash /bin/bash.org
sudo cp -p /bin/sh /bin/sh.org
sudo cp -p build/Release/bash /bin/bash
sudo cp -p build/Release/sh /bin/sh