Apache Struts 2 の Parameters インターセプタの実装に起因するClassLoader を操作可能な脆弱性(Scan Tech Report) | ScanNetSecurity
2026.01.10(土)

Apache Struts 2 の Parameters インターセプタの実装に起因するClassLoader を操作可能な脆弱性(Scan Tech Report)

Apache Struts 2 の Parameters インターセプタには、class パラメータの処理に起因して ClassLoader を不正に操作されてしまう脆弱性が存在します。

脆弱性と脅威 エクスプロイト
1.概要
Apache Struts 2 の Parameters インターセプタには、class パラメータの処理に起因して ClassLoader を不正に操作されてしまう脆弱性が存在します。
悪意あるリモートの第三者に利用された場合、Apache Struts 2 上で動作するWeb アプリケーションを一時的にサービス不能状態にされる、あるいはシステム上で不正な操作が実行される可能性があります。
外部に公開する Web アプリケーションで Apache Struts 2 を利用する環境では、深刻な影響を受ける可能性があるため、影響を受けるバージョンの Apache Struts 2 を利用するユーザは速やかに以下に記載する対策を実施することを推奨します。


2.深刻度(CVSS)
5.0
http://nvd.nist.gov/cvss.cfm?version=2&name=CVE-2014-0094&vector=%28AV:N/AC:L/AU:N/C:N/I:P/A:N%29


3.影響を受けるソフトウェア
Apache Struts 2.0.0 - 2.3.16


4.解説
Apache Struts は、Apache Software Foundation が提供する Web アプリケーションを構築するためのフレームワークであり、インターセプタと呼ばれる、
Action クラスの前後に処理を挟み込む機能が実装されています。その中の 1 つ、Parameters インターセプタ (ParametersInterceptor)※1 は、リクエストパラメータを制御することを目的としています。

Apache Struts 2 には、この Parameters インターセプタにおいて、class パラメータを適切にチェックせず、直接 getClass() メソッドへ渡してしまう不備があります。
このため、class.classLoader.* を含むリクエストを介して ClassLoader を不正に操作可能な脆弱性が存在します。

この脆弱性を利用することで、リモートの攻撃者は、Apache Struts 2 上で動作する Web アプリケーションを一時的にサービス不能状態する、あるいは Apache Struts 2 を実行するユーザの権限で任意の Java コードが可能となります。

なお、公開されている攻撃手法では、ClassLoader を介して Apache Tomcat のアクセスログの出力先※2、ファイル名およびフォーマットを変更します。
その後、Java コードを含むリクエストを送信し、アクセスログに Java コードを書き込み、アクセスログを参照することによって、送信した Java コードを実行するという手法になります。

※1 http://struts.apache.org/development/2.x/docs/parameters-interceptor.html
※2 出力先は公開ディレクトリ、ファイル名は JSP ファイルに変更します。


5.対策
以下の Web サイトより、Apache Struts 2.3.16.1 以降を入手しアップデートすることで、この脆弱性を解消※3 することが可能です。

Apache Struts 2.3.16.1:
http://struts.apache.org/download.cgi

あるいは、設定ファイル struts-default.xml の excludeparams に ^class\.を追加し、ClassLoader を操作するために必要な文字列 "class." から始まる文字列がリクエストに含まれていた場合に拒否する設定にすることで、この脆弱性を緩和することが可能です。

※3 Apache Struts 2.3.16.1 におけるこの脆弱性に対する修正が不完全である可能性が Full Disclosure※4 で示唆されています。
このことにより、次期バージョン Apache Struts 2.3.17 では、Struts の github で公開される修正コード※5 が実装される予定です。

※4 http://seclists.org/fulldisclosure/2014/Mar/50
※5 https://github.com/apache/struts/commit/aaf5a3010e3c11ae14e3d3c966a53ebab67146be


6.ソースコード
(Web非公開)

(執筆:株式会社ラック サイバー・グリッド研究所

※Web非公開該当コンテンツ閲覧をご希望の方はScan Tech Reportにご登録(有料)下さい。

Scan Tech Report
http://scan.netsecurity.ne.jp/archives/51916302.html

《株式会社ラック デジタルペンテスト部》

関連記事

特集

PageTop

アクセスランキング

  1. 「攻撃者の高い執念が感じられ」る 日本語版 EmEditor Web サイトのリンク改変

    「攻撃者の高い執念が感じられ」る 日本語版 EmEditor Web サイトのリンク改変

  2. 埼玉大学で在学生 8,373 名の学籍番号及び GPA 等を含む個人情報が閲覧可能に

    埼玉大学で在学生 8,373 名の学籍番号及び GPA 等を含む個人情報が閲覧可能に

  3. 人気米Youtuberが約4億円で購入した「ポケモンカード」、包装に改ざん跡

    人気米Youtuberが約4億円で購入した「ポケモンカード」、包装に改ざん跡

  4. HENNGE One、iPad 受付システム「Smart at reception」へ SSO 連携

    HENNGE One、iPad 受付システム「Smart at reception」へ SSO 連携

  5. 部分公開の公文書でマスキング漏れ、変換漏れとチェック漏れが原因

    部分公開の公文書でマスキング漏れ、変換漏れとチェック漏れが原因

ランキングをもっと見る
PageTop