GNU bash(ユーザと OS の仲介を行うシェルプログラムのなかで,もっとも普及している UNIX ソフトウェア)の新たな脆弱性が発見され,IT 業界ではかなりの騒ぎになっている。それは「GNU bash Shellshock vulnerability」といわれる脆弱性であり,「bash を使用して OS コマンドを実行するアプリケーションを介して,遠隔から任意の OS コマンドを実行される可能性がある」というもの。
九月二十五日に JPCERT/CC から注意喚起され,昨日までに CVE-2014-6271, CVE-2014-6277, CVE-2014-6278, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187 の六つの CVE が発行されている。bash 4 系では 4.3.28 以降で対策されている。
うちの会社でも品質保証部からのセキュリティアップデート対策要請がかしましい。もちろん,Linux ほか,UNIX 系の担当顧客システムに対し,最新パッチを適用しているところである。
今夜,自宅サーバ FreeBSD 9.2-RELEASE-p12 でも対策を行うことにした。Web サーバのアクセスログをチェックしてみると,この脆弱性を突くアタックがもうすでにウチにも来ているようで,まずいと思った。幸い,Apache IP denial configuration を組み込んでいたおかげで,当該アクセスを拒否(レスポンス 403)できていた。
37.187.77.163 - - 2014/10/03-23:06:08 "GET /?x=() { :; }; echo Content-type: text/plain;echo;echo;echo M`expr 1330 + 7`H; HTTP/1.0" 403 1129 0 "() { :; }; echo Content-type:text/plain;echo;echo;echo M`expr 1330 + 7`H;" "() { :; }; echo Content-type:text/plain;echo;echo;echo M`expr 1330 + 7`H;"
まず現インストールバージョン 4.3.11 で事象を確認した。
$ bash --version GNU bash, バージョン 4.3.11(2)-release (i386-portbld-freebsd9.2) Copyright (C) 2013 Free Software Foundation, Inc. $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test" vulnerable this is a test
検証コードで “vulnerable” と出力され,問題が確認された。このように環境変数の扱いのバグがこの Shellshock 脆弱性の要因である。FreeBSD ports を最新にして,bash を最新バージョン 4.3.28 にした。以下は,portsnap で ports 全体を最新に更新し,パッケージ管理ツール pkg をアップグレードするオペレーションをも示している。
% su -m # portsnap fetch extract update # cd /usr/ports/ports-mgmt/pkg && make deinstall reinstall clean # pkg2ng # cd /usr/ports/shell/bash && make deinstall reinstall clean
さて,確認してみる。
$ bash --version GNU bash, バージョン 4.3.28(0)-release (i386-portbld-freebsd9.2) Copyright (C) 2013 Free Software Foundation, Inc. $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test" this is a test
“vulnerable” 出力はされなくなって,OK のようである。
本 bash 脆弱性の詳細は,IPA の情報「更新:bash の脆弱性対策について(CVE-2014-6271 等)」を参照のこと。