Trusted Design

CVE-2017-5638 の詳細

CVEの情報

説明:
The Jakarta Multipart parser in Apache Struts 2 2.3.x before 2.3.32 and 2.5.x before 2.5.10.1 has incorrect exception handling and error-message generation during file-upload attempts, which allows remote attackers to execute arbitrary commands via a crafted Content-Type, Content-Disposition, or Content-Length HTTP header, as exploited in the wild in March 2017 with a Content-Type header containing a #cmd= string.

CVE更新日: 2017-03-11 02:59:00.150000

CVSSバージョン: 3.1

CVSSスコア: 9.8

KEVの情報

KEV更新日: 2021-11-03

EPSSの情報

EPSSは脆弱性が今後30日以内に悪用される確率を予測するスコアリングシステムで、FIRST(Forum of Incident Response and Security Teams)が提供しています。
EPSSのスコアが高いということは、攻撃されるリスクが高いことを意味するので、早めの対策が必要です。

EPSSスコア: 0.999990000

EPSS更新日: 2026-10-19 00:00:00

SSVCの情報

SSVCはカーネギーメロン大学ソフトウェア工学研究所が提案する脆弱性の評価手法です。ステークホルダーごとに脆弱性対応の優先度を決定することを支援します。
本サイトでは、CVE、KEV、EPSSの内容からExploitation(悪用状況)、Technical Impact(技術的影響)、Automatable(自動攻撃の可否)を判定します。

Exploitation: active

Technical Impact: high

Automatable: True

AIを使った解説

解説:

CVE-2017-5638について、以下の観点で解説します。

1. 脆弱性の概要

CVE-2017-5638は、Apache Struts 2における深刻なリモートコード実行(RCE)の脆弱性です。この脆弱性は、Jakarta Multipartパーサーのファイルアップロード処理における不適切な例外処理とエラーメッセージ生成に起因します。攻撃者は、HTTPリクエストヘッダー(特にContent-Type、Content-Disposition、またはContent-Length)内の不正な値に悪意のあるObject Graph Navigation Library (OGNL) 式を細工して挿入することで、影響を受けるサーバー上で任意のコマンドを実行できます。

1.1 影響

この脆弱性が悪用された場合、遠隔の攻撃者によってウェブサーバー上で任意のコードが実行される可能性があります。 これにより、機密情報の窃取、システムの完全な侵害、データの改ざんや破壊、さらにはDDoSボットやサーバーランサムウェアなどのマルウェア感染につながる可能性があります。 認証は不要であり、攻撃はHTTP POSTリクエストを介して行われます。

1.2 深刻度

この脆弱性は、最高値であるCVSS v3.0 Base Score 10.0 (Critical) が付与されており、非常に深刻な脆弱性として位置づけられています。 これは、ネットワーク経由で最小限の複雑さで悪用可能であり、機密性、完全性、可用性に重大な影響を与える可能性があるためです。 公開直後から、実際に悪用された事例が多数報告されており、その危険性が浮き彫りになりました。

2. 対象となる環境

Apache Struts 2を使用している環境が対象となります。

2.1 影響を受けるOSバージョン

この脆弱性はApache Struts 2フレームワーク自体に存在するため、特定のOSバージョンに依存するものではありません。Apache Struts 2が稼働する様々なOS上で影響を受ける可能性があります。

2.2 影響を受ける設定

以下のApache Struts 2のバージョンが影響を受けます。 * Apache Struts 2.3.x (2.3.5から2.3.31まで) * Apache Struts 2.5.x (2.5から2.5.10まで)

Strutsの設定ファイル(struts.xmlなど)で特にパーサーを指定していない場合、デフォルトでこの脆弱性の影響を受けるJakarta Multipartパーサーが使用されます。

3. 影響を受けた時の兆候

システムがこの脆弱性の影響を受けた際の兆候としては、以下のようなものが挙げられます。

  • サーバーログに悪意のあるHTTP Content-Typeヘッダーの記録がある。
  • 不審な外部への接続や、身に覚えのないシェルコマンドの実行履歴(例: ls、whoami、wget、uname -aなど)。
  • 機密性の高いサーバーファイルや設定の不正な変更。
  • iptablesなどのファイアウォール関連プロセスの意図しない停止。
  • 不審なファイルのダウンロード。
  • ウェブサーバー上で、攻撃者が実行したコマンドの出力が応答として返される。

4. 推奨対策

4.1 本対策

  • Apache Struts 2のアップグレード: 脆弱性を修正したバージョンに速やかにアップグレードすることが最も推奨される対策です。
    • Apache Struts 2.3.32以降
    • Apache Struts 2.5.10.1以降

4.2 暫定回避策(緩和策)

  • Web Application Firewall (WAF) の導入・設定強化: ModSecurityなどのWAFを導入し、不正なContent-TypeヘッダーやOGNL式をブロックするルールを設定することで、攻撃を軽減できます。
  • Jakarta Multipartパーサーの代替: Jason Pells multipartパーサーを使用するように切り替えることで、脆弱なStrutsコンポーネントを置き換えることができます。このプラグインをアプリケーションの/WEB-INF/libディレクトリにコピーしてインストールします。
  • ネットワーク露出の最小化: 不要なネットワーク露出を排除し、Strutsアプリケーションへのアクセスを制限する。
  • HTTPリクエストの監視: SIEMツールなどを利用して、HTTP Content-Typeヘッダーの異常を監視する。
  • OGNL式のフィルタリング: ネットワーク防御デバイス上で、#nike='multipart/form-data'や#container=#context['com.opensymphony.xwork2.ActionContext.container'といったOGNL式を含むURLリクエストをフィルタリングする。

