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-6271 2 http://blog.trendmicro.co.jp/archives/8929 テストを実施した結果、bash が実行して いるからといってすべてのシステムが遠 隔で攻撃できるわけではないことがわか りました。bash を攻撃するには、ネット ワークを経由して bash へのアクセスを可 能にするアプリケーションがシステム上 で稼働している必要があります。 このレポートは、Shellshock の技術的な 詳細について解説します。脆弱性の詳細
この数日で 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 ファンクションの後に続くど んなコードも実行されないようにしてい ます。
脆弱性を利用する方法
我々は、概念実証(PoC)コードを使って この脆弱性をどのように利用することが できるかを調査しました。$ env x=’() { :;}; echo vulnerable’ bash -c “echo test” 上記コードは、環境変数を宣言し、その 後 “test” と表示するものです。特別に細工 された環境変数の値によって、bash はこ のコードを以下のようなファンクション 定義として解釈します。 x() { :; }; echo vulnerable システムが “ 脆弱である ” となると、攻撃 者はこのファンクション定義の後に悪意 あるコマンドを実行することが可能です。
影響
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 iOS
Only Jailbreak version 組み込み機器 bash bash bash bash sh (lenny) dash (Squeeze) dash tcsh 比較的新しいバージョン: ash Android 3.0 は mksh bash 多くが busybox(ash)を使用
攻撃シナリオ
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 perl p r i n t “ C o n t e n t ty 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 <?php
print “Content Type: text/html\n\n”; print “Hello World!\n\n”;
var_dump(exec(‘date’)); ?>
Python
#!/usr/bin/env python
print “Content Type: text/html” print print “”” <html> <body> <h2>Hello World!</h2> </body> </html> “”” import os os.system(‘date’)
Ruby
#!/usr/bin/env ruby
puts “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 にある悪意ある コマンドで設定されています。この悪意あるサーバの 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 バージョン 状況
トレンドマイクロの対策
ウイルスバスター コーポレートエディ ションは、「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 git@gitserver ‘() { :;}; echo vulnerable’トレンドマイクロの対策
サーバ向けセキュリティソリューション 「Trend Micro Deep Security」は、不正侵 入防止システム(IPS)や仮想パッチの機 能を備えており、bash に存在する脆弱性 への攻撃の検出が可能です。その他攻撃シナリオ
このレポートは、限られた攻撃シナリオ についてしか言及していませんが、いく つかの可能性が想定されます。一つ確か なことは、この脆弱性はワームとして拡 散することが可能なことです。実際、す でに 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
• GNU Bash Remote Code 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
ソリューションと推奨事項
企業は、bash をバックグラウンドで実行 可能な Linux ベースのサーバ、機器、サー ドパーティアプリケーションをテストす る 必 要 が あ り ま す。 特 に、 攻 撃 者 が 遠 隔 か ら Shellshock を 攻 撃 す る こ と が 可 能な Web ベースのアプリケーションや サービスをテストする必要があります。 Xymon といった人気のある Linux ベース のサーバ・ネットワーク監視システムも Shellshock の影響を受けます。bash ユー ザは、以下の表にあるように最新バージョ ンに更新することを推奨します。 OS 影響のないバージョン RHEL Fedora CentOS AWS Ubuntu SuSE Debian RHSA-2014:1306-1 BASH-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 Advisory ALAS-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 896776 CVE-2014-7169/Bug 898346 3.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))この bash の脆弱性に対してパッチが公開 されたものの、完全ではありません。こ の公開された修正を適用しても、特別に 細工された環境変数を使って、脆弱なバー ジョンの bash に特定の文字列を挿入で きるといわれています。攻撃者は、新し い手法を作り出し、環境の制限を回避し てシェルコマンドを実行することができ ます。以下の CVE で言及されている制限 回避方法は機能することが確認されてい ます。 • CVE-2014-716944 • CVE-2014-718655 • CVE-2014-718766 • https://rhn.redhat.com/errata/RHSA20141306.html CVE-2014-6271 へのパッチを適用済みで あっても、企業は最新版が入手可能にな るのを常に確認する必要があります。加 えて、以下のような回避策を適用してネッ トワークを守ることを推奨します。 • 標準のシェルを 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: Gentoo Scientific Linux Bug 523592 BASH-3.1_p18-r1 BASH-3.2_p52-r1 BASH-4.0_p39-r1 BASH-4.1_p12-r1 BASH-4.2_p48-r11 SLSA-2014:1293-1 BASH-3.2-33.el5.1(SL5) BASH-4.1.2-15.el6_5.1(SL6) OS 影響のないバージョン
• 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,sta tus: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,lo g,msg:’CVE-2014-6271 - BASH Attack’”
• File names for uploads:
SecRule FILES_NAMES “^\(\) {“ “phase:2,deny,id:
1000004,t:urlDecode,t:urlDecodeUni,sta tus: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
• Suricata
alert 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;)
• Snort
alert 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 Ta b l e s (https://access.redhat.com/ articles/1212303) • Snort, Suricata(http://www. volexity.com/blog/?p=19) • ソース IP アドレスでアクセスを制限 してください。CGI プログラムの利 用が必要でパッチ適用が現実的では ない場合には、ソース IP アドレスで アクセスを制限することができます。 信頼できる IP レンジやホストにのみ サービスへのアクセス権を与えるよ うにしてください。
へ独占的に帰属します。 トレンドマイクロ株式会社が書面により事前に承諾 している場合を除き、形態および手段を問わず本書 またはその一部を複製することは禁じられていま す。本書の作成にあたっては細心の注意を払ってい ますが、本書の記述に誤りや欠落があってもトレン ドマイクロ株式会社はいかなる責任も負わないもの とします。本書およびその記述内容は予告なしに変 更される場合があります。 本書に記載されている各社の社名、製品名、および サービス名は、各社の商標または登録商標です。 〒151-0053 東京都渋谷区代々木2-1-1 新宿マインズタワー 大代表 TEL:03-5334-3600 FAX:03-5334-4008 http://www.trendmicro.co.jp イルランド・中国・フランス・イギリス・ブラジルの10 カ国12ヵ所の各国拠点と連携してソリューションを 提供しています。 数カ月におよぶ厳しいトレーニングを経て最終合格 率約1%の難関を突破した、選びぬかれた1,000名以 上の専門スタッフが、脅威の解析やソリューションへ の反映など、24時間365日体制でインターネットの脅 威動向を常時監視・分析しています。 世界中から収集した脅威情報を、各種レピュテーシ ョンデータベースや不正プログラム、迷惑メールな どの各種パターンファイルなど、グローバル共通の ソリューションに随時反映しています。 サポートセンターの役割も兼ねる研究所として、お 客様に満足いただけるサポート体制を整備し、より 多くの脅威に迅速に対応しています。