GNU bash の脆弱性 ~ shellshock 問題~ について

2014年09月24日、 GNU bash の脆弱性 (CVE-2014-6271 / CVE-2014-7169) ~shellshock 問題~ について報告されました。 インシデント情報活用フレームワーク検討 WGでは、インシデント対応検討 WG (旧:インシデント対応技術調査 WG)、日本シーサート協議会に加盟しているチームに協力を得て、インシデント発生を事前に予防する措置として、「GNU bash の脆弱性 ~ shellshock 問題~」に関する公開情報を調査し、本レポートにまとめました。

  • 2014-09-27
    • ・新規

GNU bash の脆弱性 ~ shellshock 問題~ とは

GNU bash の脆弱性 ~ shellshock 問題~ は、 Linux で使用するシェルのひとつである GNU bash (Bourne-Again Shell) の環境変数の処理に存在する任意のコード実行などを許してしまう脆弱性です。 Web サーバ上で動作する CGI プログラムや Linux ベース組み込みシステムなど、非常に広範囲にわたって影響を与えるものです。

多くの Linux ディストリビューションがデフォルトのシェルとして、GNU bash を使用しています。

      [nca@centos6.5 ~]$ ls -l /bin/sh
      lrwxrwxrwx. 1 root root 4  Jul 28 04:37 2014 /bin/sh -> bash

この問題により、次のようなアプリケーションも、影響を受ける可能性があります。

* Web アプリケーション

Linux 系 Web サーバ上で mod_cgi あるいは、mod_cgid から起動される CGI プログラムが、 (明示的/暗示的に) GNU bash を呼び出している場合に、影響を受ける可能性があります。 なお、mod_php、mod_perl、および mod_python は環境変数を使用しないため、影響を受けないと考えられます。

Apache HTTP サーバの場合には、次のような条件を満たす場合、mod_cgi あるいは、mod_cgid から起動される CGI プログラムが稼働している可能性があります。

  • LoadModule cgi_module modules/mod_cgi.so、LoadModule cgid_module modules/mod_cgid.so のいずれかを有効にしている。
  • ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" で指定されたフォルダにプログラムがある。あるいは、AddHandler cgi-script .cgi で指定された拡張子を持つプログラムがある。

(例) CGI プログラムそのものを シェルスクリプトで作成している場合

      #!/bin/sh
      echo "Content-type: text/plain"
      echo
      echo "vulnerable CVE-2014-6271 / CVE-2014-7169"

(例) CGI プログラム中で、(明示的/暗示的に)シェルを使って外部コマンドを呼び出している場合

  • C 言語で system/popen 関数を使用している
  • Python 言語で os.system/os.popen 関数を使用している
  • PHP 言語で system/exec 関数を使用している
  • Perl 言語で open/system 関数を使用している
    <明示的な呼び出しの例>
      #!/usr/bin/perl
      print "Content-type: text/plain\n\n";
      system("bash -c 'echo CVE-2014-6271 / CVE-2014-7169'");

      #!/usr/bin/python
      import os,sys
      print "Content-type: text/plain"
      print
      sys.stdout.flush()
      os.system("echo CVE-2014-6271 / CVE-2014-7169")

    <暗示的な呼び出しの例>
      #!/usr/bin/perl
      print "Content-type: text/plain\n\n";
      $list=`/bin/ls -l *`; #ここで、暗示的に bash 経由で ls コマンドが実行される
      print $list;

* Secure Shell (SSH)

rsync や git などの SSH を使用してユーザが実行できるリモートコマンドを制限している場合にも、 その制限を迂回できてしまう可能性があります。

* DHCP クライアント

DHCP クライアントでは、環境変数を参照した後、GNU bash を使ってネットワークインタフェース設定をしている場合があります。 DHCP クライアントが不正な DHCP サーバを利用した場合には、この脆弱性を悪用される可能性があります。

* メールサーバ

qmail では、mail from:、rcpt to: で指定された値を環境変数として取り扱うために、この脆弱性を悪用される可能性があります。

