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

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. 今日もどこかで情報漏えい 第23回「2024年3月の情報漏えい」なめるなという決意 ここまでやるという矜恃

    今日もどこかで情報漏えい 第23回「2024年3月の情報漏えい」なめるなという決意 ここまでやるという矜恃

  2. 訃報:セキュリティの草分けロス・アンダーソン氏 死去 67 歳、何回分かの生涯に匹敵する業績

    訃報:セキュリティの草分けロス・アンダーソン氏 死去 67 歳、何回分かの生涯に匹敵する業績

  3. 社員のセキュリティ意欲高める施策とは? 罰則は逆効果 ~ プルーフポイント「2024 State of the Phish」日本語版公表

    社員のセキュリティ意欲高める施策とは? 罰則は逆効果 ~ プルーフポイント「2024 State of the Phish」日本語版公表

  4. LINEヤフー委託先への不正アクセス、報告書を受け 2 度目の行政指導

    LINEヤフー委託先への不正アクセス、報告書を受け 2 度目の行政指導

  5. スペシャリスト集結! マネーフォワード・ラック・富士ソフト・電通総研から学ぶ、脆弱性診断内製化の成功法則とは? AeyeScan 導入企業との公開対談

    スペシャリスト集結! マネーフォワード・ラック・富士ソフト・電通総研から学ぶ、脆弱性診断内製化の成功法則とは? AeyeScan 導入企業との公開対談PR

  6. タカラベルモントの海外向けウェブサイトのサーバがフィッシングメール送信の踏み台に

    タカラベルモントの海外向けウェブサイトのサーバがフィッシングメール送信の踏み台に

  7. 情報処理学会、高等学校情報科の全教科書の用語リスト公開

    情報処理学会、高等学校情報科の全教科書の用語リスト公開

  8. Acompany で 4 件の Google フォーム誤設定、最大 164 名の個人情報が閲覧可能に

    Acompany で 4 件の Google フォーム誤設定、最大 164 名の個人情報が閲覧可能に

  9. 国内カード発行会社のドメイン毎の DMARC 設定率 36.2%「キャッシュレスセキュリティレポート(2023年10-12月版)」公表

    国内カード発行会社のドメイン毎の DMARC 設定率 36.2%「キャッシュレスセキュリティレポート(2023年10-12月版)」公表

  10. LINE client for iOS にサーバ証明書の検証不備の脆弱性

    LINE client for iOS にサーバ証明書の検証不備の脆弱性

ランキングをもっと見る