先日
CVE-2014-6271
https://access.redhat.com/security/cve/CVE-2014-6271
と
CVE-2014-7169
https://access.redhat.com/security/cve/CVE-2014-7169
の脆弱性が見つかった。
どの程度まずいものかは
http://techblog.clara.jp/2014/09/bash-vulnerability-vol1/
http://techblog.clara.jp/2014/09/bash-vulnerability-vol2-verification/
こちらを見るとよくわかるかと思います。
検証コードはShell上で
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
と実行して「vulnerable」と表示されたらアウトです。
修正方法は
yum update bash
だけで今回はサーバー再起動の必要はありません。
対応済みのbashのバージョンは以下です。
CentOS: bash-4.1.2-15.el6_5.2.x86_64.rpm
AmazonLinux: bash-4.1.2-15.21.amzn1.x86_64
念のため差し戻したい時は、
yum list --showduplicates bash
でインストールされているバージョンがあれば
yum downgrade bash-{version}
で戻せます。 すでにリポジトリにいない場合は、 epelをインストールして
rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install --enablerepo=epel rpmrebuild rpmrebuild bash
でrpmを作成できます。 ダウングレードは
cd /root/rpmbuild/RPMS/x86_64/ yum downgrade bash-{version}.rpm
でおこなえます。
追記 2014/10/01
http://itpro.nikkeibp.co.jp/atcl/news/14/093001138/
こちらの記事によるとYumなどでディストリビューターのリポジトリからアップデートしとけば大丈夫のようですが、 自前でビルドするといつくか脆弱性が残るようです。
bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"
(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"
shellshocker='() { echo You are vulnerable; }' bash -c shellshocker
こちらのコードで検証ができるようで、 CentOS5,6とAmazonLinuxの以下のバージョンは大丈夫でした。
bash-3.2-33.el5_11.4 bash-4.1.2-15.el6_5.2 bash-4.1.2-15.21.amzn1