shellshock テクニカルレポート³にlinuxのネットワーク・テレコミュニ...
TRANSCRIPT
ShellshockテクニカルレポートTrend Micro Threat Research Lab
はじめに
2014 年 9 月 24 日、Stephane Chazelas
が bash のファンクション定義に存在す
るコードの処理を適切に行わない脆弱性
(CVE-2014-6271) を 発 見 し ま し た 1
。 攻
撃 者 は、“Shellshock” と 名 付 け ら れ た こ
の脆弱性を利用して環境の制限を回避で
き ま す。Secure Shell(SSH)、Common
Gateway Interface(GCI) ス ク リ プ ト と
いった複数のプログラムは、バックグラ
ウンドで bash の実行を可能にします。こ
れにより攻撃者はこの脆弱性を遠隔から
攻撃できるため、Shellshock は深刻な脅
威となります。2014 年 4 月に発見された
脆弱性 “Heartbleed”(CVE-2014-0160)以
上に深刻になる恐れがあるとするリサー
チャーもいます2
。
1 http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-62712 http://blog.trendmicro.co.jp/archives/8929
テストを実施した結果、bash が実行して
いるからといってすべてのシステムが遠
隔で攻撃できるわけではないことがわか
りました。bash を攻撃するには、ネット
ワークを経由して bash へのアクセスを可
能にするアプリケーションがシステム上
で稼働している必要があります。
このレポートは、Shellshock の技術的な
詳細について解説します。
2 2
TREND MICRO | テクニカルレポート
脆弱性の詳細
この数日で Shellshock に関するより詳し
い情報が明らかになり、完全に修正する
ことが可能となるでしょう。前述のとお
り、CVE-2014-6271 あ る い は Shellshock
と呼ばれるこの脆弱性は、イギリスのロ
ボット工学企業 SeeByte Ltd で Unix なら
びに Linux のネットワーク・テレコミュニ
ケーション管理者で IT マネージャを務め
る Stephane Chazelas 氏によって発見され
ました。 3
概念実証(Proof of Concept)システム上で bash が脆弱かどうかを確認
するには、以下のコマンドを実行して確
認することができます。
$ env x=’() { :;}; echo vulnerable’ bash -c “echo test”
脆弱な bash を実行しているシステムで
このコマンドを実行すると、“vulnerable”
というアウトプットを出します。この問
題を修正するためにリリースされたパッ
チは、bash ファンクションの後に続くど
んなコードも実行されないようにしてい
ます。
3 http://www.seebyte.com/about-seebyte/
脆弱性を利用する方法我々は、概念実証(PoC)コードを使って
この脆弱性をどのように利用することが
できるかを調査しました。
$ env x=’() { :;}; echo vulnerable’ bash -c “echo test”
上記コードは、環境変数を宣言し、その
後 “test” と表示するものです。特別に細工
された環境変数の値によって、bash はこ
のコードを以下のようなファンクション
定義として解釈します。
x() { :;};echo vulnerable
システムが “ 脆弱である ” となると、攻撃
者はこのファンクション定義の後に悪意
あるコマンドを実行することが可能です。
3 3
TREND MICRO | テクニカルレポート
影響
bash は、多くのシステムやソフトウェ
ア で 広 く 使 わ れ て い る Unix シ ェ ル で、
Shellshock は GNU Bash バ ー ジ ョ ン 1.14
~ 4.3 に影響があります。
• Bash 4.3 Patch 25 より前のバージョン
• Bash 4.2 Patch 48 より前のバージョン
• Bash 4.1 Patch 12 より前のバージョン
• Bash 4.0 Patch 39 より前のバージョン
• Bash 3.2 Patch 52 より前のバージョン
• Bash 3.1 Patch 18 より前のバージョン
• Bash 3.0 Patch 17 より前のバージョン
• Bash 2.0.5 とそれ以前のバージョン
• Bash 1.14.7 とそれ以前のバージョン
ルータ、IP カメラ、ゲートウェイ(Citrix
NetScaler、F5 BIGIP、Cisco 製 品 な ど )、
Web CGI プログラムといった bash を使
う す べ て の ア プ リ ケ ー シ ョ ン、 ネ ッ ト
ワーク機器が脆弱です。攻撃者は、脆弱
な Dynamic Host Configuration Protocol
(DHCP)サーバにクライアントシステム
上で任意のコードを実行させることも可
能です。
以下の表は、広く使われている OS とその
標準設定のシェルを示しています。Bash
が標準設定のシェルになっている OS は、
すべて脆弱になります。
OS 標準シェル
Mac OS X
RHEL
CentOS
Fedora
Debian
Ubuntu
FreeBSD
Android
iOSOnly Jailbreak version
組み込み機器
bash
bash
bash
bash
sh (lenny) dash (Squeeze)
dash
tcsh
比較的新しいバージョン: ashAndroid 3.0 は mksh
bash
多くが busybox(ash)を使用
4 4
TREND MICRO | テクニカルレポート
攻撃シナリオ
Web サーバへの攻撃Web サーバへの攻撃が最も深刻なものに
なります。なぜなら、bash スクリプトが
cgi-bin を通じて実行されるからです。
このシナリオの場合、CGI は Web サーバ
に HTTP リクエストヘッダを変換し、クラ
イアントからのリクエストヘッダを環境
変数に変換させる必要があります。これ
は、Apache サ ー バ の mod-cgi あ る い は
mod-cgid モジュールによって実行されま
す。攻撃者が cgi-bin 経由で bash スクリ
プトを呼び込む場合、Web サーバのアク
セス権限を使って httpd としてコードを
実行することができます。
我々は複数のプログラミング言語を使っ
て Apache mod-cgi モ ジ ュ ー ル を テ ス
トしました。結果、Perl、PHP、Python、
Ruby で記述されている CGI プログラムが
脆弱であることが明らかになりました。
Perl#!/usr/bin/env perlp r i n t “ C o n t e n t t y p e : t e x t / p l a i n ; charset=iso 8859 1\n\n”;$result = system(“test >> /dev/null;”);
PHP#!/usr/bin/env php<?phpprint “Content Type: text/html\n\n”;print “Hello World!\n\n”;var_dump(exec(‘date’));?>
Python#!/usr/bin/env pythonprint “Content Type: text/html”printprint “””<html><body><h2>Hello World!</h2></body></html>“””import osos.system(‘date’)
5 5
TREND MICRO | テクニカルレポート
Ruby#!/usr/bin/env rubyputs “Content type: text/html\n\n”p u t s “ < ? x m l v e r s i o n = \ ” 1 . 0 \ ” encoding=\”UTF 8\”?>”puts “<!DOCTYPE html>”puts “<html>”puts “<head>”puts “<title>Ruby CGI test</title>”puts “</head>”puts “<body>”puts “<p>Hello, world!</p>”puts “</body>”puts “</html>”`date`
トレンドマイクロの対策ト レ ン ド マ イ ク ロ の サ ー バ 向 け 総 合 セ
キ ュ リ テ ィ 製 品「Trend Micro Deep
Security(トレンドマイクロ ディープセ
キュリティ)」の仮想パッチは、bash に存
在する脆弱性を利用するエクスプロイト
からサーバを保護します。また、bash の
エクスプロイト攻撃に関連する不正プロ
グラムおよび、改ざんされたサーバから
発生する C&C 通信を検出します。
DHCP サーバの悪用脆弱な DHCP サーバを利用すると、攻撃
者はローカルネットワーク環境に接続す
るクライアントに任意のコマンドを送り
つけることが可能です。攻撃者は、特別
に細工されたコマンドで悪意ある DHCP
サーバを設定し、様々な悪意あるコード
を実行させることが可能になります。
() { :; }; /usr/bin/cat /etc/shadow > /tmp/shadow
以下に示すのは、悪意ある DHCP サーバ
の 設 定 の 一 例 で、 追 加 オ プ シ ョ ン
(Additional Option)114 にある悪意ある
コマンドで設定されています。
6 6
TREND MICRO | テクニカルレポート
この悪意あるサーバの IP アドレスにア
クセスしたユーザは、システム上でこの
悪意あるコマンドを実行することになり
ます。
• 脆弱な bash バージョンを実行する
CentOS 7.0 DHCP クライアント
• 脆弱な bash バージョンを実行する
Ubuntu 10.04.1 LTS DHCP
クライアント
• 脆弱な bash バージョンを実行する
Ubuntu 14.04.1 LTS
DHCP クライアント
• 脆弱な bash バージョンを実行する
Fedora 20 DHCP クライアント
Android や iOS を稼働しているモバイル機
器は、bash が標準で搭載されていないた
め脆弱ではありません。Mac OS X の場合、
このシナリオでは DHCP プロセスで IP ア
ドレスを要求する際に bash を使用しない
ため脆弱ではありません。
CentOS
Fedora
Ubuntu
Ubuntu
Android
Apple iOS
Mac OS X
7.0
20
10.04.1 LTS
14.04.1 LTS
4.4.4
7.0.4
10.9.5
脆弱
脆弱
脆弱
脆弱
影響なし
影響なし
影響なし
OS バージョン 状況
7 7
TREND MICRO | テクニカルレポート
トレンドマイクロの対策ウイルスバスター コーポレートエディ
ションは、「Web レピュテーション」技
術 に よ っ て、 関 連 す る 不 正 な URL へ の
アクセスをブロックします。(Microsoft™、
Windows® のみ )
「Trend Micro Deep Discovery」 シリーズで
は、Windows、CentOS、Ubuntu お よ び
Fedora 上で不正な IP アドレスと通信する
エ ン ド ポ イ ン ト を 検 知 す る こ と が 可 能
です。
GIT、Subversion サーバへの攻撃GIT や Subversion といったサーバへの攻
撃により、攻撃者は接続しているシステ
ムやサーバへのアクセスは可能になりま
すが、制限されたシェル環境により任意
のコマンドを実行することはできません。
し か し、CVE-2014-6271 を 利 用 す る と、
この制限を回避してシェルを利用するこ
とができます(OpenSSH ユーザの場合、
すでにシェルアクセスを持っているため
影響を受けません)。
GIT ユーザのシェルが bash に標準設定さ
れている脆弱なサーバは、遠隔からのコー
ド実行に脆弱です。SSH 鍵がアップロー
ドされているサーバの場合、攻撃者が手
にすることができるため特に危険です。
bash を標準のシェルとして使っている
GIT サーバだけが脆弱になります。dash
や Debian といった bash を標準のシェル
として使っていないサーバは脆弱ではあ
りません。
我々は、以下の Shellshock の概念実証コー
ドを使って脆弱な GIT サーバのパスワー
ドの入手を試みました。ssh g i t@gi tserver ‘ ( ) { : ; } ; echo vulnerable’
トレンドマイクロの対策サーバ向けセキュリティソリューション
「Trend Micro Deep Security」は、不正侵
入防止システム(IPS)や仮想パッチの機
能を備えており、bash に存在する脆弱性
への攻撃の検出が可能です。
8 8
TREND MICRO | テクニカルレポート
その他攻撃シナリオこのレポートは、限られた攻撃シナリオ
についてしか言及していませんが、いく
つかの可能性が想定されます。一つ確か
なことは、この脆弱性はワームとして拡
散することが可能なことです。実際、す
でに Shellshock を拡散するワームを確認
しています。
トレンドマイクロの対策トレンドマイクロの各製品は、ファイル
ベースでスキャンすることにより脆弱性
「Shellshock」に関連する不正プログラム
の検出が可能です。
「Trend Micro Deep Security」、「ウイルス
バスター コーポレートエディション」お
よ び「Trend Micro Deep Discovery」 は、
脆弱性「Shellshock」関連する C&C サー
バとの通信を検出します。
「Trend Micro Deep Security」で対策可能
な脆弱性の例は以下のとおりです。
• C V E - 2 0 1 4 - 7 1 6 9 : D S R U 1 4 - 0 2 8 :
1006256
• G N U B a s h R e m o t e C o d e
Execution Vulnerability7
• C V E - 2 0 1 4 - 6 2 7 1 : D S R U 1 4 - 0 2 8 :
1006256
• G N U B a s h R e m o t e C o d e
Execution Vulnerability
9 9
TREND MICRO | テクニカルレポート
ソリューションと推奨事項
企業は、bash をバックグラウンドで実行
可能な Linux ベースのサーバ、機器、サー
ドパーティアプリケーションをテストす
る 必 要 が あ り ま す。 特 に、 攻 撃 者 が 遠
隔 か ら Shellshock を 攻 撃 す る こ と が 可
能な Web ベースのアプリケーションや
サービスをテストする必要があります。
Xymon といった人気のある Linux ベース
のサーバ・ネットワーク監視システムも
Shellshock の影響を受けます。bash ユー
ザは、以下の表にあるように最新バージョ
ンに更新することを推奨します。
OS 影響のないバージョン
RHEL
Fedora
CentOS
AWS
Ubuntu
SuSE
Debian
RHSA-2014:1306-1BASH-3.2-33.el5_11.4 (RHEL5)BASH-4.1.2-15.el6_5.2 (RHEL6)BASH-4.2.45-5.el7_0.4 (RHEL7)
BASH-4.2.48-2.fc19 (Fedora 19)BASH-4.2.48-2.fc20 (Fedora 20)BASH-4.3.25-2.fc21 (Fedora 21)
BASH-3.2-33.el5_10.4 (CentOS 5)BASH-4.1.2-15.el6_5.2 (CentOS 6)BASH-4.2.45-5.el7_0.4 (CentOS 7)
CVE-2014-6271 AdvisoryALAS-2014-418
USN-2362-1 (CVE-2014-6271)USN-2363-1 (CVE-2014-7169)4.1-2ubuntu3.2 (Ubuntu 10.04 LTS)4.2-2ubuntu2.3 (Ubuntu 12.04 LTS)4.3-7ubuntu1.2 (Ubuntu 14.04 LTS)
CVE-2014-6271/Bug 896776CVE-2014-7169/Bug 8983463.2-147.20.1 (SuSE11)3.1-24.32.1 (SuSE10)
DSA-3032-1 (CVE-2014-6271)DSA-3035-1 (CVE-2014-7169)4.1-3+deb6u2 (squeeze (lts))4.2+dfsg-0.1+deb7u3 (wheezy(security))4.3-9.2 (sid)
10 10
TREND MICRO | テクニカルレポート
この bash の脆弱性に対してパッチが公開
されたものの、完全ではありません。こ
の公開された修正を適用しても、特別に
細工された環境変数を使って、脆弱なバー
ジョンの bash に特定の文字列を挿入で
きるといわれています。攻撃者は、新し
い手法を作り出し、環境の制限を回避し
てシェルコマンドを実行することができ
ます。以下の CVE で言及されている制限
回避方法は機能することが確認されてい
ます。
• CVE-2014-71694 4
• CVE-2014-71865 5
• CVE-2014-71876 6
• https://rhn.redhat.com/errata/RHSA20141306.html
CVE-2014-6271 へのパッチを適用済みで
あっても、企業は最新版が入手可能にな
るのを常に確認する必要があります。加
えて、以下のような回避策を適用してネッ
トワークを守ることを推奨します。
4 http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-71695 https://security-tracker.debian.org/tracker/CVE-2014-71866 https://security-tracker.debian.org/tracker/CVE-2014-7187
• 標準のシェルを dash や tsh といった
bash の代替になるものに変更してく
ださい(ただし、異なるシェルは異
なる構文を使うため、既存のスクリ
プトが機能しない可能性もあるため
注意して行う必要があります。)
• CGI プログラムを保護するために、
以下のような侵入検知システム(IDS)
ルール、Web アプリケーションファ
イアウォール(WAF)ルールを適用
して、エクスプロイトをブロックし
てください。
• mod_security
• Request Header values:SecRule REQUEST_HEADERS “^\(\) {“ “phase:1,deny,id:1000000,t:urlDecode,status:400,log,msg:’CVE-2014-6271 - BASH Attack’”
• SERVER_PROTOCOL values:SecRule REQUEST_L INE “ \ ( \ ) { “ “phase:1,deny,id:1 0 0 0 0 0 1 , s t a t u s : 4 0 0 , l o g , m s g : ’ CVE-2014-6271 - BASH Attack’”
Gentoo
Scientific Linux
Bug 523592BASH-3.1_p18-r1BASH-3.2_p52-r1BASH-4.0_p39-r1BASH-4.1_p12-r1BASH-4.2_p48-r11
SLSA-2014:1293-1BASH-3.2-33.el5.1(SL5)BASH-4.1.2-15.el6_5.1(SL6)
OS 影響のないバージョン
11 11
TREND MICRO | テクニカルレポート
• GET/POST names:S e c R u l e A R G S _ N A M E S “ ^ \ ( \ ) { “ “phase:2,deny,id:1000002,t:urlDecode,t:urlDecodeUni,status:400,log,msg:’CVE-20 14-6271 - BASH Attack’”
• GET/POST values:S e c R u l e A R G S “ ^ \ ( \ ) { “ “phase:2,deny,id:1000003,t:urlDecode,t:urlDecodeUni,status:400,log,msg:’CVE-2014-6271 - BASH Attack’”
• File names for uploads:SecRule F ILES_NAMES “^ \ ( \ ) { “ “phase:2,deny,id:1000004,t:urlDecode,t:urlDecodeUni,status:400,log,msg:’CVE-2014-6271 - BASH Attack’”
• IPTables# iptables A INPUT m string algo bm hex string ‘|28 29 20 7B|’ j DROP
# ip6tables A INPUT m string algo bm hex string ‘|28 29 20 7B|’ j DROP
• Suricataalert http $EXTERNAL_NET any > $HOME_NET any (msg:”Possible CVE 2014 6271 BASH Vulnerability R e q u e s t e d ( h e a d e r ) ” ; flow:established,to_server; c o n t e n t : ” ( ) { “ ; h t t p _ h e a d e r ; threshold:type limit, track b y _ s r c , c o u n t 1 , s e c o n d s 1 2 0 ; sid:2014092401;)
• Snortalert tcp $EXTERNAL_NET any > $HOME_NET $HTTP_PORTS (msg:”Possible CVE-2014 6271 BASH Vulnerability Requested (header) “; flow:established,to_server; content:”() {“; http_header; threshold:type limit, track by_src, count 1, seconds 120; sid:2014092401;)
• ref:
• m o d _ s e c u r i t y , I P T a b l e s
(https://access.redhat.com/
articles/1212303)
• Snort, Suricata(http://www.
volexity.com/blog/?p=19)
• ソース IP アドレスでアクセスを制限
してください。CGI プログラムの利
用が必要でパッチ適用が現実的では
ない場合には、ソース IP アドレスで
アクセスを制限することができます。
信頼できる IP レンジやホストにのみ
サービスへのアクセス権を与えるよ
うにしてください。
Trend Micro Incorporated, a global leader in security software and solutions, strives to make the world safe for exchanging digital information. For more information, visit www.trendmicro.com.
©2014 Trend Micro, Incorporated. All rights reserved. Trend Micro and the Trend Micro t-ball logo are trademarks or registered trademarks of Trend Micro, Incorporated. All other product or company names may be trademarks or registered trademarks of their owners.
TREND MICRO™
本書に関する著作権は、トレンドマイクロ株式会社へ独占的に帰属します。
トレンドマイクロ株式会社が書面により事前に承諾している場合を除き、形態および手段を問わず本書またはその一部を複製することは禁じられています。本書の作成にあたっては細心の注意を払っていますが、本書の記述に誤りや欠落があってもトレンドマイクロ株式会社はいかなる責任も負わないものとします。本書およびその記述内容は予告なしに変更される場合があります。
本書に記載されている各社の社名、製品名、およびサービス名は、各社の商標または登録商標です。
〒151-0053東京都渋谷区代々木2-1-1 新宿マインズタワー大代表 TEL:03-5334-3600 FAX:03-5334-4008http://www.trendmicro.co.jp
TRENDLABSSM
フィリピン・米国に本部を置き、日本・台湾・ドイツ・アイルランド・中国・フランス・イギリス・ブラジルの10カ国12ヵ所の各国拠点と連携してソリューションを提供しています。
数カ月におよぶ厳しいトレーニングを経て最終合格率約1%の難関を突破した、選びぬかれた1,000名以上の専門スタッフが、脅威の解析やソリューションへの反映など、24時間365日体制でインターネットの脅威動向を常時監視・分析しています。
世界中から収集した脅威情報を、各種レピュテーションデータベースや不正プログラム、迷惑メールなどの各種パターンファイルなど、グローバル共通のソリューションに随時反映しています。
サポートセンターの役割も兼ねる研究所として、お客様に満足いただけるサポート体制を整備し、より多くの脅威に迅速に対応しています。