Apache Struts 2のincludeParamsによる入力値処理の不備により任意のJavaコードが実行される脆弱性 (CVE-2013-1966)に関する検証レポート

2013/05/28
NTTデータ先端技術株式会社
辻 伸弘
小松 徹也

【概要】

Apache Struts 2に、任意のJavaコードが実行される脆弱性が存在します。
この脆弱性は、includeParamsによる入力値処理時において、値をOGNL式(※)として評価するため、任意のJavaコードを実行可能です。

この脆弱性を悪用して、攻撃者はターゲットホスト上にて、Webサーバの動作権限で任意のJavaコードの実行が可能です。
今回、このApache Struts 2のincludeParamsによる入力値処理の不備により任意のJavaコードが実行される脆弱性(CVE-2013-1966)の再現性について検証を行いました。

※Object Graph Navigation Language
 Javaオブジェクトのプロパティへアクセス時に利用する式言語

Apache Struts 2のincludeParamsによる入力値処理の不備により任意のJavaコードが実行される脆弱性 (CVE-2013-1966)に関する検証レポート

【影響を受けるとされているシステム】

影響を受ける可能性が報告されているのは次の通りです。
  • Apache Struts 2.0.0から2.3.14.1

【対策案】

当該脆弱性が修正された最新版Apache Struts 2にアップデートしていただく事を推奨いたします。

本脆弱性は、Apache Struts 2.3.14.1にて修正されたとの情報がありました。しかしながら、攻撃手法の変更により、攻撃が可能であり修正が不十分であることが報告されています。
そのため、再度公開されたApache Struts 2.3.14.2を利用する必要があることに注意してください。

公開されたバージョン脆弱性(CVE-2013-1966)の修正状況
Apache Struts 2.3.14以前未修正
Apache Struts 2.3.14.1未修正
Apache Struts 2.3.14.2修正

Apache Struts Releases
http://struts.apache.org/downloads.html

【参考サイト】

CVE-2013-1966
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-1966

Apache Struts "ParameterInterceptor" Security Bypass Vulnerability
http://secunia.com/advisories/53495/

【検証イメージ】

【検証ターゲットシステム】

  • Debian 6.0.7 上のTomcat 7.0.40、Apache Struts 2.3.14およびApache Struts 2.3.14.1を利用したWebアプリケーション

【検証概要】

ターゲットシステムに、細工したHTTPリクエストを送信し、Strutsを利用したアプリケーションを介して、Webサーバの動作権限で任意のJavaコードを実行させます。
今回の検証に用いたコードは、ターゲットシステム上から特定のサーバより、プログラムのダウンロードを行なった上で、そのプログラムを用いて、特定サーバのポートへコネクションを確立させるように誘導し、システムの制御を奪取するものです。
これにより、リモートからターゲットシステムを操作可能となります。

* 誘導先のシステムは Windows XP です。

【検証結果】

下図の赤線で囲まれている部分の示すように、誘導先のコンピュータ(Windows XP)のコンソール上にターゲットシステム(Debian)のプロンプトが表示されています。
黄線で囲まれている部分の示すように、ターゲットシステムにおいて、コマンドを実行した結果が表示されています。
これにより、ターゲットシステムの制御の奪取に成功したと言えます。

PDF版のダウンロードはこちらから PDF版

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


 

Apache Struts 2のincludeParamsによる入力値処理の不備により任意のJavaコードが実行される脆弱性 (CVE-2013-1966)に関する検証レポート