この脆弱性による影響範囲が大きいと言われている理由は、 Web サーバ上で稼働する CGI プログラムが、(明示的/暗示的に) 脆弱な GNU bash を呼び出している場合、 リモートから任意のコード実行を許してしまう可能性があるからです。 図1 は、 シェルスクリプトで作成されたサンプルプログラム (nca-test.cgi) が、 不正な HTTP 要求を受信した結果、OS コマンドの実行を許してしまった事例です。 通常、"NCA" という文字列を表示するプログラムが、 ファイルシステムの情報やグループ情報の表示に利用されてしまっていることになります。


図1. Web サーバ上の CGI プログラム経由で脆弱性を悪用されてしまった場合の例

図2 は、 SSH においてユーザが実行できるリモートコマンド制限を迂回されてしまった事例です。 ファイルシステムの情報表示("df -h")を実行して通信を終了するように設定していますが、 脆弱性を悪用され制限したコマンド以外("head -5 /etc/passwd")が実行されてしまっています。


図2. SSH においてコマンド実行の制限を迂回されてしまった場合の例


報告されている GNU bash の脆弱性の整理

脆弱性識別子 概要 想定される影響 公表日
CVE-2014-6271 環境変数の処理の脆弱性 任意のコード実行 2014年9月15日
CVE-2014-7169 脆弱性 (CVE-2014-6271) の修正漏れ 任意のコード実行 2014年9月24日
CVE-2014-7186 領域外のメモリアクセスによる脆弱性 サービス不能 2014年9月26日
CVE-2014-7187 境界条件の判定 (off-by-one) による脆弱性 サービス不能 2014年9月26日
CVE-2014-6277 信頼できないポインタの参照 任意のコード実行 2014年9月27日
CVE-2014-6278 環境変数の処理に関する脆弱性の修正漏れ 任意のコード実行 2014年9月27日

対策

(1) GNU bash のバージョンアップあるいは、対策版の適用

特に、Web サーバ上で稼働する GNU bash を最新の状態に保ってください。

(2) (回避策)代替シェルの使用

SSH の場合には、ログインシェルとして GNU bash (/bin/bash) 以外を設定することで、脅威を緩和できます。

(3) (推奨)IDS/IPS、ネットワークパケット監視の導入/強化

検知などの対処が必要な場合には、IDS/IPSやネットワークパケット監視の導入/強化を推奨します。

チェックツール

Shellshockの無料チェックツールが提供されていますので、対策の際に活用ください。


ベンダ情報

2014年10月07日

2014年10月2日

2014年10月01日

2014年09月30日

2014年09月29日

2014年09月27日

2014年09月26日

Linux ディストリビュータから脆弱性 (CVE-2014-7169) の対策版がリリースされました。

2014年09月25日

脆弱性 (CVE-2014-6271) に修正漏れがあることが確認されました。修正漏れに対して脆弱性識別子 CVE-2014-7169 が割り当てられました。

2014年09月24日

GNU bash (Bourne-Again Shell) の環境変数の処理に脆弱性 (CVE-2014-6271) が存在することが報告され、Linux ディストリビュータから対策版がリリースされました。


観測日記

bash の脆弱性を標的としたアクセスの観測 (2014年10月07日)

