Linux/BSD/Macなど、UNIX系のOSで必ず使われているといっても過言ではない基本的なソフト「GNU Bash」に重大な脆弱性、通称「ShellShock」が発見されました(CVE-2014-6271、slashdot日本版、ITmedia)。
この脆弱性は、bashの環境変数に定の細工を施した文字列を渡すことで、任意のコマンドが実行できてしまうというかなり深刻なもの。CGIスクリプトやOpenSSH経由で攻撃される危険性があるので厳重な注意が必要です。
原因に関して以下のブログが詳しいです。
脆弱性の確認方法や対策をまとめてみました。
確認方法
StackExchangeにかかれてある方法で確認できます。
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test" vulnerable this is a test
「vulnerable」と表示されたら、脆弱性があります。
$ 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: warning: 」と表示されたら、脆弱性はありません。
対策: Linuxの場合修正版bashをインストール
RedHat(CentOS)、DebianなどのメジャーなLinuxディストリビューションでは不具合対策版のbashをインストールするのが簡単です。例えばRedHat系の場合以下のコマンドで修正版bashをインストールできます。
$ yum update bash
インストール後再起動し、先ほどのコマンドで確認します。「bash: warning: 」と表示されればOKです。
対策: Macの場合意見が別れる
Macの場合、HomebrewやMacPortsのbashは修正版がリリースされているので、それぞれの方法で最新版に更新できます。
問題はAppleが提供しているbash(/bin/bash)で、まだ修正版がリリースされていません。パッチを当てたbashを自分でインストールして置き換えるか(Appleちゃんねる、Qiita)、脆弱性に注意しつつ公式修正版がリリースされれるまで待つという方法が考えられます。Macをサーバー用途で使っているならば対策を行った方が良いかもしれません。
Apple公式修正版のbashの早期リリースに期待ですね。