更新日: 2017年04月17日
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)が公開されました。
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:脆弱性情報の信頼性= 確認済
+ 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
Apache Struts 上で稼働するアプリケーションが不正な HTTP 要求を受信した場合、そのサーバ上で任意のコード実行、アプリケーション、データなどに対する不正な操作を許してしまう可能性があります。
Apache Struts を修正バージョンにアップデートしてください。
(対策) 修正バージョンへのアップデート
2017年03月08日、Apache Struts 2.5.10.1、Struts 2.3.32リリースがリリースされました。
(回避策) Content-Type / Content-Dispostion / Content-Length ヘッダに "multipart/form-data" を含む不正なリクエストの遮断
既に攻撃で使用されている Content-Type ヘッダには、OgnlContext のような文字列を含んでいることから、このような文字列を含んでいる場合には、不正なリクエストとして遮断します。
[注]
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と同じ問題であることを確認
日立製品ならびに、日立が提供する他社品(*印)の対応状況は、次の通りです。
セキュリティ情報 HIRT-PUB17006 を公開しました。
+ HiRDB Control Manager - Server
hitachi-sec-2017-110: HiRDB Control Manager - Serverにおける脆弱性
次の脆弱性識別番号が付与されています。
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 に変更した際の検証結果
担当:寺田、大西
グローバルサイン:
重要な電子文書にデジタル署名。広報にも役立っています