Apache Struts 2に存在するRCE脆弱性(CVE-2024-53677,S2-067)に関する検証レポート

脆弱性検証レポート

2025.01.21

     

2024年12月11日にShinsaku Nomura氏によって報告された、Apache Struts 2に存在する任意のディレクトリへ任意のファイルアップロードが行われリモートコード実行が行われる可能性がある脆弱性(CVE-2024-53677, S2-067)[1] [2] についての検証を実施し、脆弱性の悪用が可能であることを確認しました。

1. 本脆弱性の概要

Apache Struts 2は、Apache Software Foundationによりオープンソース・ソフトウェアとして提供されている、Webアプリケーションを開発するためのフレームワークです。

本脆弱性の悪用に成功した場合は攻撃者がリモートから任意のコードを実行できる可能性があり、Apache Software FoundationによるとCVSSv4スコアは9.5、SeverityはCriticalと評価されています。[1][2]
また、概念実証(PoC)コードも公開されており、攻撃の観測も報告されていることから、今後の被害の拡大が懸念されます。[3]

本脆弱性は、Apache Struts 2でファイルアップロードの処理を行うためのコンポーネントとしてデフォルトで存在するFile Upload Interceptor(使用する際はstruts.xmlファイル内で明示的に設定を記述する必要があります)を使用している場合に、パストラバーサルが可能となる脆弱性であり、任意のディレクトリへ任意のファイルのアップロードを可能とします。悪意のあるファイルがアップロードされた場合は、リモートから任意のコードを実行できる可能性があります。
なお、File Upload Interceptorを利用していないWebアプリケーションにおいては、本脆弱性の影響を受けません。

図1:本脆弱性を悪用した攻撃の例

図1:本脆弱性を悪用した攻撃の例

第1段階(脆弱性の悪用によるファイルの配置)

攻撃者はリモートから攻撃用のHTTPリクエストを送信することでこの脆弱性を悪用します。このHTTPリクエストでは、脆弱なWebアプリケーションに対して任意のコードを含んだJSPファイルやWebシェル等のアップロードを指示します。この際、ファイルアップロードに関するパラメータを操作することで、JSPファイルなどの実行可能な形式のファイルを、通常ではアップロードが制限されているディレクトリ外(JSPファイル等の実行が可能な場所)に配置可能となります。

第2段階(配置したファイルによるコード実行)

第1段階で配置したファイルに対してアクセスすることで、JSPファイルやWebシェル等が実行されます。攻撃者がWebアプリケーションを実行するサーバの実行権限により任意のコードを実行することができます。

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

本脆弱性の影響を受ける可能性があるバージョンは以下の通りです。[1]

  • Apache Struts 2.0.0以上2.3.37以下(EOLバージョン)
  • Apache Struts 2.5.0以上2.5.33以下(EOLバージョン)
  • Apache Struts 6.0.0以上6.3.0.2以下

また、以下の条件を満たすことが攻撃成立に必要です。

  • File Upload Inceptorを利用したWebアプリケーションの実装であること

攻撃を行う上で標的のWebサーバ内のファイル構成について攻撃者が事前に把握していない場合も、dirsearchを用いることで探索することができる可能性があります。デフォルトのファイル構成でWebアプリケーションを実装している場合は、ファイル構成の推測が更に容易となる可能性があるため、警戒する必要があります。

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

脆弱性を含むWebアプリケーションが動作するサーバを構築し、擬似攻撃を行うことにより、本脆弱性の悪用が可能であることを確認しました。

3.1. 検証環境

表1:検証に使用した環境
疑似攻撃者 疑似被害者
ホストOS Kali Linux 2024.2 Ubuntu 24.04
アプリケーション/ツール Python 3.11.9 Apache Struts 6.3.0.2
OpenJDK 21.0.5
Apache Maven 3.8.7
Apache Tomcat 9.0.98

3.2. 検証手法

