2014年09月24日、 GNU bash の脆弱性 (CVE-2014-6271 / CVE-2014-7169) ~shellshock 問題~ について報告されました。 インシデント情報活用フレームワーク検討 WGでは、インシデント対応検討 WG (旧:インシデント対応技術調査 WG)、日本シーサート協議会に加盟しているチームに協力を得て、インシデント発生を事前に予防する措置として、「GNU bash の脆弱性 ~ shellshock 問題~」に関する公開情報を調査し、本レポートにまとめました。
- 2014-09-27
- ・新規
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 においてコマンド実行の制限を迂回されてしまった場合の例
脆弱性識別子 | 概要 | 想定される影響 | 公表日 |
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の無料チェックツールが提供されていますので、対策の際に活用ください。
Linux ディストリビュータから脆弱性 (CVE-2014-7169) の対策版がリリースされました。
脆弱性 (CVE-2014-6271) に修正漏れがあることが確認されました。修正漏れに対して脆弱性識別子 CVE-2014-7169 が割り当てられました。
GNU bash (Bourne-Again Shell) の環境変数の処理に脆弱性 (CVE-2014-6271) が存在することが報告され、Linux ディストリビュータから対策版がリリースされました。
警察庁の定点観測システムにおいて、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 日)
出典:警察庁
[ 関連記事 ]
Windows シェルに類似の脆弱性の存在について報告されました。 ただし、元の環境変数が引渡されない、リモートからは悪用できないなど、shellshock 問題とは異なるという見解が示されています。
[ Windows シェルにおける脆弱性存在の指摘 ]
[ 関連記事 ]
shellshock 問題を悪用する侵害活動に関する続報です。
Uesr-Agent、Referer に記録されていた shellshock 問題へのアクセスログについて報告しています。
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
FireEye の報告によれば、9月26日頃から、QNAP (http://www.qnap.com/) のNAS (Network Attached Storage) 管理画面が提供されている、8080/TCP へのアクセスを観測しているとしています。
トレンドマイクロの報告によれば、マルウェアは、不正リモートユーザによって作成されるコマンドの実行により、分散型サービス不能(DDoS)攻撃やログイン認証情報の収集などを試みるとしています。
攻撃の中でも、特に注目すべき点として、DoS 攻撃等を行う不正なプログラムをサーバ上に蔵置することを目的とした攻撃を確認したと報告しています。
図20140926. 不正なプログラムをサーバー上に設置することを目的とした "ShellShock" 攻撃の検知数の推移(09月25日~09月26日)
出典:IBM Tokyo SOC
警察庁の定点観測システムにおいて、25日午前5時以降に、脆弱性の有無を確認するアクセスを観測したと報告しています。
図 20140925. Bash の脆弱性を標的としたアクセスの検知件数 (09 月 24 日 00:00 ~ 09 月 25 日 16:00)
出典:警察庁
GNU bash (Bourne-Again Shell) の環境変数の処理に脆弱性 (CVE-2014-6271) が存在することが報告され、Linux ディストリビュータから対策版がリリースされました。
![]() |
発行日:2014-09-27T16:12+09:00 更新日:2014-10-09T19:38+09:00 |