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

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. 東芝テックが利用するクラウドサービスに不正アクセス、取引先や従業員の個人情報が閲覧された可能性

    東芝テックが利用するクラウドサービスに不正アクセス、取引先や従業員の個人情報が閲覧された可能性

  2. 東京高速道路のメールアカウントを不正利用、大量のメールを送信

    東京高速道路のメールアカウントを不正利用、大量のメールを送信

  3. バッファロー製無線 LAN ルータに複数の脆弱性

    バッファロー製無線 LAN ルータに複数の脆弱性

  4. セキュリティ対策は株価を上げるのか ~ 株主総利回り(TSR)の平均値は高い傾向

    セキュリティ対策は株価を上げるのか ~ 株主総利回り(TSR)の平均値は高い傾向

  5. 「引っかかるのは当たり前」が前提、フィッシングハンターが提案する対策のポイント ~ JPAAWG 6th General Meeting レポート

    「引っかかるのは当たり前」が前提、フィッシングハンターが提案する対策のポイント ~ JPAAWG 6th General Meeting レポート

  6. Windows DNS の脆弱性情報が公開

    Windows DNS の脆弱性情報が公開

  7. 転職先で営業活動に活用、プルデンシャル生命保険 元社員 顧客情報持ち出し

    転職先で営業活動に活用、プルデンシャル生命保険 元社員 顧客情報持ち出し

  8. フュートレックにランサムウェア攻撃、本番環境への侵入形跡は存在せず

    フュートレックにランサムウェア攻撃、本番環境への侵入形跡は存在せず

  9. インフォマート 公式 Facebook ページに不正ログイン

    インフォマート 公式 Facebook ページに不正ログイン

  10. 山田製作所にランサムウェア攻撃、「LockBit」が展開され複数のサーバのデータが暗号化

    山田製作所にランサムウェア攻撃、「LockBit」が展開され複数のサーバのデータが暗号化

ランキングをもっと見る