擬似被害者の環境として、脆弱性が存在するApache Strutsによって実装したFile Upload Interceptorを含むWebアプリケーションを、Apache Tomcatサーバ上で起動します。擬似攻撃者からは不正なHTTPリクエストを送信し、Webシェルを配置することで任意のコード実行を試みました。

3.3. 検証結果

第1段階(脆弱性の悪用によるファイルの配置)

File Upload Interceptorを利用したファイルアップロード機能が実装されているApache StrutsのWebアプリケーションに対して、Pythonで作成した不正なHTTPリクエストを送信します。リクエストには、ファイルを任意のパスへアップロードするコード(パストラバーサル)を挿入し、擬似被害者環境上での不正なファイルの配置を試みます。本検証では、不正なファイルとしてWebシェルの実行が可能なJSPファイルを配置します。

図2:不正なHTTPリクエスト

図2:不正なHTTPリクエスト

図3:設置されたJSPファイル

図3:設置されたJSPファイル

図2に示す擬似被害者サーバ上のシェルから正常にファイルの配置ができたことが確認できます。

第2段階(配置したファイルによるコード実行)

図4:Webシェルを用いた任意コードの実行

図4:Webシェルを用いた任意コードの実行

第1段階にて特定のパスに設置したJSPファイルでWebシェルの実行を指示させることで、攻撃者はWebシェルを介して擬似被害者サーバに任意のシェルコマンドを実行させることができます。

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

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

Apache Struts 2本体をApache Struts 6.4.0以降のバージョンへアップデートすることにより、本脆弱性を解消できます。 [1] また、File Upload Interceptorの使用を止めてAction File Upload Interceptorへ切り替えることにより、本脆弱性を回避できます。[1]

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

対象のWebアプリケーションの即時のアップデートが困難な場合は、IPSやWAFなどの装置により攻撃通信を遮断する緩和策を取ることが可能です。但し、これらは緩和策であるため、根本的な対処には4.1の対策の実施が必要です。シグネチャの検知条件に合致しない攻撃が発生した場合は適切に攻撃を検知・遮断出来ない可能性があります(シグネチャが特定の概念実証コードを基に作られている場合や、検知回避が試みられている場合など)。

当社が確認している機器の対応状況

各製品ベンダの本脆弱性への対応状況に関する情報、及び本検証による各製品での検知結果は以下の通りです。表2に公式シグネチャの提供状況を記載します。
既存のシグネチャ(パストラバーサルを検知するシグネチャ)を利用して検知できる場合がありますが、本脆弱性を悪用した攻撃であるかはHTTPのヘッダ・ペイロードからファイルのアップロードを試みるものかなどを精査して判断する必要があります。

表2:製品ベンダによるシグネチャ提供状況(2025年1月21日時点)
種別 製品ベンダ/製品 製品ベンダ提供のシグネチャ 検知結果
IDS/IPS Trellix
Intrusion Prevention System NS-Series Sensor
UDS-HTTP: Apache Struts file upload Vulnerability(CVE-2024-53677) -
WAF Imperva
SecureSphere
- -
F5 Networks
BIG-IP
- -
UTM Palo Alto
PA Series
Apache Struts2 File Upload Bypass Vulnerability(Unique Threat ID: 95861, 95862) -
Check Point
NGFW Series
Java Server Pages Backdoor(Check Point Reference: CPAI-2020-1396) -
総合サーバセキュリティ対策 Trend Micro
Deep Security
- -

参考文献

機器別当社対応サービス

更新履歴

  • 2025/1/21 初版作成
  • 2025/1/23 脆弱性に関する説明の軽微な追記
  • 文中の商品名、会社名、団体名は、一般に各社の商標または登録商標です。

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

株式会社NTTデータ先端技術

お問い合わせフォーム

Apache Struts 2に存在するRCE脆弱性(CVE-2024-53677,S2-067)に関する検証レポート