定番の脆弱性 › CVE-2017-5638

Apache Struts 2(Jakarta Multipart)(CVE-2017-5638)

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

公開日:

過去の事例 この記事は過去に話題になった脆弱性の解説です。現在の状況は公式情報でご確認ください。

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

通称Apache Struts 2(Jakarta Multipart)
CVE番号CVE-2017-5638
いつ起きたかNVD に登録された日: 2017-03-11
KEV に追加された日: 2021-11-03
製品Apache Struts
深刻度(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
ランサムウェアでの悪用悪用が確認されている
弱点の種類(CWE)CWE-20

何が起きた

Webアプリを作るための枠組み「Apache Struts 2」の、ファイルのアップロードを処理する部品(Jakarta Multipartパーサー)に弱点がありました。アップロードの処理中に起きたエラーを正しく扱えず、攻撃者が細工したHTTPヘッダー(Content-Type、Content-Disposition、Content-Length)を送ると、サーバー上で攻撃者が好きに選んだ命令を実行できてしまいます。データによると、2017年3月に、Content-Typeヘッダーを使った実際の攻撃で悪用されていました。KEVでは、ランサムウェアの攻撃に使われたことも確認されています。

攻撃の流れ

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

攻撃の流れ: 1. 攻撃者が、ファイルのアップロードを装ってWebサーバーと通信する → 2. Content-Typeなどのヘッダーに、命令を紛れ込ませる → 3. Strutsがエラーを正しく扱えず、その命令を処理してしまう → 4. サーバー上で、攻撃者の命令が実行される1攻撃者が、ファイルのアップロードを装ってWebサーバーと通信する2Content-Typeなどのヘッダーに、命令を紛れ込ませる3Strutsがエラーを正しく扱えず、その命令を処理してしまう4サーバー上で、攻撃者の命令が実行される攻撃の流れ: 1. 攻撃者が、ファイルのアップロードを装ってWebサーバーと通信する → 2. Content-Typeなどのヘッダーに、命令を紛れ込ませる → 3. Strutsがエラーを正しく扱えず、その命令を処理してしまう → 4. サーバー上で、攻撃者の命令が実行される1攻撃者が、ファイルのアップロードを装ってWebサーバーと通信する2Content-Typeなどのヘッダーに、命令を紛れ込ませる3Strutsがエラーを正しく扱えず、その命令を処理してしまう4サーバー上で、攻撃者の命令が実行される

誰が影響を受ける

Apache Struts 2 のうち、2.3.x で 2.3.32 より前、2.5.x で 2.5.10.1 より前のバージョンを使っているWebサービスが影響を受けます。

何をすればいい

古い事例ですが、今でも 2.3.32 より前(2.3.x)や 2.5.10.1 より前(2.5.x)のStrutsが使われていないか確認してください。見つかった場合は、メーカー(ベンダー)の案内に従って更新し、詳しくはApacheの公式情報を確認してください。

用語メモ

フレームワーク
Webアプリなどを作るときに使う、よく使う機能をまとめた土台となるソフトウェアです。
HTTPヘッダー
Webの通信で、本文とは別に送られる付加情報です。データの種類(Content-Type)などが書かれます。
パーサー
受け取ったデータを読み取って、プログラムが扱える形に分解する部品です。

元データ(英語)

Apache Struts Remote Code Execution Vulnerability

概要(CISA KEV)

Apache Struts Jakarta Multipart parser allows for malicious file upload using the Content-Type value, leading to remote code execution.

説明(NVD)

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.

公式情報