This post is also available in: English (英語)
概要
米国西海岸時間の9月24日午前6時頃、UNIX系OSで広く利用されているBourne Again Shell (以下、Bash) に存在する脆弱性の詳細が複数のLinuxベンダーから公開されました。MITRE社によってCVE-2014-6271として割り当てられたこの脆弱性は、英国のロボット会社SeeByte社のUNIXおよびLinuxネットワーク電気通信管理者兼IT管理者のStephane Chazelas氏によって最初に発見されました。
この脆弱性はHeartbleedのような派手さやインパクトのある名前は付いていませんでしたが、セキュリティコミュニティはすぐに「Shellshock」という名前で呼び始めました。BashはほとんどのLinuxやUNIXのディストリビューションとAppleのMac OS Xに存在し、多くのユーザーがパッチを適用する必要があります。
パロアルトネットワークスはこの脆弱性を検知するシグネチャID: 36729 “Bash Remote Code Execution Vulnerability” を含むIPSコンテンツを9月25日夜に緊急リリースしました。
パロアルトネットワークスの次世代ファイアウォール向けOS「PAN-OS」と統合管理製品「Panorama」の全バージョンにおいても、脆弱性のあるバージョンのBashが含まれていますが、認証されたユーザーによってのみ攻撃可能であることを特定しています。通常のPAN-OSメンテナンスリリースのアップデートによって本脆弱性に対する修正プログラムを提供します。詳細については、弊社Webサイト内の製品脆弱性情報ページにて注意事項を掲載しましたのでご参照ください。
脆弱性の詳細
CVE-2014-6271はBashのこれまでの全バージョンに存在し、シェル起動時における環境変数の処理方法に依存します。環境変数に格納されているユーザーのホームディレクトリの場所といった情報がシェル ソフトウェアによって使用されます。変数以外にも、Bashは、ユーザーが後から呼び出すことができるように、環境変数にシェル関数を格納できるようにもなっています。今回のBash脆弱性が存在するこれら関数の構文解析では、シェルは誤って関数定義後に追加されたコードを実行してしまいます。次に例を示します。
$ env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”
vulnerable
this is a test
Bashは関数をクローズするセミコロンの後に、環境変数“x”の処理を停止する必要がありますが、停止せずに “echo vulnerable” の処理を継続してしまいます。一見するとコマンド実行はBashの主要機能であるため、あまり危険性が無いようにも思えますが、他の多くのプログラムがコマンドを実行するためにBashを使用していることを理解することが重要です。
- mod_cgiおよびmod_cgidを実行しているApache サーバーがBashシェルを起動し、悪意あるHTTPヘッダーを渡して脆弱性を悪用する変数をリクエストする
- 何らかの場合に OpenSSH がBashから渡された環境変数を解析し、本脆弱性を用いて特権を得て、脆弱な状態となる
これら2つの例が現時点で本脆弱性を悪用する最も可能性の高い攻撃手法ですが、他のサービスがネットワーク攻撃に利用できる方法でBashを使用する可能性もあります。完全に攻撃を防止するための唯一の方法は、システム上のBashを脆弱性の無いバージョンにアップグレードすることです。
影響範囲
本脆弱性は責任を持った形で開示が行われ、一般公表日にほとんどのプラットフォームでパッチが利用可能となったことは良い点です。悪い点は、本脆弱性が非常に広範囲にわたる恐れがあることです。最も人気のあるLinuxバリアント(種類)においてBashはデフォルトのシェルであり、過去20年にわたるソフトウェアの全バージョンに脆弱性があります。良く管理されたシステムでは本日パッチが適用されるでしょうが、ラックの中で埃をかぶった古いシステムがアップデートされることはないかもしれません。また、ネットワークデバイス、組込システム、IPカメラのようなインターネットに接続されたデバイスの多くはLinuxで実行されており、脆弱である可能性があります。
幸いなことに、単純にBashが実行されているすべてのシステムがリモートから悪用されるというわけではなく、リモートから悪用するにはネットワーク経由でBashにアクセス可能なアプリケーションが起動される必要があります。前述のように、最も一般的な攻撃シナリオはApacheが実行されCGIスクリプトが使われているWebサーバーと考えられます。攻撃者にとってWebサーバーは素晴らしいリソースです。以下のような悪用が懸念されます。
- DDoS 攻撃を実施する (Operation Ababilを参照)
- 訪問者をマルウェアに感染させる
- ネットワーク内部に踏み台を作り他のシステムに拡散する
- Webサーバーにアクセス可能な機密データを搾取する
これらはすべて、すでに進行中の、脆弱なホストに対するインターネットの大規模スキャンから得られた可能性のある結果です。
推奨
- パロアルトネットワークスの脅威防御サブスクリプションを購入しているお客様は、CVE-2014-6271の悪用を検知する脆弱性シグネチャ36729を導入するため、HTTPリクエスト経由で脅威コンテンツバージョン457にアップデートしてください。
- このシグネチャがヒットしていないか脅威ログを監視し、当該送信元IPアドレスからの以後のリクエストをブロックすることを推奨します。この行為は攻撃者が将来の攻撃のためにネットワークに行う偵察行動の可能性があります。
- 脆弱性の無いバージョンへBashを更新するために、脆弱なシステムにパッチを適用してください。
- 本ブログ投稿時点で、Appleは本問題に対応したMac OS X用の更新プログラムをリリースしていません。しかし、Bash 3.2 (Mac OS 10.9に含まれる) 用のパッチは、独自バージョンのコンパイルを選択するユーザー向けに org から入手可能です。
- Bashを更新できない場合、代替シェルへの置き換えが検討できますが、これは互換性の問題を引き起こす可能性があることに注意してください。
- PAN-OS ユーザーは、管理者以外のアカウントを無効にすることで、本脆弱性が利用されて上位権限を取得される可能性を排除し、本脆弱性の影響を緩和することができます。