ページの本文へ

Hitachi Global

HIRT-PUB17006:Apache Struts 2 の脆弱性 (CVE-2017-5638) 対策

更新日: 2017年04月17日

1. 概要


Apache Struts 2 の Jakarta Multipart parser には、Content-Type ヘッダに "multipart/form-data" を含む不正な HTTP 要求を受信した場合に、任意のコード実行を許してしまう脆弱性 (CVE-2017-5638) が存在し、結果として、脆弱性を悪用される可能性があります。

 

報告された脆弱性 (CVE-2017-5638) は既に侵害活動に利用されていますので、すみやかに対策版にアップデートしてください。

2017年03月06日
Jakarta Multipart parser の脆弱性に関するセキュリティ情報(S2-045)が公開されました。同日、簡易的な検証コード(1)がリリースされました。

 

2017年03月07日
攻撃コード作成につながる検証コード(2)がリリースされました。

 

2017年03月07日 10:12 CST
任意のコマンド実行が可能で、攻撃に利用できる検証コード(3)がリリースされました。

 

2017年03月07日 06:21 UTC
Metasploit-frameworkから検証コード(3)をベースとした検証コードがリリースされました。

 

2017年03月07日 15:36 UTC
検証コード(3)をベースとした検証コードがリリースされました。

 

2017年03月08日
Struts 2.5.10.1、Struts 2.3.32がリリースされました。

 

2017年03月21日
Jakarta Multipart parser の脆弱性に関するセキュリティ情報(S2-046)が公開されました。

 

CVSSによる深刻度

CVE-2017-5638: Jakarta Multipart parser の脆弱性により、任意のコードが実行される

 

CVSSv2 基本値

CVSS:2.0/AV:N/AC:L/Au:N/C:C/I:C/A:C
AV:攻撃元区分= ネットワーク
AC:攻撃条件の複雑さ= 低
Au:攻撃前の認証要否= 不要
C:機密性への影響 (情報漏洩の可能性)= 全面的
I:完全性への影響 (情報改ざんの可能性)= 全面的
A:可用性への影響 (業務停止の可能性)= 全面的

 

CVSSv3 基本値

CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H/E:H/RL:O/RC:C
AV:攻撃元区分= ネットワーク
AC:攻撃条件の複雑さ= 低
PR:必要な特権レベル= 不要
UI:ユーザ関与レベル= 不要
S:影響の想定範囲= 変更あり
C:機密性への影響 (情報漏洩の可能性)= 高
I:完全性への影響 (情報改ざんの可能性)= 高
A:可用性への影響 (業務停止の可能性)= 高

 

現状値 (2017年03月16日時点)

E:攻撃される可能性= 容易に攻撃可能
RL:利用可能な対策のレベル= 正式
RC:脆弱性情報の信頼性= 確認済

図1:S2-045 Struts RCE Content-Type: Malicious の概要 図1:S2-045 Struts RCE Content-Type: Malicious の概要

2. 影響を受けるシステム


+ cpe:/a:apache:struts:2.3.5 - cpe:/a:apache:struts:2.3.31
+ cpe:/a:apache:struts:2.5 - cpe:/a:apache:struts:2.5.10

3. 想定される影響


Apache Struts 上で稼働するアプリケーションが不正な HTTP 要求を受信した場合、そのサーバ上で任意のコード実行、アプリケーション、データなどに対する不正な操作を許してしまう可能性があります。

4. 対策


Apache Struts を修正バージョンにアップデートしてください。

4.1 Apache Foundation

(対策) 修正バージョンへのアップデート

 

2017年03月08日、Apache Struts 2.5.10.1、Struts 2.3.32リリースがリリースされました。

 

Struts 2.5.10.1
http://struts.apache.org/download.cgi#struts25101

Struts 2.3.32
http://struts.apache.org/download.cgi#struts-23x

 

(回避策) Content-Type / Content-Dispostion / Content-Length ヘッダに "multipart/form-data" を含む不正なリクエストの遮断

 

既に攻撃で使用されている Content-Type ヘッダには、OgnlContext のような文字列を含んでいることから、このような文字列を含んでいる場合には、不正なリクエストとして遮断します。

 

