GNU Bashの環境変数処理の不備により任意のコードが実行される脆弱性(CVE-2014-6271,CVE-2014-7169)に関する検証レポート
【概要】
GNU Bash(以下、単にBash)にリモートより任意のコードが実行される脆弱性が発見されました。一連の脆弱性の愛称?は「Bashbug」または「Shellshock」のようです。
本脆弱性は、Bashの環境変数に関数を設定し同一の環境変数内に任意のコードを設定することで発生します。
攻撃者は、細工した環境変数を設定することにより、Bashを経由した環境で任意のコードが実行可能となります。
Bashを経由した環境での脆弱性の利用方法は、以下のような場合があります。
– ApacheなどWebサーバ上でCGIをBashから実行している場合にWebサーバの実行権限で任意のコードを実行
– DHCPサーバで環境変数に任意のコードを埋め込みDHCPクライアントに対してBashを経由して任意のコードを実行
– sshのForceCommand設定なでで使用可能なコマンドを制限している環境でログインユーザー権限で任意のコマンドを実行
このほかの例として、以下のURLでRedhat社の製品で影響を受ける環境の例が掲載されています。
Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271, CVE-2014-7169)
今回、この脆弱性(CVE-2014-6271,CVE-2014-7169)について検証を行いました。
【影響を受ける可能性があるシステム】
CVE-2014-7169
– 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 およびそれ以前
CVE-2014-6271
– 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 以前
なお、ディストリビュータごとに影響を受けるバージョンが異なります。詳細は各ディストリビュータの脆弱性情報を参照ください。また、LinuxなどのOSをベースとしたネットワーク機器を含めた専用機器においても関連する脆弱性情報が発表されています。使用されている各機器のセキュリティ情報を収集されることを推奨いたします。
すでに、CiscoやF5のような利用者が多いと考えられる機器について各ベンダーから情報が公開されています。
GNU Bash Environmental Variable Command Injection Vulnerability
SOL15629: GNU Bash vulnerabilities CVE-2014-6271 and CVE-2014-7169
【対策案】
CVE-2014-6271については以下のバージョンで修正されています。
– 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
CVE-2014-7169については、本レポート作成時点(2014年9月26日)において修正されておりません。各ディストリビュータによって独自のパッチを提供しています。詳細は@piyokangoさんのブログがまとめてくださっておりますので参照いただくことを推奨いたします。
回避策については、【概要】で紹介したRedhat社のページのように
– mod_securityによる回避
– iptablesによる回避
などの方法が考えられます。
【参考サイト】
CVE-2014-6271
CVE-2014-7169
JPCERT/CC Alert 2014-09-25 GNU bash の脆弱性に関する注意喚起
bash の脆弱性対策について(CVE-2014-6271 等)
bashの脆弱性(CVE-2014-6271) #ShellShock の関連リンクをまとめてみた
【検証ターゲットシステム】
– Cent0S 7 + Apache 2.4.61 + GNU bash, バージョン 4.2.45(1)-release-(x86_64-redhat-linux-gnu)
– Ubuntu Server 14.04.1 LTS
– Bash 4.3-7ubuntu1
– Apache 2.4.7-1ubuntu4.1
【検証概要】
脆弱性の存在するターゲットシステムに、攻撃者が実行したいコードを含めたHTTPリクエストを送ります。ターゲットシステム上ではコードが実行され、攻撃者に応答を返します。
これにより、リモートからターゲットPCの操作が可能となります。
【検証結果】
下図は実際にCGIを経由してコードを実行した画面です。黄色で囲まれた部分はUser-Agentに実行コードを埋め込んていることを示しています。赤色で囲まれた部分は実行結果を示しています。これにより、ターゲット上で任意のコードを実行することに成功しました。
【2014/09/28 oda 追記】
なお、上記のUbuntu上で実行しているテスト用のCGIは「#!/bin/bash」としてbashを明示的にbashを呼び出して実行しています。Ubuntu上のCGIで「#!/bin/sh」としてshを呼び出している場合は、通常dashへlinkされているため本脆弱性の影響を受けません。
【2014/09/28 ntsuji 追記】
以下のようにhttp経由で細工を施したブラウザでアクセスすることでWebサーバの権限を奪取することに成功しました。
これによりリモートから特定の権限で任意のコマンドが実行可能な状態になったと言えます。
また、細工したDHCPサーバを設置し、そのサーバにDHCPリクエストを行ってきたCentOSの制御を奪うことにも成功しました。奪取できる権限はDHCPリクエストを行った際の権限に依存します。
reported by oda, ntsuji