- ひとことでApache Struts 2 で、細工した値を送られると Java のプログラムを動かされる弱点
- 深刻度9.8 緊急CVSS v3.1
- まずやることStruts 2 を 2.3.18 以降に更新する
基本情報(データから表示)
| CVE番号 | CVE-2012-0391 |
|---|---|
| 製品 | Apache Struts 2 |
| 深刻度(CVSS) | 9.8 緊急CVSS v3.1 NVD による評価 詳細(ベクター)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| KEVへの追加日 | 2022-01-21 |
| 米国政府機関の対応期限 | 2022-07-21 |
| ランサムウェアでの悪用 | 不明(確認されていない) |
| 弱点の種類(CWE) | CWE-20(入力の確認の不備) |
何が起きた
Web アプリを作るための部品 Apache Struts 2 の ExceptionDelegator という部分に、入力の扱いの弱点が見つかりました。値の型が合わないときのエラー処理で、送られた値を OGNL という式として実行してしまうため、攻撃者が細工した値を送ると任意の(攻撃者が好きに選べる)Java のプログラムを動かせるおそれがあります。NVD の評価では、離れた場所からログインなしで悪用でき、CISA によると実際の悪用が確認されています。
攻撃の流れ
データをもとに、AIを使用して作成した図です。実際の攻撃は、これと異なる場合があります。
誰が影響を受ける
Apache Struts 2 で作られた Web アプリを運用している組織が対象です。NVD の説明では 2.2.3.1 より前が影響を受けます。Apache の S2-008 は、この CVE をほかの弱点とまとめて扱い、Struts 2.0.0 から Struts 2.3.17 を影響のある版としています。
何をすればいい
NVD の説明では 2.2.3.1 で直っていますが、Apache の S2-008 は Struts 2.3.18 以降に更新するよう強くすすめています。アプリが使っている Struts 2 が 2.3.18 以降になっているか確認してください。S2-008 は、更新に加えて ParameterInterceptor と CookieInterceptor の acceptedParamNames の設定を強めることも案内しています。公式の案内を確認してください。
やることチェックリスト
- Struts 2 を 2.3.18 以降に更新する
- acceptedParamNames の設定を強める
- アプリが使う Struts 2 の版を調べる
用語メモ
- OGNL
- Java のプログラムの中で、データを読み書きするための式の言語です。外から送られた値が式として実行されると危険です。
- Apache Struts 2
- Java で Web アプリを作るときに使われる、オープンソースの枠組み(フレームワーク)です。
次に読む
公式情報と元データ
公式情報
元データ(英語・CISA KEV より)を開く
Apache Struts 2 Improper Input Validation Vulnerability
概要
The ExceptionDelegator component in Apache Struts 2 before 2.2.3.1 contains an improper input validation vulnerability that allows for remote code execution.
推奨対応
Apply updates per vendor instructions.
この元データの出どころ: CISA KEV カタログで見る