最近の脆弱性 › CVE-2017-9805

Apache Struts の安全でないデシリアライズの脆弱性(CVE-2017-9805)

この解説はAIを使用して作成しています。誤りを含む可能性があり、内容は保証できません。必ず公式情報をご確認ください。

基本情報(データから表示)

CVE番号CVE-2017-9805
製品Apache Struts
深刻度(CVSS)8.1 重要CVSS v3.1
NVD による評価
詳細(ベクター)CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
KEVへの追加日2021-11-03
米国政府機関の対応期限2022-05-03
ランサムウェアでの悪用不明(確認されていない)
弱点の種類(CWE)CWE-502

何が起きた

Java で Webアプリを作るための部品群 Apache Struts の REST Plugin に、送られてきた XML のデータを元に戻す(逆シリアル化する)際に、受け入れるデータの型を制限していない弱点が見つかりました。これにより、離れた場所から任意のコードを実行されるおそれがあり、実際の悪用が確認されています。NVD の評価では、攻撃はネットワーク経由で行われ、攻撃者に権限は不要で、被害者の操作も不要です。

攻撃の流れ

データをもとに、AIを使用して作成した図です。実際の攻撃は、これと異なる場合があります。

攻撃の流れ: 1. 攻撃者が細工した XML データを作る → 2. REST Plugin を使うページへ送る → 3. 型の制限なしに XML が元に戻される → 4. 攻撃者のコードが実行される1攻撃者が細工した XML データを作る2REST Plugin を使うページへ送る3型の制限なしに XML が元に戻される4攻撃者のコードが実行される攻撃の流れ: 1. 攻撃者が細工した XML データを作る → 2. REST Plugin を使うページへ送る → 3. 型の制限なしに XML が元に戻される → 4. 攻撃者のコードが実行される1攻撃者が細工した XML データを作る2REST Plugin を使うページへ送る3型の制限なしに XML が元に戻される4攻撃者のコードが実行される

誰が影響を受ける

Apache Struts の REST Plugin を使っている Webアプリの運営者が対象です。NVD の説明では、2.1.1 から 2.3.x の 2.3.34 より前までと、2.5.x の 2.5.13 より前が影響を受けるとされています。Apache の勧告(S2-052)では、影響を受けるのは Struts 2.1.6 から 2.3.33 までと、2.5 から 2.5.12 までと書かれています。

何をすればいい

Apache の公式の案内を確認し、Struts 2.5.13 または 2.3.34 以降に更新してください。更新すると型の制限が初期設定で入るため、一部の REST の処理が動かなくなる可能性があると Apache は説明しています。すぐに更新できない場合、REST Plugin を使っていなければ取り除くのが最善とされ、ほかに XML の処理を止めて通常のページと JSON だけを扱うよう制限する方法も示されています。

やることチェックリスト

用語メモ

XML
データを、タグで区切った決まった形で表すための書き方です。
逆シリアル化
保存や送信のために変換したデータを、プログラムで使える形に戻す処理です。中身を確かめずに戻すと、攻撃に使われることがあります。
JSON
データをやり取りするための、軽くて読みやすい書き方の一つです。

元データ(英語・CISA KEV より)

Apache Struts Deserialization of Untrusted Data Vulnerability

概要

Apache Struts REST Plugin uses an XStreamHandler with an instance of XStream for deserialization without any type filtering, which can lead to remote code execution when deserializing XML payloads.

推奨対応

Apply updates per vendor instructions.

公式情報