Apache Tomcatに含まれる脆弱性(CVE-2017-12617)に関する脆弱性検証レポート

2017/10/04 初版
2017/10/10 更新
2017/10/20 更新
NTTデータ先端技術株式会社
鈴木 涼太

2017年9月21日にJason Shepherd氏によって報告された、Apache Tomcatに含まれるリモートからの任意のファイルアップロードが行われる脆弱性(CVE-2017-12617)についての検証を実施し、脆弱性の悪用が可能であることを確認しました。

1. 本脆弱性の概要

「Apache Tomcat」とは、Apache Software Foundationによりオープンソース・ソフトウェアとして提供されている、Java Webアプリケーションを実行するためのソフトウェアです。
同氏は、当該ソフトウェアにおいて書き込み可能な設定を行っている状態で、不正なPUTリクエストを受付けた場合に、任意のファイルアップロードが行われる脆弱性(CVE-2017-12617)が存在することをRed Hat Bugzillaで報告しています。※1
本脆弱性はHTTPリクエストのPUTメソッドの入力値の検証が不十分であることに起因しています。
本脆弱性は、2017年9月16日にApache Software Foundationによって発表された脆弱性であるCVE-2017-12615に対する修正バージョンとして公開されたApache Tomcat 7.0.81に含まれており、CVE-2017-12615と同様の攻撃手法が可能となるものです。※2

本脆弱性に関連する脆弱性として、VirtualDirContextが有効時にJSPファイルのソースコードを閲覧できる脆弱性であるCVE-2017-12616が公表されています。

図1. 攻撃例

図1は、本脆弱性に対する攻撃の一例として、インターネットから内部ネットワークへ攻撃者が不正なPUTメソッドを含んだHTTPリクエストを送信することにより攻撃を試行する模式図を示しています。

2. 本脆弱性の影響を受ける環境

本脆弱性の影響を受ける可能性がある環境は以下の通りです。

  • Apache Tomcat 9.0.0.M1 から 9.0.0
  • Apache Tomcat 8.5.0 から 8.5.22
  • Apache Tomcat 8.0.0.RC1 から 8.0.46
  • Apache Tomcat 7.0.0 から 7.0.81

3. 本脆弱性を利用した攻撃の検証

攻撃コードとして、概念実証(PoC)コードにより本脆弱性に対する攻撃を試行し、脆弱性を悪用可能であることを検証しました。

3.1. 検証環境

表1. 検証に使用した環境
  疑似攻撃者 疑似被害者
OS KaliLinux 2017.01 64bit CentOS 7.0 64bit
アプリケーション PoC実行ペネトレーション用ソフトウェア Docker 1.12.6-32
tomcat:7.0-jre8(Docker Container)
Debian 9.1
Tomcat 7.0.81.0
Open-JDK8u141-b15-1

3.2. 攻撃手法

Tomcatの設定ファイルweb.xml上でinit-paramパラメーター配下にreadonlyパラメーターをfalseとして設定にしているサーバーに対して、任意のJavaコードを含んだjspファイルをPUTメソッドによって送信します。図2でweb.xmlの内容を示します。

図2. Tomcatの脆弱な設定例(web.xml)

図3. 攻撃コードの送信

図3は、標的となるサーバーに対して送信する攻撃コードの内容の一部となります。

具体的にはサーバー上で実行したいjavaコードを記述したjspファイルをあらかじめ作成しておき、図3に示されるHTTPリクエストを用いて、作成したファイルを攻撃対象サーバーへアップロードすることでファイル内に記述された任意のJavaコードを攻撃対象サーバー上で実行させることが可能となります。
本検証では、攻撃が成功した場合に”Exploit Success.”と記述されたHTMLページを表示させる攻撃を試行します。

3.3. 検証結果

図4に示す結果の通り、攻撃コードの実行により、宛先サーバー上で任意に指定したjspファイルの配置に成功しました。

図4. jspファイルの配置に成功した結果

4. 本脆弱性に対する対策

4.1. 現在推奨されている対策

2017年10月5日現在、Apache Software Foundationより本脆弱性が修正された以下バージョンが公開されており、当該バージョンへのアップデートが推奨されています。

  • Apache Tomcat 9.0.1
  • Apache Tomcat 8.5.23
  • Apache Tomcat 8.0.47
  • Apache Tomcat 7.0.82

回避策として、設定ファイルweb.xmlにおいて、init-paramパラメーター配下にreadonlyパラメーターをtrueとして設定し、PUTメソッドを使用したHTTPリクエストを受け付けない設定が推奨されています。※3

4.2. 不正アクセス監視機器による対策

4.2.1. 当社が確認している不正アクセス監視機器の対応状況

各製品ベンダーの本脆弱性への対応状況に関する情報、及び本検証による各製品での検知結果は以下の通りです。表2に公式シグネチャーの提供状況、表3に当社のカスタムシグネチャー提供状況、また、本検証によって得られた各製品のシグネチャー検知可否の結果を記載します。

表2. 製品ベンダーによるシグネチャー提供状況(2017年10月20日時点)
種別 製品ベンダー/
製品
製品ベンダー提供のシグネチャー 検知
結果
IDS/IPS IBM
QRader
Network Security
GX/XGS Series
X-Press Update(XPU):XPU3710.16175
・HTTP_Apache_Tomcat_PUT_Windows_Code_Exec
・HTTP_Apache_Tomcat_PUT_Code_Exec
-
McAfee
Network
Security Platform
NS/M Series
Signature Set:8.7.111.3
・HTTP: Apache Tomcat PUT JSP File Upload (CVE-2017-12615 and CVE-2017-12617)
WAF Imperva
SecureSphere
メーカーよりカスタムポリシーの作成手順が 公開されています。 -
NGFW Palo Alto
PA Series
Application and Threat Content:Version 737
・Apache Tomcat Remote Code Execution Via JSP Upload Vulnerability
-
Check Point
NGFW Series
IPS Software Blade:
・Apache Tomcat PUT Method Arbitrary File Upload Remote Code Execution (CVE-2017-12615)
-
表3. 当社によるカスタムシグネチャー提供状況(2017年10月5日時点)
種別 製品ベンダー/
製品
当社カスタムシグネチャーの提供状況 検知
結果
IDS/IPS IBM
QRader
Network Security
GX/XGS Series
当社作成のカスタムシグネチャーにより、攻撃パターンの検出が可能です。
McAfee
Network
Security Platform
NS/M Series
当社作成のカスタムシグネチャーにより、攻撃パターンの検出が可能です。
WAF Imperva
SecureSphere
- -
NGFW Palo Alto
PA Series
- -
Check Point
NGFW Series
- -

参考文献

機器別当社対応サービス

IDS/IPS

WAF

NGFW

更新履歴

2017/10/04 初版作成
2017/10/10
  • 「2. 本脆弱性の影響を受ける環境」に対象となるバージョンの追記
  • 「4. 本脆弱性に対する対策」に修正バージョンの情報、WAF対応状況の追記
  • その他文章の修正
2017/10/20
  • IBM/McAfeeのシグネチャ提供状況を更新

本件に関するお問い合わせ先

NTTデータ先端技術株式会社
お問い合わせフォーム

  • ※ 各規格名、会社名、団体名、製品名は、各社の商標または登録商標です。

Apache Tomcatに含まれる脆弱性(CVE-2017-12617)に関する脆弱性検証レポート