【重要】bash に重大な脆弱性が見つかったようです

ShellShock

いつものように yum でのアップデートを確認していたら、bashのアップデートが入っていたので何事と思っていると、bash に重大な脆弱性が見つかったようです。
Mac OS X も影響を受けるとの事。
さっさと対応しておきましょう。

2014/9/25 22~23時頃 一部追記。

はじめに

以下で報告されています。

JPCERT の注意喚起によると、パッチの適用だけでは不十分との事です。

※シェルショック ( Shellshock ) とも言うらしい。ハートブリード ( Heartbleed ) のときのように、重大な脆弱性には名前が付けられるんですかね。

弊社ではWAFは導入してありますが、シェルの入れ替えも含めて追加対策の検討が必要かもしれません。

以下対策は、パッチの適用に関してのみ記しています ( 記事作成当初の状態 )。

JPCERT の回避策にもあげられている WAF の導入に関しては、後述の弊社関連記事なども参考になるかもしれません。

問題

問題の恐ろしさを実感して頂くには、以下のページを見て頂くのがよいかと。

CGIスクリプトを実行している環境の場合、確認/対応は必須でしょう。

確認方法

以下のコマンドを実行する事で確認可能との事。
$ env x='() { :;}; echo vulnerable'  bash -c "echo this is a test"

脆弱性ありの場合、以下のようになります。

$ env x='() { :;}; echo vulnerable'  bash -c "echo this is a test"
vulnerable
this is a test

脆弱性があるbashの場合、環境変数 x で定義した echo vulunerable が実行されてしまいます。
この場合 単なる echo だからよいですが、システムに影響を与えるコマンドが実行された場合。。。

Amazon Linux (AWS EC2)

以下環境で確認したところNGでした。(9/25時点)

OSAmazon Linux(x64)
bashGNU bash, version 4.1.2(1)
$ bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ env x='() { :;}; echo vulnerable'  bash -c "echo this is a test"
vulnerable
this is a test

CentOS

CentOS上で実行した際には以下のように

$ bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

$ env x='() { :;}; echo vulnerable'  bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test

この場合は大丈夫な様子。bash --version で出力されるバージョンは Amazonn Linux と同じですが、一方は脆弱性ありという状況。

Cygwin

ちなみにCygwin を入れてるので、それも確認してみたところ、

C:\>bash --version
GNU bash, version 4.1.11(2)-release (x86_64-unknown-cygwin)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

C:\>env x='() { :;}; echo vulnerable'  bash -c "echo this is a test"
vulnerable
this is a test

どうやら脆弱性のあるバージョンのようです。

対策

Amazon Linux

AWS のフォーラム Waiting for a fix for CVE-2014-6271Update to Amazon AMI for CVE-2014-6271 で話題に上がっていました。

いつものように yum で update します。

$ sudo yum update
$ sudo ldconfig

update適用後、チェック用コードを再実行。

$ env x='() { :;}; echo vulnerable'  bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test

上記フォーラムでは、もし update が見つからない場合で、再起動したくない場合、以下を実行しろとも書いてあります。

# yum clean all
その後
# yum update bash

CentOS

今回は問題なかった ( yum_cron によって既に適用済みだったのかも ) ので対応していませんが、Amazon Linux 同様 yum update で対応可能だと思います。

Cygwin

Cygwin も インストーラ (setup-x86_64.exe) を再実行してアップデートしました。

C:\>bash --version
GNU bash, version 4.1.11(5)-release (x86_64-unknown-cygwin)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

C:\>env x='() { :;}; echo vulnerable'  bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test

まとめ

先にも書きましたが、上記対応だけでは不十分という注意喚起が行われています。
( とはいえ、上記対応だけでも行った方がよい )

※以下記事も追加しました。

この問題に関しては、しばらく監視を続けたいと思います。

I feel like bashing bash.