ShellShock対応について

先日 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