S2-045: Possible Remote Code Execution when performing file upload based on Jakarta Multipart parser. (2017年03月06日)
http://struts.apache.org/docs/s2-045.html

S2-046: Possible RCE when performing file upload based on Jakarta Multipart parser (similar to S2-045) (2017年03月21日)
http://struts.apache.org/docs/s2-046.html

 

[注]
S2-045では、パーサを JakartaMultipartRequest から他のパーサに変更する回避策を提示しています(You can also switch to a different implementation of the Multipart parser.)。このうち、Struts 2.3.18 からサポートされた JakartaStreamMultiPartRequest については、稼働条件によっては、迂回できる攻撃手法を確認しましたので、修正バージョンへのアップデートを推奨します。

 

2017年03月15日:JakartaStreamMultiPartRequest に変更しても攻撃可能なことを確認
2017年03月16日:JPCERT/CC、IPA に通知
2017年03月17日:JPCERT-AT-2017-0009 の更新を確認、HIRT-PUB17006 の公開
2017年03月21日:S2-046と同じ問題であることを確認

5. 製品対応状況


日立製品ならびに、日立が提供する他社品(*印)の対応状況は、次の通りです。

 

2017年03月17日

 

セキュリティ情報 HIRT-PUB17006 を公開しました。

 

2017年04月14日

 

+ HiRDB Control Manager - Server
hitachi-sec-2017-110: HiRDB Control Manager - Serverにおける脆弱性

6. 参考情報


6.1 脆弱性識別

次の脆弱性識別番号が付与されています。

 

CVE-2017-5638
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5638

JVNDB-2017-001621

http://jvndb.jvn.jp/ja/contents/2017/JVNDB-2017-001621.html

JVNVU#93610402

https://jvn.jp/vu/JVNVU93610402/

6.2 注意喚起

IPA
Apache Struts2 の脆弱性対策について (CVE-2017-5638)(S2-045) (2017年03月08日)
http://www.ipa.go.jp/security/ciadr/vul/20170308-struts.html

JPCERT/CC

JPCERT-AT-2017-0009: Apache Struts 2 の脆弱性 (S2-045) に関する注意喚起 (2017年03月09日)
http://www.jpcert.or.jp/at/2017/at170009.html

6.3 関連情報

ソフトバンク・テクノロジー
Apache Struts 2 のマルチパーサー「jakarta」の脆弱性により、リモートから任意のコードが実行可能な脆弱性(CVE-2017-5638)(S2-045)に関する調査レポート (2017年03月08日)
https://www.softbanktech.jp/information/2017/20170308-01/

NTTセキュリティ・ジャパン

特に「36.45.172 [dot] 93」のIPアドレスから多数の組織で攻撃を確認しています。 (2017年03月08日)
https://twitter.com/NTTSec_JP/status/839132398210031616

NTTセキュリティ・ジャパン

3月7日の17時には攻撃を検知、20時に1度目のピーク (2017年03月09日)
https://twitter.com/NTTSec_JP/status/839833649839128576

ラック

Apache Struts 2における脆弱性 (S2-045、CVE-2017-5638)の被害拡大について (2017年03月10日)
https://www.lac.co.jp/lacwatch/alert/20170310_001246.html

6.4 脆弱性検証

JakartaStreamMultiPartRequest パーサに変更しても攻撃可能なことを確認しました。

 

検証環境は、次の通りです。
+ Ubuntu 16.04.1 (Linux 4.4.0-66-generic)
+ Tomcat 8.0.32
+ Struts 2.3.30

 

HTTP 要求ヘッダに addHeader('X-Check-Struts', 'S2-045 VULNERABLE!!') を設定して送信した結果、指定した通りに HTTP 応答ヘッダに設定されました。

図2:JakartaStreamMultiPartRequest に変更した際の検証結果 図2:JakartaStreamMultiPartRequest に変更した際の検証結果

7. 更新履歴


2017年04月17日

  • CVSSスコア、5. 製品対応状況を更新しました。

2017年03月21日

  • 6.4 脆弱性検証、S2-046を追加しました。

2017年03月17日

  • このページを新規作成および公開しました。

担当:寺田、大西