警察庁の定点観測システムにおいて、80/TCP、8080/TCP、10000/TCP へのアクセスを観測したと報告しています。 このうち、10000/TCP は、NAS (Network Attached Storage) の管理ソフトウェアを介した攻撃の試行であろうと報告しています。 10000/TCP は、管理ソフトウェア Webmin (http://www.webmin.com/http://jp.webmin.com/) のデフォルトのポート番号です。


図20141007a. Bash の脆弱性を標的としたアクセスの検知件数 (09月25日00:00~10月05日23:59)


図20141007b. 80/TCP、8080/TCP、10000/TCP へのアクセスの検知件数 (09月06日~10月05日)
出典:警察庁

被害に関する報告 (2014年10月06日)

[ 関連記事 ]

Windows シェルに類似の脆弱性の存在? (2014年10月06日)

Windows シェルに類似の脆弱性の存在について報告されました。 ただし、元の環境変数が引渡されない、リモートからは悪用できないなど、shellshock 問題とは異なるという見解が示されています。

[ Windows シェルにおける脆弱性存在の指摘 ]

[ 関連記事 ]

KELF_BASHLITE.A 続報 (2014年10月05日)

shellshock 問題を悪用する侵害活動に関する続報です。

攻撃の観測 (2014年10月04日)

Uesr-Agent、Referer に記録されていた shellshock 問題へのアクセスログについて報告しています。

bash の脆弱性を標的とする総アクセス件数は? (2014年10月02日)

Incapsula のブログでは、bash の脆弱性を標的としたアクセスに関して興味深い試算をしています。
この報告によれば、
+Incapsula でサンプリングした Web サイト数は 10 万サイトである。
+bash の脆弱性を標的としたアクセスは、1時間あたり 1,860 件であった。
+インターネット上の Web サイトは 約 10 億サイトある。
   (Netcraftの報告によれば、2014年9月時点で 1,022,954,603 サイト)

以上のことから、
1,000,000,000 (10億サイト) ÷ 100,000 (10万サイト) × 1,860 (件/時) = 18,600,000 (約2千万件/時)
特に、アクセス件数の多かった 9月27日~9月29日について総件数を試算すると、
18,600,000 (約2千万件/時) × 72 時間 = 1,339,200,000 (13.4 億件)

総アクセス件数 13.4 億件は、ともかく、1時間あたりのアクセス件数は、比較指標の一つとなります。


図20141002. Bash の脆弱性を標的としたアクセスの検知件数 (09月26日~10月01日)
出典:Incapsula

NAS (Network Attached Storage) を対象とする活動 (2014年10月01日)

FireEye の報告によれば、9月26日頃から、QNAP (http://www.qnap.com/) のNAS (Network Attached Storage) 管理画面が提供されている、8080/TCP へのアクセスを観測しているとしています。

ELF_BASHLITE.A (2014年09月26日)

トレンドマイクロの報告によれば、マルウェアは、不正リモートユーザによって作成されるコマンドの実行により、分散型サービス不能(DDoS)攻撃やログイン認証情報の収集などを試みるとしています。

DoS 攻撃等を行う不正なプログラムをサーバに蔵置を観測 (2014年09月26日)

攻撃の中でも、特に注目すべき点として、DoS 攻撃等を行う不正なプログラムをサーバ上に蔵置することを目的とした攻撃を確認したと報告しています。


図20140926. 不正なプログラムをサーバー上に設置することを目的とした "ShellShock" 攻撃の検知数の推移(09月25日~09月26日)
出典:IBM Tokyo SOC

bash の脆弱性を標的としたアクセスの観測 (2014年09月25日)

警察庁の定点観測システムにおいて、25日午前5時以降に、脆弱性の有無を確認するアクセスを観測したと報告しています。


図20140925. Bash の脆弱性を標的としたアクセスの検知件数 (09月24日00:00~09月25日16:00)
出典:警察庁

GNU bash の脆弱性 (CVE-2014-6271) 公開 (2014年09月24日)

GNU bash (Bourne-Again Shell) の環境変数の処理に脆弱性 (CVE-2014-6271) が存在することが報告され、Linux ディストリビュータから対策版がリリースされました。


更新履歴

  • 2014-10-09
    • ・追記:チェックツール
    • ・追記:観測日記 (10月01日~10月07日)
    • ・追記:ベンダ情報 (~10月07日)
  • 2014-10-04
    • ・追記:ベンダ情報 (~10月02日)
  • 2014-10-01
    • ・追記:ベンダ情報 (~09月30日)
    • ・追記:報告されている GNU bash の脆弱性の整理
  • 2014-09-28
    • ・追記:概要
  • 2014-09-27
    • ・新規
Valid XHTML 1.0 Transitional 発行日:2014-09-27T16:12+09:00
更新日:2014-10-09T19:38+09:00