bashにコードインジェクションの脆弱性「Shellshock」、管理者に大きなショック影響範囲はどこまで?

UNIX系OSのシェル「bash」に極めて深刻な脆弱(ぜいじゃく)性が発見された。すでにこの脆弱性をスキャンする通信を観測したという報告もあり、修正パッチの適用や継続的な情報収集が望まれる。

» 2014年09月26日 13時00分 公開
[高橋睦美@IT]

 米国時間の2014年9月24日、LinuxやMac OS XなどのUNIX系OSで使われているシェル「bash(Bourne Again Shell)」に、極めて深刻な脆弱性(CVE-2014-6271)が発見された。シェルの環境変数として外部入力を受け入れる設定となっている環境では、最悪の場合、リモートから任意のコマンドを実行される恐れがある。bashの配布元であるGNU Projectやパッケージ配布を行っている各Linuxディストリビューションがパッチを公開済みで、速やかに適用するよう呼び掛けている。

 この脆弱性はコマンドインジェクションの一種で、「Shellshock」と呼ばれている。bashの環境変数の処理に問題があり、細工を施した環境変数を受け入れた場合、そこに含まれる任意のコマンドまで実行してしまう恐れがある。サーバー側の権限設定にもよるが、システム内の情報を盗み見られたり、サーバーを改ざんされたりするなど、大きな影響を受ける恐れは否定できない。

 Shellshockが深刻な問題とされている大きな理由は、WebサーバーがCGIスクリプトを実行する際の受け皿としてbashが利用されているケースが多いからだ。しかも、「CGIは入力値を環境変数として扱うので、攻撃者が任意の内容を設定しやすい」(ラック)。例えば、掲示板やチャットなどのCGIを実行しているWebサーバーは、この脆弱性の影響を受けると考えられるという。シェルでスクリプトではなく他の言語でCGIを記述していても、system()を呼び出す場合は同じく脆弱性の影響を受けるという指摘もある。

 既に多くのIT技術者やセキュリティ技術者が、手元の環境でこの脆弱性を再現し、ブログ上で報告している。ソフトバンク・テクノロジーの辻伸弘氏もこの脆弱性を調査し、「HTTP_USER_AGENTに細工を施してターゲットにアクセスすることで、/etc/passwdの内容を表示できるなど、任意のコマンドを実行できることが検証できた」と報告している。ログファイルを検査すればこの手法で攻撃を受けたことが確認できるが、別の箇所に細工を施すなどの手を加えると、検出が困難になる可能性もあるという。

HTTP_USER_AGENTに細工を施してアクセスすると、環境変数に記されたコマンドが実行されてしまう(上)。コマンドライン上でも同様(下)(いずれもソフトバンク・テクノロジー辻伸弘氏提供)

 Twitter上では、早速この脆弱性の有無をチェックしていると思われるスキャン通信を観測したという報告が複数ある。中には、Heartbleed脆弱性が公になったときと同様、検証を目的とした通信が含まれている可能性もあるが、パッチが適用されていない脆弱なシステムを探そうとする攻撃の前段階である恐れも否定できない。Googleなどの検索エンジンで特定のキーワードを検索すれば、Shellshockの影響を受ける恐れのあるWebサイトを見つけることも可能であることから、「当面は、この種のアクセスが増えるかもしれない」と辻氏は警告する。現に、海外のセキュリティ組織や研究者が、Shellshockの脆弱性を狙ったボットや攻撃コードを収集したと報告している。

 対策は、GNU Projectや各Linuxディストリビューターがリリースしたパッチを適用すること。もしそれが困難な場合は、(Apacheの場合は)mod_securityなどのモジュール、あるいはIDS/IPSやWAFといったセキュリティ機器で、入力値をフィルタすることを辻氏は推奨している。既にいくつかのセキュリティベンダーやコンテンツ配信事業者では、Shellshockに対応したシグネチャを公開した。また、CGI経由で環境変数をWebサーバーに与えたときには、そのWebサーバーの権限でコマンドが実行されることから、必要以上に高い権限を与えないよう制限することもポイントになるという。

 bashを他のシェルに入れ替えるという代替策も提案されているが、「既存の環境の稼働を止めなければならないことを考慮すると、現実的には対応が困難な環境もあるだろう」(辻氏)。なお、一部のLinuxやBSD系OSでは/bin/shがデフォルトでbash以外のシェルとなっているため問題はないと思われるが、念のため脆弱性の有無を確認しておく方が望ましい。

 いずれにせよ、修正パッチの適用とともに、「サーバー上で動作する各種サービスのアクセス権限を管理する」「サーバーに対するアクセスを監視する」「外部から内部のファイルなどを読み出そうとする動きやWebサーバーの改ざんを検知する仕組みを作っておく」といった、基本的なセキュリティ対策をしっかりと行っておくことが重要といえそうだ。

 なお、Shellshock用の修正パッチが不十分であり、パッチ適用後も一部の攻撃が成立したとの報告も浮上している(CVE-2014-6271とは別の脆弱性、CVE-2014-7169であるとの指摘もある)。また、ブロードバンドルーターなど、Linuxをベースにした組み込み機器に対する攻撃の可能性も含めると、影響範囲は多大なものになる。OpenSSLの脆弱性、「Heartlbleed」並みのインパクトを与えるものだと警告する声もあり、引き続き注意が必要だ。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。