VPSサーバーでWebサイト公開 備忘録 ~Linux、MySQLからAJAXまで

Linuxのbash脆弱性CVE-2014-6271、Shellshockを修整

bashのCVE-2014-6271、Shellshockの脆弱性が報告されたため、取り急ぎ対応しました。(CentOS6.5の環境)
私が実施した時点(2014年9/29 AM6時)では日本版のマニュアルが最新に更新されていなかったようで診断確認時に少し混乱しました。最新の英語版を読んで対応しました。

Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271, CVE-2014-7169) – Red Hat Customer Portal
 
詳しい内容は置いといてとりあえず対応済みのバージョンにアップデートしました。yum update bashでアップデートするだけなので手順としては簡単ですが、日本語版にある診断手順用のコマンドをコピーして実行すると改善していないかのような出力結果となってしまったので、英語版を読んで対応しました。
 
(対応手順)
 
1.bashのバージョン確認
 
$ rpm -qa | grep bash
bash-4.1.2-15.el6_4.x86_64
 
2.診断テスト
 
脆弱性があると下記実行結果になるようです。

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

vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test

 
※日本語訳の資料だと下記のように記載されていて英語版と異なっています。
$ env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”
 
3.bashをアップデート
 
root権限でアップデートします。
 
# yum update bash
 
bash-4.1.2-15.el6_5.2にアップデートされました。(2014/9/29 AM 6:00時点)
 
4.診断テストで確認
 
一般ユーザーで再度診断テスト。下記出力結果になりました。

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

※日本語訳のコマンドを使うと修整前と同じ出力結果になってしまいました。
 
英語版には、もう一つ診断テスト用のコマンドがあったのでそちらも実行しました。下記実行結果であれば問題ないようです。

$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory
モバイルバージョンを終了