参照したサイト

1. 脆弱性の概要

CVE-2017-5638は、Apache Struts 2における深刻なリモートコード実行(RCE)の脆弱性です。この脆弱性は、Jakarta Multipartパーサーのファイルアップロード処理における不適切な例外処理とエラーメッセージ生成に起因します。攻撃者は、HTTPリクエストヘッダー(特にContent-Type、Content-Disposition、またはContent-Length)内の不正な値に悪意のあるObject Graph Navigation Library (OGNL) 式を細工して挿入することで、影響を受けるサーバー上で任意のコマンドを実行できます。 [cite: 1, 2, 4, 12, 16]

1.1 影響

この脆弱性が悪用された場合、遠隔の攻撃者によってウェブサーバー上で任意のコードが実行される可能性があります。 [cite: 1, 11] これにより、機密情報の窃取、システムの完全な侵害、データの改ざんや破壊、さらにはDDoSボットやサーバーランサムウェアなどのマルウェア感染につながる可能性があります。 [cite: 1, 3, 4, 12, 24, 25] 認証は不要であり、攻撃はHTTP POSTリクエストを介して行われます。 [cite: 5]

1.2 深刻度

この脆弱性は、最高値であるCVSS v3.0 Base Score 10.0 (Critical) が付与されており、非常に深刻な脆弱性として位置づけられています。 [cite: 12] これは、ネットワーク経由で最小限の複雑さで悪用可能であり、機密性、完全性、可用性に重大な影響を与える可能性があるためです。 [cite: 12, 25] 公開直後から、実際に悪用された事例が多数報告されており、その危険性が浮き彫りになりました。 [cite: 1, 3, 5, 7, 11, 24]

2. 対象となる環境

Apache Struts 2を使用している環境が対象となります。 [cite: 1, 11]

2.1 影響を受けるOSバージョン

この脆弱性はApache Struts 2フレームワーク自体に存在するため、特定のOSバージョンに依存するものではありません。Apache Struts 2が稼働する様々なOS上で影響を受ける可能性があります。

2.2 影響を受ける設定

以下のApache Struts 2のバージョンが影響を受けます。 [cite: 1, 2, 3, 7, 9, 11, 12, 15, 18] * Apache Struts 2.3.x (2.3.5から2.3.31まで) [cite: 1, 2, 3, 7, 9, 11, 15, 18] * Apache Struts 2.5.x (2.5から2.5.10まで) [cite: 1, 2, 3, 7, 9, 11, 15, 18]

Strutsの設定ファイル(struts.xmlなど)で特にパーサーを指定していない場合、デフォルトでこの脆弱性の影響を受けるJakarta Multipartパーサーが使用されます。 [cite: 11]

3. 影響を受けた時の兆候

システムがこの脆弱性の影響を受けた際の兆候としては、以下のようなものが挙げられます。 [cite: 1, 7, 18]

  • サーバーログに悪意のあるHTTP Content-Typeヘッダーの記録がある。 [cite: 1]
  • 不審な外部への接続や、身に覚えのないシェルコマンドの実行履歴(例: ls、whoami、wget、uname -aなど)。 [cite: 1, 7, 18]
  • 機密性の高いサーバーファイルや設定の不正な変更。 [cite: 1]
  • iptablesなどのファイアウォール関連プロセスの意図しない停止。 [cite: 7]
  • 不審なファイルのダウンロード。 [cite: 7]
  • ウェブサーバー上で、攻撃者が実行したコマンドの出力が応答として返される。 [cite: 4, 12, 18]

4. 推奨対策

4.1 本対策

  • Apache Struts 2のアップグレード: 脆弱性を修正したバージョンに速やかにアップグレードすることが最も推奨される対策です。 [cite: 1, 5, 8, 15]
    • Apache Struts 2.3.32以降 [cite: 2, 7, 8, 15]
    • Apache Struts 2.5.10.1以降 [cite: 2, 7, 8, 15]

4.2 暫定回避策(緩和策)

  • Web Application Firewall (WAF) の導入・設定強化: ModSecurityなどのWAFを導入し、不正なContent-TypeヘッダーやOGNL式をブロックするルールを設定することで、攻撃を軽減できます。 [cite: 1, 4, 14, 15]
  • Jakarta Multipartパーサーの代替: Jason Pells multipartパーサーを使用するように切り替えることで、脆弱なStrutsコンポーネントを置き換えることができます。このプラグインをアプリケーションの/WEB-INF/libディレクトリにコピーしてインストールします。 [cite: 4]
  • ネットワーク露出の最小化: 不要なネットワーク露出を排除し、Strutsアプリケーションへのアクセスを制限する。 [cite: 1]
  • HTTPリクエストの監視: SIEMツールなどを利用して、HTTP Content-Typeヘッダーの異常を監視する。 [cite: 1]
  • OGNL式のフィルタリング: ネットワーク防御デバイス上で、#nike='multipart/form-data'や#container=#context['com.opensymphony.xwork2.ActionContext.container'といったOGNL式を含むURLリクエストをフィルタリングする。 [cite: 15]

参照したサイト

NVDサイト

NVDでCVEの詳細を見る

戻る